42 $bHSC = (
true == $bHSC ? true :
false);
43 $bDblQuote = (
true == $bDblQuote ?
true:
false);
51 $text = preg_replace(
'/[\x01-\x08\x0B-\x0C\x0E-\x1F]/',
"",
$text);
59$usedProtocol = (isset($USE_HTTPS) && $USE_HTTPS ==
'Y' ?
'https://' :
'http://');
89 if (!@fwrite($fp,
'<?php' .
"\n"))
96 fwrite($fp,
'if (!isset($_GET["referer1"]) || $_GET["referer1"] == "") $_GET["referer1"] = "yandext";' .
"\n");
97 fwrite($fp,
'$strReferer1 = htmlspecialchars($_GET["referer1"]);' .
"\n");
98 fwrite($fp,
'if (!isset($_GET["referer2"]) || $_GET["referer2"] == "") $_GET["referer2"] = "";' .
"\n");
99 fwrite($fp,
'$strReferer2 = htmlspecialchars($_GET["referer2"]);' .
"\n");
106 fwrite($fp,
'header("Content-Type: text/xml; charset=windows-1251");' .
"\n");
107 fwrite($fp,
'?>' .
"\n");
108 fwrite($fp,
'<?= \'<?xml version="1.0" encoding="windows-1251"?>\'; ?>' .
"\n");
109 fwrite($fp,
"<!DOCTYPE yml_catalog SYSTEM \"shops.dtd\">\n");
110 fwrite($fp,
"<yml_catalog date=\"".date(
"Y-m-d H:i").
"\">\n");
111 fwrite($fp,
"<shop>\n");
112 fwrite($fp,
"<name>".Encoding::convertEncoding(
htmlspecialcharsbx(COption::GetOptionString(
"main",
"site_name",
"")),
LANG_CHARSET,
'windows-1251').
"</name>\n");
113 fwrite($fp,
"<company>".Encoding::convertEncoding(
htmlspecialcharsbx(COption::GetOptionString(
"main",
"site_name",
"")),
LANG_CHARSET,
'windows-1251').
"</company>\n");
115 fwrite($fp,
"<platform>1C-Bitrix</platform>\n");
119 $currencyIterator = Currency\CurrencyTable::getList(
array(
120 'select' =>
array(
'CURRENCY'),
121 'filter' =>
array(
'=CURRENCY' =>
'RUR')
123 if (
$currency = $currencyIterator->fetch())
127 $allowedCurrency =
array(
'RUR',
'RUB',
'USD',
'EUR',
'UAH',
'BYR',
'BYN',
'KZT');
128 $strTmp =
"<currencies>\n";
129 $currencyIterator = Currency\CurrencyTable::getList(
array(
130 'select' =>
array(
'CURRENCY',
'SORT'),
131 'filter' =>
array(
'@CURRENCY' => $allowedCurrency),
132 'order' =>
array(
'SORT' =>
'ASC',
'CURRENCY' =>
'ASC')
134 while (
$currency = $currencyIterator->fetch())
136 unset(
$currency, $currencyIterator, $allowedCurrency);
138 $strTmp .=
"</currencies>\n";
140 fwrite($fp, $strTmp);
146 "ID",
"IBLOCK_ID",
"IBLOCK_SECTION_ID",
"NAME",
"PREVIEW_PICTURE",
"PREVIEW_TEXT",
"PREVIEW_TEXT_TYPE",
147 "DETAIL_PICTURE",
"DETAIL_PAGE_URL",
'CATALOG_AVAILABLE'
153 if (is_array($YANDEX_EXPORT))
155 $arSiteServers =
array();
157 $intMaxSectionID = 0;
158 $sectionIterator = Iblock\SectionTable::getList(
array(
163 if ($section = $sectionIterator->fetch())
164 $intMaxSectionID = (int)$section[
'MAX_ID'];
165 unset($section, $sectionIterator);
166 $intMaxSectionID += 100000000;
167 $maxSections =
array();
169 foreach ($YANDEX_EXPORT as $ykey => $yvalue)
171 $boolNeedRootSection =
false;
173 $yvalue = (int)$yvalue;
186 if (!empty($arRights) && isset($arRights[2]) &&
'R' <= $arRights[2])
191 $obRights =
new CIBlockRights($yvalue);
192 $arRights = $obRights->GetGroups(
array(
'section_read',
'element_read'));
193 if (!empty($arRights) && in_array(
'G2',$arRights))
199 $filter =
array(
"IBLOCK_ID" => $yvalue,
"ACTIVE" =>
"Y",
"IBLOCK_ACTIVE" =>
"Y",
"GLOBAL_ACTIVE" =>
"Y");
202 $arAvailGroups =
array();
203 while ($arAcc = $db_acc->Fetch())
205 $arAcc[
'ID'] = (int)$arAcc[
'ID'];
206 $arAcc[
'IBLOCK_SECTION_ID'] = (int)$arAcc[
'IBLOCK_SECTION_ID'];
207 $strTmpCat.=
'<category id="'.$arAcc[
'ID'].
'"'.($arAcc[
'IBLOCK_SECTION_ID'] > 0 ?
' parentId="'.$arAcc[
'IBLOCK_SECTION_ID'].
'"' :
'').
'>'.
yandex_text2xml($arAcc[
'NAME'],
true).
'</category>'.
"\n";
208 $arAvailGroups[] = $arAcc[
'ID'];
213 $filter =
array(
"IBLOCK_ID" => $yvalue,
"ACTIVE_DATE" =>
"Y",
"ACTIVE" =>
"Y");
220 while ($arAcc =
$res->GetNext())
225 if (!array_key_exists($arAcc[
'LID'], $arSiteServers))
228 if($arSite = $rsSite->Fetch())
229 $arAcc[
"SERVER_NAME"] = $arSite[
"SERVER_NAME"];
230 if($arAcc[
"SERVER_NAME"] ==
'' && defined(
"SITE_SERVER_NAME"))
231 $arAcc[
"SERVER_NAME"] = SITE_SERVER_NAME;
232 if($arAcc[
"SERVER_NAME"] ==
'')
235 $arSiteServers[$arAcc[
'LID']] = $arAcc[
'SERVER_NAME'];
239 $arAcc[
'SERVER_NAME'] = $arSiteServers[$arAcc[
'LID']];
247 $str_AVAILABLE = ($arAcc[
'CATALOG_AVAILABLE'] ==
'Y' ?
' available="true"' :
' available="false"');
250 $minPriceCurrency =
"";
261 $minPrice = $arPrice[
'DISCOUNT_PRICE'];
264 $minPriceCurrency = $RUR;
267 if ($minPrice <= 0)
continue;
269 $currentSection =
false;
270 $bNoActiveGroup =
true;
273 while ($ar_res1 = $db_res1->Fetch())
275 $ar_res1[
'ID'] = (int)$ar_res1[
'ID'];
276 $ar_res1[
'ADDITIONAL_PROPERTY_ID'] = (int)$ar_res1[
'ADDITIONAL_PROPERTY_ID'];
277 if ($ar_res1[
'ADDITIONAL_PROPERTY_ID'] > 0)
279 $currentSection =
true;
280 if (in_array($ar_res1[
"ID"], $arAvailGroups))
282 $strTmpOff_tmp.=
"<categoryId>".$ar_res1[
"ID"].
"</categoryId>\n";
283 $bNoActiveGroup =
false;
287 if (!$currentSection)
289 $boolNeedRootSection =
true;
290 if (!isset($maxSections[$yvalue]))
291 $maxSections[$yvalue] = $intMaxSectionID + $yvalue;
292 $strTmpOff_tmp.=
'<categoryId>'.$maxSections[$yvalue].
"</categoryId>\n";
300 if (
'' == $arAcc[
'DETAIL_PAGE_URL'])
302 $arAcc[
'DETAIL_PAGE_URL'] =
'/';
306 $arAcc[
'DETAIL_PAGE_URL'] = str_replace(
' ',
'%20', $arAcc[
'DETAIL_PAGE_URL']);
308 if (
'' == $arAcc[
'~DETAIL_PAGE_URL'])
310 $arAcc[
'~DETAIL_PAGE_URL'] =
'/';
314 $arAcc[
'~DETAIL_PAGE_URL'] = str_replace(
' ',
'%20', $arAcc[
'~DETAIL_PAGE_URL']);
317 $strTmpOff.=
"<offer id=\"".$arAcc[
"ID"].
"\"".$str_AVAILABLE.
">\n";
318 $strTmpOff.=
"<url>".$usedProtocol.$arAcc[
'SERVER_NAME'].htmlspecialcharsbx($arAcc[
"~DETAIL_PAGE_URL"]).(mb_strstr($arAcc[
'DETAIL_PAGE_URL'],
'?') ===
false ?
'?' :
'&').
"r1=<?echo \$strReferer1; ?>&r2=<?echo \$strReferer2; ?></url>\n";
320 $strTmpOff.=
"<price>".$minPrice.
"</price>\n";
321 $strTmpOff.=
"<currencyId>".$minPriceCurrency.
"</currencyId>\n";
323 $strTmpOff.= $strTmpOff_tmp;
325 if (intval($arAcc[
"DETAIL_PICTURE"])>0 || intval($arAcc[
"PREVIEW_PICTURE"])>0)
327 $pictNo = intval($arAcc[
"DETAIL_PICTURE"]);
328 if ($pictNo<=0) $pictNo = intval($arAcc[
"PREVIEW_PICTURE"]);
331 if (is_array($arPictInfo))
333 if(mb_substr($arPictInfo[
"SRC"], 0, 1) ==
"/")
337 $strTmpOff.=
"<picture>".$strFile.
"</picture>\n";
341 $strTmpOff.=
"<name>".yandex_text2xml($arAcc[
"~NAME"],
true).
"</name>\n";
345 ($arAcc[
"PREVIEW_TEXT_TYPE"]==
"html"?
346 strip_tags(preg_replace_callback(
"'&[^;]*;'",
"yandex_replace_special", $arAcc[
"~PREVIEW_TEXT"])) : preg_replace_callback(
"'&[^;]*;'",
"yandex_replace_special", $arAcc[
"~PREVIEW_TEXT"])),
349 $strTmpOff.=
"</offer>\n";
361 if ($boolNeedRootSection)
364 $strTmpCat .=
'<category id="'.$maxSections[$yvalue].
'">'.
yandex_text2xml(
GetMessage(
'YANDEX_ROOT_DIRECTORY_EXT',
array(
'#NAME#' => $iblockName)),
true).
"</category>\n";
370 fwrite($fp,
"<categories>\n");
371 fwrite($fp, $strTmpCat);
372 fwrite($fp,
"</categories>\n");
374 fwrite($fp,
"<offers>\n");
375 fwrite($fp, $strTmpOff);
376 fwrite($fp,
"</offers>\n");
378 fwrite($fp,
"</shop>\n");
379 fwrite($fp,
"</yml_catalog>\n");
388 if (isset($USER_TMP))
static GetOptimalPrice($intProductID, $quantity=1, $arUserGroups=array(), $renewal="N", $priceList=array(), $siteID=false, $arDiscountCoupons=false)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)