<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/admin/import_xml/import.class.php");?>
<?
$speed = 0.4;
$step = !isset($_REQUEST['step']) ? $step = 'start' : $step = $_REQUEST['step'];
$page = !isset($_REQUEST['page']) ? $page = 0 : $page = $_REQUEST['page'];
switch($step)
{
case 'start':
$startTime = microtime(true);
$_SESSION['COUNTER'] = 0;
unset(
$_SESSION['CATS'],
$_SESSION['CATS_WITHOUT_IDS'],
$_SESSION['CATS_WITHOUT_IDS'],
$_SESSION['CATS_COUNT_DB'],
$_SESSION['CATS_COUNT'],
$_SESSION['CATS_UF_IDS'],
$_SESSION['CAT_IDS'],
$_SESSION['UPDATE'],
$_SESSION['OFFERS'],
$_SESSION['IDS'],
$_SESSION['J'],
$_SESSION['PAGE']
);
unlink($_SERVER["DOCUMENT_ROOT"].'/bitrix/admin/import_xml/CATS_COUNT_DB.html');
unlink($_SERVER["DOCUMENT_ROOT"].'/bitrix/admin/import_xml/COUNTER.html');
$residue = sizeof($_SESSION['CATS']) / $section->offset + 1;
$endTime = microtime(true);
$time = $endTime - $startTime;
$str = '============'.date("Y-m-d H:i:s").'==============<br>';
$str .= 'Шаг '.$step.'. Время выполнения: '.$time.' сек.<br>';
file_put_contents($_SERVER["DOCUMENT_ROOT"]."/bitrix/admin/import_xml/time_log.html", var_export($str, true), FILE_APPEND | LOCK_EX);
header('refresh: '.$speed.'; url=/bitrix/admin/import_xml/import.php?step=category_add_to_session');
break;
case 'category_add_to_session':
$startTime = microtime(true);
$section = new ClImportCategory();
$section->AddCatsFromXml('session');
$_SESSION['CATS_WITHOUT_IDS'] = $_SESSION['CATS'];
$_SESSION['CATS_COUNT_DB'] = $_SESSION['CATS_COUNT_UPD'] = $_SESSION['CATS_COUNT'];
$endTime = microtime(true);
$time = $endTime - $startTime;
$str = 'Шаг '.$step.'. Время выполнения: '.$time.' сек.<br>';
file_put_contents($_SERVER["DOCUMENT_ROOT"]."/bitrix/admin/import_xml/time_log.html", var_export($str, true), FILE_APPEND | LOCK_EX);
header('refresh: '.$speed.'; url=/bitrix/admin/import_xml/import.php?step=category_add_to_db');
break;
case 'category_add_to_db':
$startTime = microtime(true);
$section = new ClImportCategory();
foreach ($_SESSION['CATS_WITHOUT_IDS'] as $key => $arItem)
{
if (!in_array($arItem['ID'], $_SESSION['CAT_IDS']))
{
$_SESSION['CATS'][$key]['ID'] = $section->AddCats($arItem['NAME'], $arItem['UF_ID'], $arItem['UF_PARENT_ID']);
if ($_SESSION['CATS'][$key]['ID'] <> "")
{
$_SESSION['CAT_IDS'][] = $arItem['ID'];
}
if ($_SESSION['CATS_COUNT_DB'] < $residue)
{
unset ($_SESSION['CATS_IDS']);
unset ($_SESSION['CATS_COUNT_DB']);
$_SESSION['COUNTER'] = 0;
$step = 'update_relation_category';
break;
}
if ($_SESSION['COUNTER'] >= $section->offset)
{
$_SESSION['COUNTER'] = 0;
$page++;
$step = 'category_add_to_db&page='.$page;
break;
}
$str = $_SESSION['CATS_COUNT_DB'].'<br>';
file_put_contents($_SERVER["DOCUMENT_ROOT"]."/bitrix/admin/import_xml/CATS_COUNT_DB.html", var_export($str , true), FILE_APPEND | LOCK_EX);
$str = $_SESSION['COUNTER'].'<br>';
file_put_contents($_SERVER["DOCUMENT_ROOT"]."/bitrix/admin/import_xml/COUNTER.html", var_export($str, true), FILE_APPEND | LOCK_EX);
$str = '========================<br>';
file_put_contents($_SERVER["DOCUMENT_ROOT"]."/bitrix/admin/import_xml/COUNTER.html", var_export($str, true), FILE_APPEND | LOCK_EX);
$_SESSION['CATS_COUNT_DB']--;
$_SESSION['COUNTER']++;
}
}
$endTime = microtime(true);
$time = $endTime - $startTime;
$str = 'Шаг '.$step.'. Время выполнения: '.$time.' сек.<br>';
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/bitrix/admin/import_xml/time_log.html', var_export($str, true), FILE_APPEND | LOCK_EX);
if ($step == 'update_relation_category')
{
unset($_SESSION['CATS_WITHOUT_IDS']);
header('refresh: '.$speed.'; url=/bitrix/admin/import_xml/import.php?step=update_relation_category');
}
else
{
header('refresh: '.$speed.'; url=/bitrix/admin/import_xml/import.php?step='.$step);
}
break;
case 'update_relation_category':
$startTime = microtime(true);
$section = new ClImportCategory();
foreach ($_SESSION['CATS'] as $key => $arItem)
{
if (!in_array($arItem['ID'], $_SESSION['CAT_IDS']))
{
if ($section->UpdateRelation($arItem) !== false)
{
$_SESSION['CAT_IDS'][] = $arItem['ID'];
}
if ($_SESSION['CATS_COUNT_UPD'] < $residue)
{
unset ($_SESSION['CATS_IDS']);
unset ($_SESSION['CATS_COUNT_UPD']);
$_SESSION['COUNTER'] = 0;
$step = 'get_offers';
break;
}
if ($_SESSION['COUNTER'] > $section->offset)
{
$_SESSION['COUNTER'] = 0;
$page++;
$step = 'update_relation_category&page='.$page;
break;
}
$_SESSION['CATS_COUNT_UPD']--;
$_SESSION['COUNTER']++;
}
}
$endTime = microtime(true);
$time = $endTime - $startTime;
$str = 'Шаг '.$step.'. Время выполнения: '.$time.' сек.<br>';
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/bitrix/admin/import_xml/time_log.html', var_export($str, true), FILE_APPEND | LOCK_EX);
if ($step == 'get_offers')
{
header('refresh: '.$speed.'; url=/bitrix/admin/import_xml/import.php?step=get_offers');
}
else
{
header('refresh: '.$speed.'; url=/bitrix/admin/import_xml/import.php?step='.$step);
}
break;
case 'get_offers':
die('yes');
//$offers = new ClImportOffer();
//$offers->AddOffersFromXml('db');
header('refresh: '.$speed.'; url=/bitrix/admin/import_xml/import.php?step=final');
break;
case 'final':
echo 'Работа завершена.';
break;
}
/*if($step == 'start')
{
echo 'Старт<br>';
unset(
$_SESSION['cats'],
//$_SESSION['cats_uf_ids'],
$_SESSION['update'],
//$_SESSION['offers'],
//$_SESSION['IDS'],
//$_SESSION['j'],
$_SESSION['page'],
//$_SESSION['work']
);
header('refresh: '.$speed.'; url=/bitrix/admin/import_xml/import.php?step=category');
}*/
/*
if($step == 'category') {
$section = new ClImportCategory();
$section->GetArCatFromXml();
$section->GetArCatParentId();
echo "<pre>"; var_dump($section->arCategory); echo "</pre>";
die();
header('refresh: '.$speed.'; url=/podarki/import.php?step=get_offers');
}
if ($step == 'get_offers') {
$ofs = new Offer();
$ofs->GetAll();
header('refresh: '.$speed.'; url=/podarki/import.php?step=offer');
}
if($step == 'offer') {
$ofs = new Offer();
$i = 0;
$ofs->eco(count($_SESSION['work']).'<br>');
foreach($xml->shop->offers->offer as $key => $offer) {
$oif = (int)$offer->attributes()->id;
if(!in_array($oif, $_SESSION['IDS'])) {
$id = array_search($oif, $_SESSION['offers']);
if(empty($id)) {
$oid = $ofs->Add($offer);
$ofs->eco('Добавлен товар: '.(string)$offer->name.'<br>');
} else {
$oid = $ofs->Update($id, $offer);
$ofs->eco('Обновлен товар: '.(string)$offer->name.'<br>');
}
$_SESSION['IDS'][] = $oif;
$i++;
if(count($_SESSION['work']) < 1) {
$step = 'final';
break;
}
if($i > 35) {
$page++;
$step = 'offer&page='.$page;
break;
}
array_shift($_SESSION['work']);
}
}
if($step == 'final') {
header('refresh: '.$speed.'; url=/podarki/import.php?step=final');
} else {
header('refresh: '.$speed.'; url=/podarki/import.php?step='.$step);
}
}
*/