UmiDump: Export — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
 
Строка 64: Строка 64:
 
?>
 
?>
 
</source>
 
</source>
[[Категория:Вопросы установки настройки и переноса]][[Категория:UmiDump]]
+
[[Категория:Вопросы установки настройки и переноса]][[Категория:API]]

Текущая версия на 21:47, 4 июня 2013

Экспорт данных из umi-cms. Для того чтобы импортировать данные читайте тут UmiDump: Import

Экспорт umiDump

Проблема экспорта больших каталогов решается благодаря использованию standalone скрипта

В этом примере показано, как

  • подключить ядро umi-cms
  • указать домен из которого необходимо осуществить экспорт
  • указать языковую версию сайта, из которой будут экспортироваться данные

Код

Подключение umi-cms

<?php
	//Переменная позволяет отключить переиндексацию свойств 
	//объекта происходящую после каждого $object->commit();
	define("CRON", "CLI");
	error_reporting(E_ALL ^ E_NOTICE);

	// UMI.CMS licensing
	
	$_SERVER['DOCUMENT_ROOT'] = dirname(dirname(__FILE__));
	chdir($_SERVER['DOCUMENT_ROOT'].'/');
	ini_set('include_path', $_SERVER['DOCUMENT_ROOT'].'/');

	//Домен в который необходимо осуществить импорт
	$_SERVER['HTTP_HOST'] = "blogs.umi-cms.ru";
	//Языковая версия сайта в которую будет осуществлен импорт
	$_REQUEST['path'] = "/en/admin/";
	//подключение ядра umi-cms
	include "./config.php";
	//Подключение классов используемых исключительно во время импорта данных
	include "./classes/umiImportRelations/iUmiImportRelations.php";
	include "./classes/umiImportRelations/umiImportRelations.php";

?>

Сначала требуется сформировать список элеменов, которые нужно экспортировать в файл. Например, следующий код выбирает из текущего домена и текущей языковой версии сайта все элементы с иерархическим типом "объект каталога".

<?php 
	$hierarchy_type_id = 
	umiHierarchyTypesCollection::getInstance()->getTypeByName("catalog", "object")->getId();
	$sel = new umiSelection();

	$sel->setHierarchyFilter();
	$sel->addHierarchyFilter($elements, $hierarchy_type_id);

	$result = umiSelectionsParser::runSelection($sel);
?>

Итак после подключения классов ядра umi-cms требуется выполнить код осуществляющий экспорт данных в файл. Экспортированы будут элементы полученные нами в переменную $result. Данные импортируются в файл umiDumpFile.xml

<?php 
	$exporter = new umiXmlExporter();
	$exporter->setElements($result);
	$exporter->run();
	file_put_contents("umiDumpFile.xml",$exporter->getResultFile());
?>