Всего 123 791 комментарий

Иван Бондаренко
04 марта 2013, 22:22
0
Залез в базу
createdon — 2013
editedon — 2013
publishedon — 2013

Кстати, может поможет: провел эксперимент. Поставил Tickets на голый сайт. Создал пару тикетов, опубликовал. Сделал снапшот этого облака и встроил снапшот в другой клауд. Результат такой же. “Published On” снова изменилась.

И еще, я восстановил основной сайт из авто бекапа, который делает клауд — все с тикетами нормально. Писать в сапорт клауда в этом случае?
Александр Донский
04 марта 2013, 22:21
0
оказалось, неправильные права на /mymanager/assets, хотя вроде я не менял их
Василий Наумкин
04 марта 2013, 22:12
0
Если ты хочешь заменить дефолтный id, то нужно наследовать таблицу от xPDOObject.

Если ты хочешь именно копировать из id в reg_nomer, когда не прислано значение — через xml этого не сделать.
Нужно изменить в классе ATPItem метод save(), чтобы он проверял reg_nomer на пустоту и если что — копировал туда id перед сохранением.
Іван Клімчук
04 марта 2013, 21:58
0
Такое часто случается, если включено сжатие js и css в админке. Об этом говорит ошибка 400 в одном из запросов. Еще возможно что-то с конфигом сервера и запросы к файлам непонятно куда уходят.
Вячеслав Серков
04 марта 2013, 21:55
0
У меня аналогичное было с использование скрипта установки нескольких расширений. Там дата ставилась по умолчанию 0, то есть где-то 1969 г… Через некоторое время, после ручной очистки кеша все даты расставлялись правильно.

Попробуйте восстановить на своём тестовом сервере копию MODx

<?php
$output = '';
include './core/config/config.inc.php';
set_time_limit(0);

function backup_tables($host,$user,$pass,$name,$tables = '*')
{    
    $link = mysql_connect($host,$user,$pass);
    mysql_select_db($name,$link);
    
    //get all of the tables
    if($tables == '*') 
    {
        $tables = array();
        $result = mysql_query('SHOW TABLES');
        while($row = mysql_fetch_row($result))
        {
            $tables[] = $row[0];
        }
    }
    else
    {
        $tables = is_array($tables) ? $tables : explode(',',$tables);
    }
    
    //cycle through
    foreach($tables as $table)
    {
        $result = mysql_query('SELECT * FROM '.$table);
        $num_fields = mysql_num_fields($result);
    
        $return.= 'DROP TABLE '.$table.';';
        $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
        $return.= "\n\n".$row2[1].";\n\n";
    
        for ($i = 0; $i < $num_fields; $i++) 
        {
          while($row = mysql_fetch_row($result))
          {
            $return.= 'INSERT INTO '.$table.' VALUES(';
            for($j=0; $j<$num_fields; $j++) 
            {
              $row[$j] = addslashes($row[$j]);
              $row[$j] = ereg_replace("\n","\\n",$row[$j]);
              if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
              if ($j<($num_fields-1)) { $return.= ','; }
            }
            $return.= ");\n";
          }
        }
        $return.="\n\n\n";
    }
  
    //save file
    $str_name = $_SERVER[SERVER_NAME].'-'.date('j_m_Y_h_i_s').'.sql';
    $handle = fopen("./core/".$str_name,'w+');
      
    fwrite($handle,$return);
    fclose($handle);
    
    return "<p>Файл ".$str_name." успешно создан.</p>";
}

function addFolderToZip($dir, $zipArchive, $zipdir = ''){ 
    if (is_dir($dir)) { 
        if ($dh = opendir($dir)) {
        
            //Add the directory 
            if(!empty($zipdir)) $zipArchive->addEmptyDir($zipdir);
            
            // Loop through all the files 
            while (($file = readdir($dh)) !== false) { 
            
                //If it's a folder, run the function again! 
                if(!is_file($dir . $file)){ 
                
                    // Skip parent and root directories
                    if( ($file !== ".") && ($file !== "..")){ 
                        addFolderToZip($dir . $file . "/", $zipArchive, $zipdir . $file . "/"); 
                    }
                }else{
                
                    // Add the files 
                    $zipArchive->addFile($dir . $file, $zipdir . $file);
                }
            }
        }
    }
}

$output .= backup_tables($database_server,$database_user,$database_password,$dbase);

$archive_dir = "./";
$src_dir = "./";

$zip = new ZipArchive();

$fileName = $archive_dir.$_SERVER[SERVER_NAME]." backup_".date('j_m_Y_h_i_s')."_.zip";

