Tickets и Snapshotы MODX Cloud - Проблема
Василий, здравствуйте. Недавно обнаружил странное поведение Tickets при импорте снапшота основного облака в Developer cloud на MODX Cloud. После импорта на Dev Cloud “Published On” дата у всех тикетов меняется на 1969-12-31 Пробовал несколько раз вчера и сегодня на разных версиях снапшотов.
Писал в поддержку Клауда ибо подумал, что механизм снапшотов работает криво.
Мой вопрос:
Ответ:
Мой перевод (к сожалению не понимаю значение специальных терминов MODX):
Если нужно, могу предоставить логин/пасс для входа в мой Developer Cloud
Писал в поддержку Клауда ибо подумал, что механизм снапшотов работает криво.
Мой вопрос:
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
Комментарии: 7
Вот не знаю, как такое может быть, если Ticket — это расширенный modResource, который хранится в той же таблице modx_site_content и по тем же правилам.
Там конечно отличаются всякие процессоры и внутренние методы, но как это может влиять на бэкап\восстановление — я без понятия. Видишь, переопределения полей нет.
Так что, не знаю, чем тебе помочь. Как там насчет других дат, типа createdon, updatedon?
Там конечно отличаются всякие процессоры и внутренние методы, но как это может влиять на бэкап\восстановление — я без понятия. Видишь, переопределения полей нет.
Так что, не знаю, чем тебе помочь. Как там насчет других дат, типа createdon, updatedon?
Залез в базу
createdon — 2013
editedon — 2013
publishedon — 2013
Кстати, может поможет: провел эксперимент. Поставил Tickets на голый сайт. Создал пару тикетов, опубликовал. Сделал снапшот этого облака и встроил снапшот в другой клауд. Результат такой же. “Published On” снова изменилась.
И еще, я восстановил основной сайт из авто бекапа, который делает клауд — все с тикетами нормально. Писать в сапорт клауда в этом случае?
createdon — 2013
editedon — 2013
publishedon — 2013
Кстати, может поможет: провел эксперимент. Поставил Tickets на голый сайт. Создал пару тикетов, опубликовал. Сделал снапшот этого облака и встроил снапшот в другой клауд. Результат такой же. “Published On” снова изменилась.
И еще, я восстановил основной сайт из авто бекапа, который делает клауд — все с тикетами нормально. Писать в сапорт клауда в этом случае?
Василий, Я снова связался с Ковардом и передал ему Ваш комментарий. Он пишет:
«Вероятно, что возникает проблема с классом (классами) Tickets при загрузке. Пакет этого расширения не загружается через extension_packages?»
Последнюю фразу не могу перевести адекватно. Не пойму, что он хочет узнать ибо не знаю назначения extension_packages.
Что мне ответить, подскажите.
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.
Что мне ответить, подскажите.
У меня аналогичное было с использование скрипта установки нескольких расширений. Там дата ставилась по умолчанию 0, то есть где-то 1969 г… Через некоторое время, после ручной очистки кеша все даты расставлялись правильно.
Попробуйте восстановить на своём тестовом сервере копию MODx
Или очистить кеш
Попробуйте восстановить на своём тестовом сервере копию 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');
Это случилось на MODX Cloud?
Подтверждаю. Дата публикации в tickets на modxcloud не работает. На обычном хостинге до этого проблем не было.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.