diff --git a/intaro.intarocrm/install/export/intarocrm_run.php b/intaro.intarocrm/install/export/intarocrm_run.php index e27a5c54..54e880af 100755 --- a/intaro.intarocrm/install/export/intarocrm_run.php +++ b/intaro.intarocrm/install/export/intarocrm_run.php @@ -3,6 +3,7 @@ __IncludeLang(GetLangFileName($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/intaro.intarocrm/lang/", "/export_crm.php")); set_time_limit(0); + CModule::IncludeModule("iblock"); $db_res = CIBlock::GetList(Array("IBLOCK_TYPE"=>"ASC", "NAME"=>"ASC"),array('CHECK_PERMISSIONS' => 'Y','MIN_PERMISSION' => 'W')); $IBLOCK_ID = Array(); @@ -244,30 +245,44 @@ if ($XML_DATA && CheckSerializedData($XML_DATA)) $XML_DATA = unserialize(stripslashes($XML_DATA)); if (!is_array($XML_DATA)) $XML_DATA = array(); } -$XML_DATA = Array(); -$XML_DATA["TYPE"] = null; -$XML_DATA["CURRENCY"] = Array ( - "RUB" => Array ( - "rate" => SITE, - "plus" => null - ) - ); -$XML_DATA["XML_DATA"] = Array(); -$XML_DATA["SKU_EXPORT"] = Array ( - "SKU_URL_TEMPLATE_TYPE" => 1, - "SKU_URL_TEMPLATE" => null, - "SKU_EXPORT_COND" => 1, - "SKU_PROP_COND" => Array ( - "PROP_ID" => 0, - "COND" => null, - "VALUES" => Array() - ) - ); +$XML_DATA = Array(); foreach ($arIBlockId as $id) { - $IBLOCK_ID = $id; - $IBLOCK_ID = intval($IBLOCK_ID); + $IBLOCK_ID = $id; + $IBLOCK_ID = intval($IBLOCK_ID); + + + $XML_DATA[$IBLOCK_ID]["TYPE"] = null; + $XML_DATA[$IBLOCK_ID]["CURRENCY"] = Array ( + "RUB" => Array ( + "rate" => SITE, + "plus" => null + ) + ); + $XML_DATA[$IBLOCK_ID]["XML_DATA"] = Array(); + $XML_DATA[$IBLOCK_ID]["SKU_EXPORT"] = Array ( + "SKU_URL_TEMPLATE_TYPE" => 1, + "SKU_URL_TEMPLATE" => null, + "SKU_EXPORT_COND" => 1, + "SKU_PROP_COND" => Array ( + "PROP_ID" => 0, + "COND" => null, + "VALUES" => Array() + ) + ); + + $properties = CIBlockProperty::GetList( + Array(), + Array( + "ACTIVE"=>"Y", + "IBLOCK_ID"=>$IBLOCK_ID, + "CODE" => "ARTICLE" + ) + )->Fetch(); + + $XML_DATA[$IBLOCK_ID]['XML_DATA']['PARAMS'][] = $properties['ID']; + $db_iblock = CIBlock::GetByID($IBLOCK_ID); $ar_iblock[$IBLOCK_ID] = $db_iblock->Fetch(); if (!($ar_iblock[$IBLOCK_ID])) @@ -378,13 +393,13 @@ foreach ($arIBlockId as $id) } if (true == $boolOffers) { - if (empty($XML_DATA['SKU_EXPORT'])) + if (empty($XML_DATA[$IBLOCK_ID]['SKU_EXPORT'])) { $arRunErrors[] = GetMessage('YANDEX_ERR_SKU_SETTINGS_ABSENT'); } else { - $arSKUExport = $XML_DATA['SKU_EXPORT'];; + $arSKUExport = $XML_DATA[$IBLOCK_ID]['SKU_EXPORT'];; if (empty($arSKUExport['SKU_EXPORT_COND']) || !in_array($arSKUExport['SKU_EXPORT_COND'],$arOffersSelectKeys)) { $arRunErrors[] = GetMessage('YANDEX_SKU_EXPORT_ERR_CONDITION_ABSENT'); @@ -450,11 +465,11 @@ if (empty($arRunErrors)) } } -if (!empty($XML_DATA['PRICE'])) +if (!empty($XML_DATA[$IBLOCK_ID]['PRICE'])) { - if (intval($XML_DATA['PRICE']) > 0) + if (intval($XML_DATA[$IBLOCK_ID]['PRICE']) > 0) { - $rsCatalogGroups = CCatalogGroup::GetGroupsList(array('CATALOG_GROUP_ID' => $XML_DATA['PRICE'],'GROUP_ID' => 2)); + $rsCatalogGroups = CCatalogGroup::GetGroupsList(array('CATALOG_GROUP_ID' => $XML_DATA[$IBLOCK_ID]['PRICE'],'GROUP_ID' => 2)); if (!($arCatalogGroup = $rsCatalogGroups->Fetch())) { $arRunErrors[] = GetMessage('YANDEX_ERR_BAD_PRICE_TYPE'); @@ -536,9 +551,9 @@ if (empty($arRunErrors)) $arCurrencyAllowed = array($RUR, 'USD', 'EUR', 'UAH', 'BYR', 'KZT'); $BASE_CURRENCY = CCurrency::GetBaseCurrency(); - if (is_array($XML_DATA['CURRENCY'])) + if (is_array($XML_DATA[$IBLOCK_ID]['CURRENCY'])) { - foreach ($XML_DATA['CURRENCY'] as $CURRENCY => $arCurData) + foreach ($XML_DATA[$IBLOCK_ID]['CURRENCY'] as $CURRENCY => $arCurData) { if (in_array($CURRENCY, $arCurrencyAllowed)) { @@ -663,7 +678,7 @@ if (empty($arRunErrors)) while ($obElement = $res->GetNextElement()) { $arAcc = $obElement->GetFields(); - if (is_array($XML_DATA['XML_DATA'])) + if (is_array($XML_DATA[$IBLOCK_ID]['XML_DATA'])) { $arAcc["PROPERTIES"] = $obElement->GetProperties(); } @@ -688,11 +703,11 @@ if (empty($arRunErrors)) $minPriceGroup = 0; $minPriceCurrency = ""; - if ($XML_DATA['PRICE'] > 0) + if ($XML_DATA[$IBLOCK_ID]['PRICE'] > 0) { $rsPrices = CPrice::GetListEx(array(),array( 'PRODUCT_ID' => $arAcc['ID'], - 'CATALOG_GROUP_ID' => $XML_DATA['PRICE'], + 'CATALOG_GROUP_ID' => $XML_DATA[$IBLOCK_ID]['PRICE'], 'CAN_BUY' => 'Y', 'GROUP_GROUP_ID' => array(2), '+<=QUANTITY_FROM' => 1, @@ -721,7 +736,7 @@ if (empty($arRunErrors)) $arDiscounts = CCatalogDiscount::GetDiscount( $arAcc['ID'], $IBLOCK_ID, - array($XML_DATA['PRICE']), + array($XML_DATA[$IBLOCK_ID]['PRICE']), array(2), 'N', $ar_iblock['LID'], @@ -798,8 +813,8 @@ if (empty($arRunErrors)) else $arAcc['DETAIL_PAGE_URL'] = str_replace(' ', '%20', $arAcc['DETAIL_PAGE_URL']); - if (is_array($XML_DATA) && $XML_DATA['TYPE'] && $XML_DATA['TYPE'] != 'none') - $str_TYPE = ' type="'.htmlspecialcharsbx($XML_DATA['TYPE']).'"'; + if (is_array($XML_DATA[$IBLOCK_ID]) && $XML_DATA[$IBLOCK_ID]['TYPE'] && $XML_DATA[$IBLOCK_ID]['TYPE'] != 'none') + $str_TYPE = ' type="'.htmlspecialcharsbx($XML_DATA[$IBLOCK_ID]['TYPE']).'"'; else $str_TYPE = ''; @@ -837,7 +852,7 @@ if (empty($arRunErrors)) switch ($key) { case 'name': - if (is_array($XML_DATA) && ($XML_DATA['TYPE'] == 'vendor.model' || $XML_DATA['TYPE'] == 'artist.title')) + if (is_array($XML_DATA[$IBLOCK_ID]) && ($XML_DATA[$IBLOCK_ID]['TYPE'] == 'vendor.model' || $XML_DATA[$IBLOCK_ID]['TYPE'] == 'artist.title')) continue; $strTmpOff .= "".yandex_text2xml($arAcc["NAME"], true)."\n"; @@ -852,10 +867,11 @@ if (empty($arRunErrors)) "\n"; break; case 'param': - if (is_array($XML_DATA) && is_array($XML_DATA['XML_DATA']) && is_array($XML_DATA['XML_DATA']['PARAMS'])) + if (is_array($XML_DATA[$IBLOCK_ID]) && is_array($XML_DATA[$IBLOCK_ID]['XML_DATA']) && is_array($XML_DATA[$IBLOCK_ID]['XML_DATA']['PARAMS'])) { - foreach ($XML_DATA['XML_DATA']['PARAMS'] as $key => $prop_id) + foreach ($XML_DATA[$IBLOCK_ID]['XML_DATA']['PARAMS'] as $key => $prop_id) { + $strParamValue = ''; if ($prop_id) { @@ -876,12 +892,12 @@ if (empty($arRunErrors)) break; case 'model': case 'title': - if (!is_array($XML_DATA) || !is_array($XML_DATA['XML_DATA']) || !$XML_DATA['XML_DATA'][$key]) + if (!is_array($XML_DATA[$IBLOCK_ID]) || !is_array($XML_DATA[$IBLOCK_ID]['XML_DATA']) || !$XML_DATA[$IBLOCK_ID]['XML_DATA'][$key]) { if ( - $key == 'model' && $XML_DATA['TYPE'] == 'vendor.model' + $key == 'model' && $XML_DATA[$IBLOCK_ID]['TYPE'] == 'vendor.model' || - $key == 'title' && $XML_DATA['TYPE'] == 'artist.title' + $key == 'title' && $XML_DATA[$IBLOCK_ID]['TYPE'] == 'artist.title' ) $strTmpOff.= "<".$key.">".yandex_text2xml($arAcc["NAME"], true)."\n"; @@ -889,14 +905,14 @@ if (empty($arRunErrors)) else { $strValue = ''; - $strValue = yandex_get_value($arAcc, $key, $XML_DATA['XML_DATA'][$key], $IBLOCK_ID); + $strValue = yandex_get_value($arAcc, $key, $XML_DATA[$IBLOCK_ID]['XML_DATA'][$key], $IBLOCK_ID); if ('' != $strValue) $strTmpOff .= $strValue."\n"; } break; case 'year': $y++; - if ($XML_DATA['TYPE'] == 'artist.title') + if ($XML_DATA[$IBLOCK_ID]['TYPE'] == 'artist.title') { if ($y == 1) continue; } @@ -908,10 +924,10 @@ if (empty($arRunErrors)) // no break here default: - if (is_array($XML_DATA) && is_array($XML_DATA['XML_DATA']) && $XML_DATA['XML_DATA'][$key]) + if (is_array($XML_DATA[$IBLOCK_ID]) && is_array($XML_DATA[$IBLOCK_ID]['XML_DATA']) && $XML_DATA[$IBLOCK_ID]['XML_DATA'][$key]) { $strValue = ''; - $strValue = yandex_get_value($arAcc, $key, $XML_DATA['XML_DATA'][$key], $IBLOCK_ID); + $strValue = yandex_get_value($arAcc, $key, $XML_DATA[$IBLOCK_ID]['XML_DATA'][$key], $IBLOCK_ID); if ('' != $strValue) $strTmpOff .= $strValue."\n"; } @@ -1053,11 +1069,11 @@ if (empty($arRunErrors)) { $arOfferItem = $obOfferItem->GetFields(); $minPrice = -1; - if ($XML_DATA['PRICE'] > 0) + if ($XML_DATA[$IBLOCK_ID]['PRICE'] > 0) { $rsPrices = CPrice::GetListEx(array(),array( 'PRODUCT_ID' => $arOfferItem['ID'], - 'CATALOG_GROUP_ID' => $XML_DATA['PRICE'], + 'CATALOG_GROUP_ID' => $XML_DATA[$IBLOCK_ID]['PRICE'], 'CAN_BUY' => 'Y', 'GROUP_GROUP_ID' => array(2), '+<=QUANTITY_FROM' => 1, @@ -1086,7 +1102,7 @@ if (empty($arRunErrors)) $arDiscounts = CCatalogDiscount::GetDiscount( $arOfferItem['ID'], $intOfferIBlockID, - array($XML_DATA['PRICE']), + array($XML_DATA[$IBLOCK_ID]['PRICE']), array(2), 'N', $arOfferIBlock['LID'], @@ -1215,8 +1231,8 @@ if (empty($arRunErrors)) else $arOfferItem['DETAIL_PAGE_URL'] = str_replace(' ', '%20', $arOfferItem['DETAIL_PAGE_URL']); - if (is_array($XML_DATA) && $XML_DATA['TYPE'] && $XML_DATA['TYPE'] != 'none') - $str_TYPE = ' type="'.htmlspecialcharsbx($XML_DATA['TYPE']).'"'; + if (is_array($XML_DATA[$IBLOCK_ID]) && $XML_DATA[$IBLOCK_ID]['TYPE'] && $XML_DATA[$IBLOCK_ID]['TYPE'] != 'none') + $str_TYPE = ' type="'.htmlspecialcharsbx($XML_DATA[$IBLOCK_ID]['TYPE']).'"'; else $str_TYPE = ''; @@ -1262,7 +1278,7 @@ if (empty($arRunErrors)) switch ($key) { case 'name': - if (is_array($XML_DATA) && ($XML_DATA['TYPE'] == 'vendor.model' || $XML_DATA['TYPE'] == 'artist.title')) + if (is_array($XML_DATA[$IBLOCK_ID]) && ($XML_DATA[$IBLOCK_ID]['TYPE'] == 'vendor.model' || $XML_DATA[$IBLOCK_ID]['TYPE'] == 'artist.title')) continue; $strOfferYandex .= "".yandex_text2xml($arOfferItem["NAME"], true)."\n"; @@ -1284,10 +1300,11 @@ if (empty($arRunErrors)) $strOfferYandex .= "\n"; break; case 'param': - if (is_array($XML_DATA) && is_array($XML_DATA['XML_DATA']) && is_array($XML_DATA['XML_DATA']['PARAMS'])) + if (is_array($XML_DATA[$IBLOCK_ID]) && is_array($XML_DATA[$IBLOCK_ID]['XML_DATA']) && is_array($XML_DATA[$IBLOCK_ID]['XML_DATA']['PARAMS'])) { - foreach ($XML_DATA['XML_DATA']['PARAMS'] as $key => $prop_id) + foreach ($XML_DATA[$IBLOCK_ID]['XML_DATA']['PARAMS'] as $key => $prop_id) { + $strParamValue = ''; if ($prop_id) { @@ -1306,26 +1323,26 @@ if (empty($arRunErrors)) break; case 'model': case 'title': - if (!is_array($XML_DATA) || !is_array($XML_DATA['XML_DATA']) || !$XML_DATA['XML_DATA'][$key]) + if (!is_array($XML_DATA[$IBLOCK_ID]) || !is_array($XML_DATA[$IBLOCK_ID]['XML_DATA']) || !$XML_DATA[$IBLOCK_ID]['XML_DATA'][$key]) { if ( - $key == 'model' && $XML_DATA['TYPE'] == 'vendor.model' + $key == 'model' && $XML_DATA[$IBLOCK_ID]['TYPE'] == 'vendor.model' || - $key == 'title' && $XML_DATA['TYPE'] == 'artist.title' + $key == 'title' && $XML_DATA[$IBLOCK_ID]['TYPE'] == 'artist.title' ) $strOfferYandex .= "<".$key.">".yandex_text2xml($arOfferItem["NAME"], true)."\n"; } else { $strValue = ''; - $strValue = yandex_get_value($arOfferItem, $key, $XML_DATA['XML_DATA'][$key], $IBLOCK_ID); + $strValue = yandex_get_value($arOfferItem, $key, $XML_DATA[$IBLOCK_ID]['XML_DATA'][$key], $IBLOCK_ID); if ('' != $strValue) $strOfferYandex .= $strValue."\n"; } break; case 'year': $y++; - if ($XML_DATA['TYPE'] == 'artist.title') + if ($XML_DATA[$IBLOCK_ID]['TYPE'] == 'artist.title') { if ($y == 1) continue; } @@ -1335,10 +1352,10 @@ if (empty($arRunErrors)) } // no break here default: - if (is_array($XML_DATA) && is_array($XML_DATA['XML_DATA']) && $XML_DATA['XML_DATA'][$key]) + if (is_array($XML_DATA[$IBLOCK_ID]) && is_array($XML_DATA[$IBLOCK_ID]['XML_DATA']) && $XML_DATA[$IBLOCK_ID]['XML_DATA'][$key]) { $strValue = ''; - $strValue = yandex_get_value($arOfferItem, $key, $XML_DATA['XML_DATA'][$key], $IBLOCK_ID); + $strValue = yandex_get_value($arOfferItem, $key, $XML_DATA[$IBLOCK_ID]['XML_DATA'][$key], $IBLOCK_ID); if ('' != $strValue) $strOfferYandex .= $strValue."\n"; } @@ -1386,11 +1403,11 @@ if (empty($arRunErrors)) $arOfferItem['YANDEX_AVAILABLE'] = 'false'; $minPrice = -1; - if ($XML_DATA['PRICE'] > 0) + if ($XML_DATA[$IBLOCK_ID]['PRICE'] > 0) { $rsPrices = CPrice::GetListEx(array(),array( 'PRODUCT_ID' => $arOfferItem['ID'], - 'CATALOG_GROUP_ID' => $XML_DATA['PRICE'], + 'CATALOG_GROUP_ID' => $XML_DATA[$IBLOCK_ID]['PRICE'], 'CAN_BUY' => 'Y', 'GROUP_GROUP_ID' => array(2), '+<=QUANTITY_FROM' => 1, @@ -1419,7 +1436,7 @@ if (empty($arRunErrors)) $arDiscounts = CCatalogDiscount::GetDiscount( $arOfferItem['ID'], $intOfferIBlockID, - array($XML_DATA['PRICE']), + array($XML_DATA[$IBLOCK_ID]['PRICE']), array(2), 'N', $arOfferIBlock['LID'], @@ -1471,8 +1488,8 @@ if (empty($arRunErrors)) else $arOfferItem['DETAIL_PAGE_URL'] = str_replace(' ', '%20', $arOfferItem['DETAIL_PAGE_URL']); - if (is_array($XML_DATA) && $XML_DATA['TYPE'] && $XML_DATA['TYPE'] != 'none') - $str_TYPE = ' type="'.htmlspecialcharsbx($XML_DATA['TYPE']).'"'; + if (is_array($XML_DATA[$IBLOCK_ID]) && $XML_DATA[$IBLOCK_ID]['TYPE'] && $XML_DATA[$IBLOCK_ID]['TYPE'] != 'none') + $str_TYPE = ' type="'.htmlspecialcharsbx($XML_DATA[$IBLOCK_ID]['TYPE']).'"'; else $str_TYPE = ''; @@ -1518,7 +1535,7 @@ if (empty($arRunErrors)) switch ($key) { case 'name': - if (is_array($XML_DATA) && ($XML_DATA['TYPE'] == 'vendor.model' || $XML_DATA['TYPE'] == 'artist.title')) + if (is_array($XML_DATA[$IBLOCK_ID]) && ($XML_DATA[$IBLOCK_ID]['TYPE'] == 'vendor.model' || $XML_DATA[$IBLOCK_ID]['TYPE'] == 'artist.title')) continue; $strOfferYandex .= "".yandex_text2xml($arOfferItem["NAME"], true)."\n"; @@ -1540,9 +1557,9 @@ if (empty($arRunErrors)) $strOfferYandex .= "\n"; break; case 'param': - if (is_array($XML_DATA) && is_array($XML_DATA['XML_DATA']) && is_array($XML_DATA['XML_DATA']['PARAMS'])) + if (is_array($XML_DATA[$IBLOCK_ID]) && is_array($XML_DATA[$IBLOCK_ID]['XML_DATA']) && is_array($XML_DATA[$IBLOCK_ID]['XML_DATA']['PARAMS'])) { - foreach ($XML_DATA['XML_DATA']['PARAMS'] as $key => $prop_id) + foreach ($XML_DATA[$IBLOCK_ID]['XML_DATA']['PARAMS'] as $key => $prop_id) { $strParamValue = ''; if ($prop_id) @@ -1562,26 +1579,26 @@ if (empty($arRunErrors)) break; case 'model': case 'title': - if (!is_array($XML_DATA) || !is_array($XML_DATA['XML_DATA']) || !$XML_DATA['XML_DATA'][$key]) + if (!is_array($XML_DATA[$IBLOCK_ID]) || !is_array($XML_DATA[$IBLOCK_ID]['XML_DATA']) || !$XML_DATA[$IBLOCK_ID]['XML_DATA'][$key]) { if ( - $key == 'model' && $XML_DATA['TYPE'] == 'vendor.model' + $key == 'model' && $XML_DATA[$IBLOCK_ID]['TYPE'] == 'vendor.model' || - $key == 'title' && $XML_DATA['TYPE'] == 'artist.title' + $key == 'title' && $XML_DATA[$IBLOCK_ID]['TYPE'] == 'artist.title' ) $strOfferYandex .= "<".$key.">".yandex_text2xml($arOfferItem["NAME"], true)."\n"; } else { $strValue = ''; - $strValue = yandex_get_value($arOfferItem, $key, $XML_DATA['XML_DATA'][$key], $IBLOCK_ID); + $strValue = yandex_get_value($arOfferItem, $key, $XML_DATA[$IBLOCK_ID]['XML_DATA'][$key], $IBLOCK_ID); if ('' != $strValue) $strOfferYandex .= $strValue."\n"; } break; case 'year': $y++; - if ($XML_DATA['TYPE'] == 'artist.title') + if ($XML_DATA[$IBLOCK_ID]['TYPE'] == 'artist.title') { if ($y == 1) continue; } @@ -1591,10 +1608,10 @@ if (empty($arRunErrors)) } // no break here default: - if (is_array($XML_DATA) && is_array($XML_DATA['XML_DATA']) && $XML_DATA['XML_DATA'][$key]) + if (is_array($XML_DATA[$IBLOCK_ID]) && is_array($XML_DATA[$IBLOCK_ID]['XML_DATA']) && $XML_DATA[$IBLOCK_ID]['XML_DATA'][$key]) { $strValue = ''; - $strValue = yandex_get_value($arOfferItem, $key, $XML_DATA['XML_DATA'][$key], $IBLOCK_ID); + $strValue = yandex_get_value($arOfferItem, $key, $XML_DATA[$IBLOCK_ID]['XML_DATA'][$key], $IBLOCK_ID); if ('' != $strValue) $strOfferYandex .= $strValue."\n"; } @@ -1630,11 +1647,11 @@ if (empty($arRunErrors)) $minPriceGroup = 0; $minPriceCurrency = ""; - if ($XML_DATA['PRICE'] > 0) + if ($XML_DATA[$IBLOCK_ID]['PRICE'] > 0) { $rsPrices = CPrice::GetListEx(array(),array( 'PRODUCT_ID' => $arItem['ID'], - 'CATALOG_GROUP_ID' => $XML_DATA['PRICE'], + 'CATALOG_GROUP_ID' => $XML_DATA[$IBLOCK_ID]['PRICE'], 'CAN_BUY' => 'Y', 'GROUP_GROUP_ID' => array(2), '+<=QUANTITY_FROM' => 1, @@ -1663,7 +1680,7 @@ if (empty($arRunErrors)) $arDiscounts = CCatalogDiscount::GetDiscount( $arItem['ID'], $IBLOCK_ID, - array($XML_DATA['PRICE']), + array($XML_DATA[$IBLOCK_ID]['PRICE']), array(2), 'N', $ar_iblock['LID'], @@ -1726,8 +1743,8 @@ if (empty($arRunErrors)) $arItem['~DETAIL_PAGE_URL'] = str_replace(' ', '%20', $arItem['~DETAIL_PAGE_URL']); } - if (is_array($XML_DATA) && $XML_DATA['TYPE'] && $XML_DATA['TYPE'] != 'none') - $str_TYPE = ' type="'.htmlspecialcharsbx($XML_DATA['TYPE']).'"'; + if (is_array($XML_DATA[$IBLOCK_ID]) && $XML_DATA[$IBLOCK_ID]['TYPE'] && $XML_DATA[$IBLOCK_ID]['TYPE'] != 'none') + $str_TYPE = ' type="'.htmlspecialcharsbx($XML_DATA[$IBLOCK_ID]['TYPE']).'"'; else $str_TYPE = ''; if (!isset($arItem["ID"])) @@ -1754,7 +1771,7 @@ if (empty($arRunErrors)) switch ($key) { case 'name': - if (is_array($XML_DATA) && ($XML_DATA['TYPE'] == 'vendor.model' || $XML_DATA['TYPE'] == 'artist.title')) + if (is_array($XML_DATA[$IBLOCK_ID]) && ($XML_DATA[$IBLOCK_ID]['TYPE'] == 'vendor.model' || $XML_DATA[$IBLOCK_ID]['TYPE'] == 'artist.title')) continue; $strValue = "".yandex_text2xml($arItem["NAME"], true)."\n"; @@ -1769,9 +1786,9 @@ if (empty($arRunErrors)) "\n"; break; case 'param': - if (is_array($XML_DATA) && is_array($XML_DATA['XML_DATA']) && is_array($XML_DATA['XML_DATA']['PARAMS'])) + if (is_array($XML_DATA[$IBLOCK_ID]) && is_array($XML_DATA[$IBLOCK_ID]['XML_DATA']) && is_array($XML_DATA[$IBLOCK_ID]['XML_DATA']['PARAMS'])) { - foreach ($XML_DATA['XML_DATA']['PARAMS'] as $key => $prop_id) + foreach ($XML_DATA[$IBLOCK_ID]['XML_DATA']['PARAMS'] as $key => $prop_id) { $strParamValue = ''; if ($prop_id) @@ -1791,26 +1808,26 @@ if (empty($arRunErrors)) break; case 'model': case 'title': - if (!is_array($XML_DATA) || !is_array($XML_DATA['XML_DATA']) || !$XML_DATA['XML_DATA'][$key]) + if (!is_array($XML_DATA[$IBLOCK_ID]) || !is_array($XML_DATA[$IBLOCK_ID]['XML_DATA']) || !$XML_DATA[$IBLOCK_ID]['XML_DATA'][$key]) { if ( - $key == 'model' && $XML_DATA['TYPE'] == 'vendor.model' + $key == 'model' && $XML_DATA[$IBLOCK_ID]['TYPE'] == 'vendor.model' || - $key == 'title' && $XML_DATA['TYPE'] == 'artist.title' + $key == 'title' && $XML_DATA[$IBLOCK_ID]['TYPE'] == 'artist.title' ) $strValue = "<".$key.">".yandex_text2xml($arItem["NAME"], true)."\n"; } else { - $strValue = yandex_get_value($arItem, $key, $XML_DATA['XML_DATA'][$key], $IBLOCK_ID); + $strValue = yandex_get_value($arItem, $key, $XML_DATA[$IBLOCK_ID]['XML_DATA'][$key], $IBLOCK_ID); if ('' != $strValue) $strValue .= "\n"; } break; case 'year': $y++; - if ($XML_DATA['TYPE'] == 'artist.title') + if ($XML_DATA[$IBLOCK_ID]['TYPE'] == 'artist.title') { if ($y == 1) continue; } @@ -1822,9 +1839,9 @@ if (empty($arRunErrors)) // no break here default: - if (is_array($XML_DATA) && is_array($XML_DATA['XML_DATA']) && $XML_DATA['XML_DATA'][$key]) + if (is_array($XML_DATA[$IBLOCK_ID]) && is_array($XML_DATA[$IBLOCK_ID]['XML_DATA']) && $XML_DATA[$IBLOCK_ID]['XML_DATA'][$key]) { - $strValue = yandex_get_value($arItem, $key, $XML_DATA['XML_DATA'][$key], $IBLOCK_ID); + $strValue = yandex_get_value($arItem, $key, $XML_DATA[$IBLOCK_ID]['XML_DATA'][$key], $IBLOCK_ID); if ('' != $strValue) $strValue .= "\n"; } @@ -1868,6 +1885,7 @@ if (empty($arRunErrors)) @fwrite($fp, "\n"); @fclose($fp); + }