Your IP : 3.129.243.102
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
require($_SERVER["DOCUMENT_ROOT"]."/local/php_interface/const.php"); // тут инфоблоки все
/*
$API_URL = 'http://api.rusklimat.ru/v0/ebap/get';
$API_ADDRESS = ['ebasc/get','ebap/get'];
$API_KEY='WWYzZEd3V29jMXFxMDJweTcvSjJOZz09';
function getRest($address, $data = [], $method = "GET", $direct = false) {
global $API_URL;
global $API_ADDRESS;
global $API_KEY;
if ($direct == false)
$service = $API_ADDRESS[$address];
else
$service = $address;
$url = $API_URL . $service;
$opts = array('http' =>
array(
'method' => $method,
'header' => "Authorization: " . $API_KEY,
)
);
if (!empty($data) && $method != "GET") {
$opts['http']['content'] = http_build_query($data);
} elseif (!empty($data) && $method == "GET") {
$toSend = http_build_query($data);
$url .= "?" . $toSend;
}
$context = stream_context_create($opts);
$result = file_get_contents($url, false, $context);
if ($result !== false)
$responce = json_decode($result, true);
else
$responce = "error";
return $responce;
}
$errors = [];
$arCountriesNotAct = $arEquipmentsNotAct = $arShopsNotAct = $arDilersNotAct = array();
$result = getRest('','','GET',false);
$countries = $result['data']['site']['countries']['country'];
$cities = $result['data']['site']['cities']['city'];
$equipments = $result['data']['site']['equipment']['type'];
$dillers = $result['data']['site']['clients']['client'];
if (CModule::IncludeModule("iblock"))
{
$el = new CIBlockElement;
// Сначала получаем все данные
// Страны
$res = CIBlockElement::GetList(array(), array('IBLOCK_ID'=>IBLOCK_ID_DILLER_COUNTRIES), false, false, array('PROPERTY_API_ID','ID'));
while ($ob = $res->Fetch()) {
if(!empty($ob['PROPERTY_API_ID_VALUE']))
$arCountries[$ob['PROPERTY_API_ID_VALUE']] = $ob['ID'];
}
$arCountriesNotAct = $arCountries; // для деактивации
// Города
$res = CIBlockElement::GetList(array(), array('IBLOCK_ID'=>IBLOCK_ID_CITIES), false, false, array('PROPERTY_API_ID','ID', 'NAME'));
while ($ob = $res->Fetch()) {
$arCities[$ob['PROPERTY_API_ID_VALUE']] = $ob['ID'];
}
//$arCitiesNotAct = $arCities; // для деактивации
$arCitiesNotAct = array(); // не деактивируем, т.к. есть города нужные для сервисов
// в идеале их разнести по разным инфоблокам
// По дилерам есть 2 варианта загрузки:
// - когда для дилеров и магазинов есть отдельные инфоблоки (проверям на указание данного инфоблока)
// - когда все магазины пишутся в один инфоблок
// магазины
$arShops = array();
$res = CIBlockElement::GetList(array(), array('IBLOCK_ID'=>IBLOCK_ID_SHOPS), false, false, array('PROPERTY_API_ID','ID'));
while ($ob = $res->Fetch()) {
if(!empty($ob['PROPERTY_API_ID_VALUE']))
$arShops[$ob['PROPERTY_API_ID_VALUE']] = $ob['ID'];
}
$arShopsNotAct = $arShops; // для деактивации
// дилеры
$arDilers = array();
$res = CIBlockElement::GetList(array(), array('IBLOCK_ID'=>IBLOCK_ID_DILLER), false, false, array('PROPERTY_API_ID','ID'));
while ($ob = $res->Fetch()) {
if(!empty($ob['PROPERTY_API_ID_VALUE']))
$arDilers[$ob['PROPERTY_API_ID_VALUE']] = $ob['ID'];
}
$arDilersNotAct = $arDilers; // для деактивации
// Страны
foreach ($countries as $country) {
$PROP = array();
$PROP["API_ID"] = $country['id'];
$arLoadProductArray = array(
"IBLOCK_ID" => IBLOCK_ID_DILLER_COUNTRIES,
"PROPERTY_VALUES" => $PROP,
"NAME" => $country['name'],
"ACTIVE" => "Y"
);
if (!$arCountries[$country['id']]) {
if (!$COUNTRY_ID = $el->Add($arLoadProductArray))
$errors[$country['name']] = $el->LAST_ERROR;
else
$arCountries[$country['id']] = $COUNTRY_ID;
} else {
if (!$COUNTRY_ID = $el->Update($arCountries[$country['id']], $arLoadProductArray)) {
$errors[$country['name']] = $el->LAST_ERROR;
}
}
unset($arCountriesNotAct[$country['id']]); // уберем из деактивации
}
// города
foreach ($cities as $city) {
if($city['status'] == 'active') {
$PROP = array();
$PROP["API_ID"] = $city['id'];
$PROP["COUNTRY"] = $arCountries[$city['country_id']];
$arLoadProductArray = array(
"IBLOCK_ID" => IBLOCK_ID_CITIES,
"PROPERTY_VALUES" => $PROP,
"NAME" => $city['name'],
"ACTIVE" => "Y"
);
if (!$arCities[$city['id']]) {
if (!$CITY_ID = $el->Add($arLoadProductArray))
$errors[$city['name']] = $el->LAST_ERROR;
else
$arCities[$city['id']] = $CITY_ID;
} else {
if (!$CITY_ID = $el->Update($arCities[$city['id']], $arLoadProductArray)) {
$errors[$city['name']] = $el->LAST_ERROR;
}
}
//unset($arCitiesNotAct[$city['id']]); // уберем из деактивации
}
else{
$errors[$city['name']] = 'not active';
}
}
// товарные категории
if(!empty($equipments))
{
$arEquipments = array();
$res = CIBlockElement::GetList(array(), array('IBLOCK_ID'=>IBLOCK_ID_EQUIPMENT), false, false, array('PROPERTY_API_ID','ID'));
while ($ob = $res->Fetch())
{
if(!empty($ob['PROPERTY_API_ID_VALUE']))
$arEquipments[$ob['PROPERTY_API_ID_VALUE']] = $ob['ID'];
}
$arEquipmentsNotAct = $arEquipments; // для деактивации
// еще нам нужна привязка к разделам каталога
$arCatalogSection = array();
$db_list = CIBlockSection::GetList(Array(), Array('IBLOCK_ID'=>IBLOCK_ID_CATALOG), true);
while($ar_result = $db_list->Fetch())
$arCatalogSectionName[$ar_result["NAME"]] = $ar_result["ID"];
foreach ($equipments as $equipment)
{
$PROP = array();
$PROP["API_ID"] = $equipment['id'];
if($arCatalogSectionName[$equipment['_']])
$PROP["CATALOGUE"] = $arCatalogSectionName[$equipment['_']];
$arLoadProductArray = array(
"IBLOCK_ID" => IBLOCK_ID_EQUIPMENT,
"PROPERTY_VALUES" => $PROP,
"NAME" => $equipment['_'],
"ACTIVE" => "Y"
);
if (!$arEquipments[$equipment['id']])
{
if (!$EQUIPMENT_ID = $el->Add($arLoadProductArray))
$errors[$equipment['name']] = $el->LAST_ERROR;
else
$arEquipments[$equipment['id']] = $EQUIPMENT_ID;
}
else
{
if (!$EQUIPMENT_ID = $el->Update($arEquipments[$equipment['id']], $arLoadProductArray))
$errors[$equipment['name']] = $el->LAST_ERROR;
}
unset($arEquipmentsNotAct[$equipment['id']]); // уберем из деактивации
}
}
// дилеры
foreach ($dillers as $diler){
$shop_list = array();
// если один магазин
if (isset($diler['shop']['id']))
{
$cur_shop = $diler['shop'];
$PROP = [];
if(!empty($cur_shop['phone1']))
$PROP["PHONE"] = array($cur_shop['phone1'], $cur_shop['phone2'], $cur_shop['phone3']);
else
$PROP["PHONE"] = "";
if(!empty($cur_shop['latitude']) && !empty($cur_shop['longitude']))
$PROP["COORDS"] = $cur_shop['latitude'] . ',' . $cur_shop['longitude'];
$PROP["ADDRESS"] = $cur_shop['address'];
$PROP["EMAIL"] = array($cur_shop['email1'], $cur_shop['email2'], $cur_shop['email3']);
$PROP["API_ID"] = $cur_shop['id'];
$PROP["CITY"] = $arCities[$diler['city_id']];
$PROP["SITE"] = array($diler['site1'], $diler['site2'], $diler['site3']);
if(is_array($diler["equipment"]))
{
foreach($diler["equipment"] as $equip)
$PROP["EQUIPMENT"][] = $arEquipments[$equip];
}
else
{
if(!empty($diler["equipment"]))
$PROP["EQUIPMENT"][] = $arEquipments[$diler["equipment"]];
//else
//continue;
}
$arLoadShopArray = array(
"IBLOCK_ID" => IBLOCK_ID_SHOPS,
"PROPERTY_VALUES" => $PROP,
"NAME" => $diler['name'],
"ACTIVE" => "Y"
);
// если в базе магазина нет
if(empty($arShops[$diler['shop']['id']]))
{
if (!$SHOP_ID = $el->Add($arLoadShopArray))
$errors[$shop['name']] = $el->LAST_ERROR;
else
$shop_list[] = $SHOP_ID;
}
else
{
$SHOP_ID_DB = $arShops[$cur_shop['id']];
if (!$el->Update($SHOP_ID_DB, $arLoadShopArray))
$errors[$shop['name']] = $el->LAST_ERROR;
else
$shop_list[] = $SHOP_ID_DB;
}
unset($arShopsNotAct[$cur_shop['id']]); // уберем из деактивации
}
elseif(!empty($diler['shop']))
{
foreach ($diler['shop'] as $shop) {
$PROP = array();
if(!empty($shop['phone1']))
$PROP["PHONE"] = array($shop['phone1'], $shop['phone2'], $shop['phone3']);
else
$PROP["PHONE"] = "";
if(!empty($shop['latitude']) && !empty($shop['longitude']))
$PROP["COORDS"] = $shop['latitude'] . ',' . $shop['longitude'];
$PROP["ADDRESS"] = $shop['address'];
$PROP["EMAIL"] = array($shop['email1'], $shop['email2'], $shop['email3']);
$PROP["API_ID"] = $shop['id'];
$PROP["CITY"] = $arCities[$diler['city_id']];
$PROP["SITE"] = array($diler['site1'], $diler['site2'], $diler['site3']);
if(is_array($diler["equipment"]))
{
foreach($diler["equipment"] as $equip)
$PROP["EQUIPMENT"][] = $arEquipments[$equip];
}
else
{
if(!empty($diler["equipment"]))
$PROP["EQUIPMENT"][] = $arEquipments[$diler["equipment"]];
//else
//continue;
}
$dilerName = $diler['name'];
if(!empty($shop['name']))
$dilerName .= '<br>'.$shop['name'];
$arLoadShopArray = array(
"IBLOCK_ID" => IBLOCK_ID_SHOPS,
"PROPERTY_VALUES" => $PROP,
"NAME" => $dilerName,
"ACTIVE" => "Y"
);
// если в базе магазина нет
if(empty($arShops[$shop['id']]))
{
if (!$SHOP_ID = $el->Add($arLoadShopArray))
$errors[$shop['name']] = $el->LAST_ERROR;
else
$shop_list[] = $SHOP_ID;
}
else
{
$SHOP_ID_DB = $arShops[$shop['id']];
if (!$el->Update($SHOP_ID_DB, $arLoadShopArray))
$errors[$shop['name']] = $el->LAST_ERROR;
else
$shop_list[] = $SHOP_ID_DB;
}
unset($arShopsNotAct[$shop['id']]); // уберем из деактивации
}
}
elseif (empty($diler['shop'])) // если не указан магазин
{
$PROP = [];
$PROP["PHONE"] = "";
$PROP["API_ID"] = $diler['id'];
$PROP["CITY"] = $arCities[$diler['city_id']];
$PROP["SITE"] = array($diler['site1'], $diler['site2'], $diler['site3']);
if(is_array($diler["equipment"]))
{
foreach($diler["equipment"] as $equip)
$PROP["EQUIPMENT"][] = $arEquipments[$equip];
}
else
{
if(!empty($diler["equipment"]))
$PROP["EQUIPMENT"][] = $arEquipments[$diler["equipment"]];
//else
//continue;
}
$arLoadShopArray = array(
"IBLOCK_ID" => IBLOCK_ID_SHOPS,
"PROPERTY_VALUES" => $PROP,
"NAME" => $diler['name'],
"ACTIVE" => "Y"
);
// если в базе магазина нет
if(empty($arShops[$diler['id']]))
{
if (!$SHOP_ID = $el->Add($arLoadShopArray))
$errors[$diler['name']] = $el->LAST_ERROR;
else
$shop_list[] = $SHOP_ID;
}
else
{
$SHOP_ID_DB = $arShops[$diler['id']];
if (!$el->Update($SHOP_ID_DB, $arLoadShopArray))
$errors[$diler['name']] = $el->LAST_ERROR;
else
$shop_list[] = $SHOP_ID_DB;
}
unset($arShopsNotAct[$diler['id']]); // уберем из деактивации
}
if(defined("IBLOCK_ID_DILLER"))
{
if(!empty($arCities[$diler['city_id']]))
{
$PROP = [];
$PROP["API_ID"] = $diler['id'];
$PROP["CITY"] = $arCities[$diler['city_id']];
$PROP["SITE"] = array($diler['site1'], $diler['site2'], $diler['site3']);
$PROP["LOGOTYPE"] = '';//logo
$PROP["PHONE"] = $diler['phone'];
$PROP["SHOP"] = $shop_list;
if(is_array($diler["equipment"]))
{
foreach($diler["equipment"] as $equip)
$PROP["EQUIPMENT"][] = $arEquipments[$equip];
}
else
{
if(!empty($diler["equipment"]))
$PROP["EQUIPMENT"][] = $arEquipments[$diler["equipment"]];
}
$arLoadDilerArray = array(
"IBLOCK_ID" => IBLOCK_ID_DILLER,
"PROPERTY_VALUES" => $PROP,
"NAME" => $diler['name'],
"ACTIVE" => "Y"
);
if(empty($arDilers[$diler['id']]))
{
if (!$DILER_ID = $el->Add($arLoadDilerArray)) {
$errors[$diler['name']] = $el->LAST_ERROR;
}
} else {
if (!$el->Update($arDilers[$diler['id']], $arLoadDilerArray)) {
$errors[$diler['name']] = $el->LAST_ERROR;
}
}
unset($arDilersNotAct[$diler['id']]); // уберем из деактивации
}
}
}
// пройдемся везде где надо убрать активность
$arDeactive = array_merge($arCountriesNotAct, $arEquipmentsNotAct, $arShopsNotAct, $arDilersNotAct);
foreach($arDeactive as $deactiveId)
{
$arLoadDeactive = array(
"ACTIVE" => "N"
);
$el->Update($deactiveId, $arLoadDeactive);
}
}
*/
echo "<pre>"; print_r($errors); echo "</pre>";