Скрипт миграции с quip на tickets (проблемы после WP)

Василий написал скрипт миграции с quip на tickets. С тех пор скрипт был проверен уже сильно больше 3-х раз и доказал свою работоспособность. Но я сейчас пытаюсь перенести блог с Wordpress'а на MODX. Приходится извращаться: ставить articles, импортировать записи из WP в articles и quip, а затем этим скриптом переносить их в tickets (отдельная тема — переделать articles в collections).

В файле экспорта, который сгенерировал WP, комментарии к посту идут в каком-то рандомном порядке. В quip id этих комметариев импортируется в том же порядке. Соотвественно, и в Tickets, после импорта этим скриптом, id старого комментария может оказаться меньше, чем у нового. При вызове TicketComments получаю комментарии разных лет вперемешку.

Если в скрипте Василия заменить $q->sortby('id','ASC'); на $q->sortby('createdon','ASC');, то порядок комментариев получается правильный, но сбивается привязка дочерних/родительских комментариев.

Вопросы.
— Можно ли как-то сильно не напрягаясь починить привязку? Править ручками в базе не очень хочется. Там есть статья с 728 каментами.
— Есть ли ещё какие-то скрипты импорта статей с комментариями из WP в MODX? Или можеть быть это можно реализовать через какие-нибудь сервисы-посредники? Например, WP -> Blogger -> MODX?
— Быть может есть герои, которые прямо сейчас пишут навороченную систему импорта/экспорта для MODX и ждать осталось уже не долго?

Ну, и продублирую тут код скрипта Василия:
// Вывод ошибок
ini_set('display_errors', 1);
ini_set('memory_limit', '512M');
error_reporting(E_ERROR);

// Подключаем
define('MODX_API_MODE', true);
require 'index.php';

// Включаем обработку ошибок
$modx->getService('error','error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_FATAL);
$modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');

$modx->addPackage('tickets',$modx->getOption('tickets.core_path',null,$modx->getOption('core_path').'components/tickets/').'model/');
$modx->addPackage('quip', $modx->getOption('quip.core_path',null,$modx->getOption('core_path').'components/quip/').'model/');

$resources = array();
$q = $modx->newQuery('quipComment');
$q->select('parent,author as createdby,body as text,createdon,editedon,name,email,ip,deleted,deletedby,deletedon,resource');
$q->sortby('id','ASC');
if ($q->prepare() && $q->stmt->execute()) {
	$res = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
	foreach ($res as $v) {
	if (empty($resources[$v['resource']])) {
			if (!$resource = $modx->getObject('TicketThread', array('name' => 'resource-'.$v['resource']))) {
				$resource = $modx->newObject('TicketThread', array(
					'name' => 'resource-'.$v['resource']
					,'createdby' => $v['author']
					,'createdon' => date('Y-m-d H:i:s')
					,'resource' => $v['resource']
				));
				$resource->save();
			}
			$resources[$v['resource']] = $resource->get('id');
		}
		$comment = $modx->newObject('TicketComment');
		$v['thread'] = $resources[$v['resource']];
		$comment->fromArray($v, '', true);
		$comment->save();
	}
}
Денис Дыранов
19 марта 2015, 10:38
modx.pro
1 287
0

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

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0