%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/wizards/bitrix/demo/modules/iblock/xml/ |
| Current File : //home/bitrix/www/bitrix/wizards/bitrix/demo/modules/iblock/xml/index.php |
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)
die();
CModule::IncludeModule('iblock');
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/iblock/classes/".$DBType."/cml2.php");
$arDeps = array();
$rsProps = CIBlockProperty::GetList(array(),array("PROPERTY_TYPE"=>"E"));
while($arProp = $rsProps->Fetch())
{
$arDeps[$arProp["IBLOCK_ID"]] = $arProp["LINK_IBLOCK_ID"];
}
$rsProps = CIBlockProperty::GetList(array(),array("PROPERTY_TYPE"=>"G"));
while($arProp = $rsProps->Fetch())
{
$arDeps[intval($arProp["IBLOCK_ID"])] = intval($arProp["LINK_IBLOCK_ID"]);
}
$arBlocks = array();
$rsBlocks = CIBlock::GetList(array("sort"=>"asc","id"=>"asc"));
while($arBlock = $rsBlocks->Fetch())
{
if(strlen($arBlock["XML_ID"]) > 0)
{
$arBlock["IBLOCK_TYPE_ID"] = str_replace("_", "", $arBlock["IBLOCK_TYPE_ID"]);
$arBlocks[intval($arBlock["ID"])] = array("TYPE"=>$arBlock["IBLOCK_TYPE_ID"], "CODE"=>$arBlock["CODE"], "XML_ID"=>$arBlock["XML_ID"]);
}
}
$arExport = array();
$i = 0;
for($j = 0; $j < 100; $j++)
{
foreach($arBlocks as $ID => $arBlock)
{
if(!array_key_exists($ID, $arDeps))
{
$i+=10;
$arExport[] = array(
"NUM" => $i,
"XML_ID" => $arBlock["XML_ID"],
"TYPE" => $arBlock["TYPE"],
"ID" => $ID,
"FILE" => "/exp/".sprintf("%03d", $i)."_".$arBlock["TYPE"]."_".$arBlock["XML_ID"]."_ru.xml",
);
unset($arBlocks[$ID]);
foreach($arDeps as $CHILD => $PARENT)
{
if(($PARENT == $ID) || ($CHILD == $ID))
{
unset($arDeps[$CHILD]);
}
}
}
}
if(count($arBlocks) <= 0)
break;
}
foreach($arExport as $arBlock)
{
$ABS_FILE_NAME = $_SERVER["DOCUMENT_ROOT"].$arBlock["FILE"];
$IBLOCK_ID = $arBlock["ID"];
if($fp = fopen($ABS_FILE_NAME, "wb"))
{
$WORK_DIR_NAME = substr($ABS_FILE_NAME, 0, strrpos($ABS_FILE_NAME, "/")+1);
$next_step = array();
$obExport = new CIBlockCMLExport;
$obExport->Init($fp, $IBLOCK_ID, $next_step, true, $WORK_DIR_NAME, substr(substr($ABS_FILE_NAME, 0, -4)."_files"."/", strlen($WORK_DIR_NAME)));
$bCatalog = $obExport->next_step["catalog"];
$obExport->next_step["catalog"] = false;
$obExport->StartExport();
$obExport->StartExportMetadata();
$PROPERTY_MAP = false;
$obExport->ExportProperties($PROPERTY_MAP);
$SECTION_MAP = false;
$obExport->ExportSections($SECTION_MAP, time(), 0);
$obExport->EndExportMetadata();
$obExport->StartExportCatalog();
if($arBlock["XML_ID"] === "FUTURE-1C-CATALOG")
{
//Goods
$saved_work_dir = $obExport->work_dir;
$saved_file_dir = $obExport->file_dir;
$i = 0;
do
{
$i++;
$ABS_FILE_NAME = $_SERVER["DOCUMENT_ROOT"]."/exp/".sprintf("%03d", $arBlock["NUM"] + $i)."_".$arBlock["TYPE"]."_".$arBlock["XML_ID"]."_ru.xml";
$fi = fopen($ABS_FILE_NAME, "wb");
$work_dir = substr($ABS_FILE_NAME, 0, strrpos($ABS_FILE_NAME, "/")+1);
$file_dir = substr(substr($ABS_FILE_NAME, 0, -4)."_files"."/", strlen($work_dir));
$obExport->fp = $fi;
$obExport->work_dir = $work_dir;
$obExport->file_dir = $file_dir;
$obExport->StartExport();
$obExport->StartExportCatalog(false);
$res = $obExport->ExportElements($PROPERTY_MAP, $SECTION_MAP, time(), 0, 30);
$obExport->EndExportCatalog();
$obExport->EndExport();
fclose($fi);
} while ($res > 0);
$obExport->work_dir = $saved_work_dir;
$obExport->file_dir = $saved_file_dir;
unlink($ABS_FILE_NAME);
$obExport->fp = $fp;
}
elseif($arBlock["XML_ID"] === "books-books")
{
//Goods
$saved_work_dir = $obExport->work_dir;
$saved_file_dir = $obExport->file_dir;
$i = 0;
do
{
$i++;
$ABS_FILE_NAME = $_SERVER["DOCUMENT_ROOT"]."/exp/".sprintf("%03d", $arBlock["NUM"] + $i)."_".$arBlock["TYPE"]."_".$arBlock["XML_ID"]."_ru.xml";
$fi = fopen($ABS_FILE_NAME, "wb");
$work_dir = substr($ABS_FILE_NAME, 0, strrpos($ABS_FILE_NAME, "/")+1);
$file_dir = substr(substr($ABS_FILE_NAME, 0, -4)."_files"."/", strlen($work_dir));
$obExport->fp = $fi;
$obExport->work_dir = $work_dir;
$obExport->file_dir = $file_dir;
$obExport->StartExport();
$obExport->StartExportCatalog(false);
$res = $obExport->ExportElements($PROPERTY_MAP, $SECTION_MAP, time(), 0, 15);
$obExport->EndExportCatalog();
$obExport->EndExport();
fclose($fi);
} while ($res > 0);
$obExport->work_dir = $saved_work_dir;
$obExport->file_dir = $saved_file_dir;
unlink($ABS_FILE_NAME);
$obExport->fp = $fp;
}
else
{
$obExport->ExportElements($PROPERTY_MAP, $SECTION_MAP, time(), 0);
}
$obExport->EndExportCatalog();
$obExport->EndExport();
//Prices
if($bCatalog)
{
$file = "/exp/".sprintf("%03d", $arBlock["NUM"])."_".$arBlock["TYPE"]."_".$arBlock["XML_ID"]."-offers_ru.xml";
$fo = fopen($_SERVER["DOCUMENT_ROOT"].$file, "wb");
$obExport = new CIBlockCMLExport;
$obExport->Init($fo, $IBLOCK_ID, $next_step, true, "", "");
$obExport->only_price = true;
$obExport->StartExport();
$obExport->StartExportCatalog(false);
$obExport->ExportElements($PROPERTY_MAP, $SECTION_MAP, time(), 0);
$obExport->EndExportCatalog();
$obExport->EndExport();
}
}
}
?>