Tickets и Snapshotы MODX Cloud - Проблема

Василий, здравствуйте. Недавно обнаружил странное поведение Tickets при импорте снапшота основного облака в Developer cloud на MODX Cloud. После импорта на Dev Cloud “Published On” дата у всех тикетов меняется на 1969-12-31 Пробовал несколько раз вчера и сегодня на разных версиях снапшотов.

Писал в поддержку Клауда ибо подумал, что механизм снапшотов работает криво.

Мой вопрос:
I have troubles with snapshots. My main cloud uses extras for MODX. One of them is Tickets.
modx.com/extras/package/tickets
When I create a snapshot of my main cloud and inject it into Dev cloud all my Tickets change their “Published On” date to 1969-12-31


Ответ:
Jason Coward (MODX Cloud Support)
Ivan:
This sounds as if the Extra you are using has implemented a part of the model incorrectly, or stumbled upon some unknown bug in the xPDO Transport Packaging system. Have you made the Extra's author aware of this behavior for feedback? There are plenty of tables with dates being imported properly via our Snapshots that I feel confident this is something that will need to be addressed by the Tickets author.
Regards,
Jason Coward
Chief Architect, MODX CMS & MODX Cloud Coach

Мой перевод (к сожалению не понимаю значение специальных терминов MODX):
Похоже, что расширение, которое ты используешь, неверно выполнило (реализовало) часть модели или наткнулось на неизвестный баг в xPDO Transport Packaging system. Наши снапшоты правильно импортируют множество таблиц с данными и я думаю, что вам лучше саязаться с автором расширения для решения вопроса.

Если нужно, могу предоставить логин/пасс для входа в мой Developer Cloud
Иван Бондаренко
04 марта 2013, 15:13
modx.pro
1 379
0

Комментарии: 7

Василий Наумкин
04 марта 2013, 19:19
0
Вот не знаю, как такое может быть, если Ticket — это расширенный modResource, который хранится в той же таблице modx_site_content и по тем же правилам.

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

Так что, не знаю, чем тебе помочь. Как там насчет других дат, типа createdon, updatedon?
    Иван Бондаренко
    04 марта 2013, 22:22
    0
    Залез в базу
    createdon — 2013
    editedon — 2013
    publishedon — 2013

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

    И еще, я восстановил основной сайт из авто бекапа, который делает клауд — все с тикетами нормально. Писать в сапорт клауда в этом случае?
      Иван Бондаренко
      06 марта 2013, 15:16
      0
      Василий, Я снова связался с Ковардом и передал ему Ваш комментарий. Он пишет:

      This is likely a problem with the Tickets class(es) being loaded. Is this extra's package not loaded via extension_packages?
      Перевод:
      «Вероятно, что возникает проблема с классом (классами) Tickets при загрузке. Пакет этого расширения не загружается через extension_packages?»

      Последнюю фразу не могу перевести адекватно. Не пойму, что он хочет узнать ибо не знаю назначения extension_packages.
      Что мне ответить, подскажите.
    Вячеслав Серков
    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');
    Alexandr Lisovskiy
    28 апреля 2013, 00:11
    0
    Подтверждаю. Дата публикации в tickets на modxcloud не работает. На обычном хостинге до этого проблем не было.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      7