if ($zip->open("./core/".$fileName, ZIPARCHIVE::CREATE) !== true) {
    fwrite(STDERR, "Error while creating archive file");
    $output = "<p>Ошибка создания архива</p>";
}

addFolderToZip($src_dir, $zip, $archive_dir);

$zip->close();
 
$output .= " <p>Архив <b>".$fileName."</b> успешно создан.</p>";

echo $output;

Или очистить кеш

<?php
	set_time_limit(0);
	
	function delTree($dir = './'){
		if(is_dir($dir))
		{
			if($dh = opendir($dir))
			{
				while(($file = readdir($dh)) !== false){
					if(!is_file($dir.$file)){
						if( ($file  !== '.') && ($file !== '..') ){
							delTree($dir.$file.'/');
							//chmod($dir.$file,0770);
							if(!rmdir($dir.$file))
								echo '<p style="color:red;">Директория не удалена: '.$dir.$file.'</p>';
						}
					} else {
						if((substr($file,-5,5) !== '_.zip') && ($file !== 'install.php') ){
							//chmod($dir.$file,0770);
							if(!unlink($dir.$file))
								echo '<p style="color:red;">Файл не удален: '.$dir.$file.'</p>';
						}
					}
				}
				closedir($dh);
			}
		}
	}
	delTree('./core/cache');
Василий Наумкин
04 марта 2013, 19:22
0
Просто увеличение. Со скоростями там и так всё окей, вроде.
Алексей
04 марта 2013, 19:19
0
При апгрейде линоды, статический контент быстрее отдается (без настройки nginx на кэширование статики), или просто увеличивается оперативка и доступное место?
Раз уж нужно перегружаться, нужно выжать из перезагрузки по максимуму.
Василий Наумкин
04 марта 2013, 19:19
0
Вот не знаю, как такое может быть, если Ticket — это расширенный modResource, который хранится в той же таблице modx_site_content и по тем же правилам.

Там конечно отличаются всякие процессоры и внутренние методы, но как это может влиять на бэкап\восстановление — я без понятия. Видишь, переопределения полей нет.

Так что, не знаю, чем тебе помочь. Как там насчет других дат, типа createdon, updatedon?
Василий Наумкин
04 марта 2013, 19:03
0
Если ubuntu просит перезагрузки, это значит, что иначе никак.

Обычно такое при обновлении ядра или особо важных либ. Просто выбери время и ребутни машину.
Василий Наумкин
04 марта 2013, 15:25
0
Пока только своим сниппетом, через xPDO.

В будущем запланирована такая возможность при работе через TicketLatest.
Богдан
04 марта 2013, 15:12
0
Уже сделал все через сессию. Думал, что GET запросы не будут передаваться при постраничной навигации, поэтому даже не попробовал этот вариант. Спасибо, за совет.
Василий Наумкин
04 марта 2013, 07:09
0
Если речь про miniShop, то там корзина хранится только в сессии, никаких кук.

И если сессия у вас не сохраняется, а пропадает только корзина — значит что-то ее чистит. Например плагин какой-то, или еще кто.

У меня на демо-сайте товары в корзине лежат очень долго.
Василий Наумкин
04 марта 2013, 07:06
0
Если параметры фильтра передавать через $_GET, то getPage их бережно сохранит.

Это со всех сторон правильнее, и для поисковых машин и для передачи ссылок на результаты поиска людям.
Богдан
03 марта 2013, 23:10
0
Видимо придется в сессию сохранять… Спасибо, Николай!
А Наталия
03 марта 2013, 22:43
0
Да в том то и дело, что cookies и сессии настроены на то, чтобы сохранилось все. Там проблем нет, а вот корзина все равно очищается…
Ян Такушевич
03 марта 2013, 21:22
0
Можно выборку сделать при помощи сниппета Peoples:

[[!Peoples? &where=`{"Profile.id:=":30}`]]
Вот только у меня никак не получается сделать выборку по extended field.

Не пойму, как выборку:

$query = '"showprofile":"on"';
$c->where(array('Profile.extended:LIKE' => '%'.$query.'%'));
правильно переписать под такой синтаксис. Может кто подскажет?
Мордынский Николай
03 марта 2013, 21:19
0
хотя 1 хрен для гет пейджа, надо сессию таскать.
Мордынский Николай
03 марта 2013, 21:15
0
а еще есть вот такая вот штука modx.com/extras/package/getproducts подозреваю что она какраз вам вместо гет ресурса подойдет
Мордынский Николай
03 марта 2013, 21:12
0
Результат поста запихивать в $_SESSION[«filter»] к примеру, и пользоватся им if (isset($_SESSION[«filter»])) в вызов getPage пихать ее. Не забуудьте в конце сессию подчистить, а то будит таскать все время 1 ую