5if(!defined(
"CACHED_b_iblock_type")) define(
"CACHED_b_iblock_type", 36000);
6if(!defined(
"CACHED_b_iblock")) define(
"CACHED_b_iblock", 36000);
7if(!defined(
"CACHED_b_iblock_bucket_size")) define(
"CACHED_b_iblock_bucket_size", 20);
8if(!defined(
"CACHED_b_iblock_property_enum")) define(
"CACHED_b_iblock_property_enum", 36000);
9if(!defined(
"CACHED_b_iblock_property_enum_bucket_size")) define(
"CACHED_b_iblock_property_enum_bucket_size", 100);
11require_once __DIR__.
'/autoload.php';
63 $arCODEsInc =
array();
64 if (is_array($arTypesInc))
66 foreach ($arTypesInc as
$i)
74 elseif (intval($arTypesInc) > 0)
76 $arIDsInc[] = $arTypesInc;
80 $arCODEsInc[] = $arTypesInc;
84 $arCODEsExc =
array();
85 if (is_array($arTypesExc))
87 foreach ($arTypesExc as
$i)
95 elseif (intval($arTypesExc) > 0)
97 $arIDsExc[] = $arTypesExc;
101 $arCODEsExc[] = $arTypesExc;
108 "CNT_ACTIVE" => $bCountActive?
"Y":
"N",
110 "CODE" => $arCODEsInc,
112 "!CODE" => $arCODEsExc,
117 $dbr->NavStart($cnt);
155 return $res->GetNext();
243 $arNavParams =
array(
"nTopCount"=>$cnt);
245 $arNavParams =
false;
247 return CIBlockElement::GetList($arOrder,
$filter, $arGroupBy, $arNavParams, $arSelect);
267 $arCODEsInc =
array();
268 if (is_array($arTypesInc))
270 foreach ($arTypesInc as
$i)
278 elseif (intval($arTypesInc) > 0)
280 $arIDsInc[] = $arTypesInc;
282 elseif ($arTypesInc !==
false)
284 $arCODEsInc[] = $arTypesInc;
288 $arCODEsExc =
array();
289 if (is_array($arTypesExc))
291 foreach ($arTypesExc as
$i)
299 elseif (intval($arTypesExc) > 0)
301 $arIDsExc[] = $arTypesExc;
303 elseif ($arTypesInc !==
false)
305 $arCODEsExc[] = $arTypesExc;
309 "IBLOCK_ID" => $arIDsInc,
310 "IBLOCK_LID" =>
$lang,
311 "IBLOCK_ACTIVE" =>
"Y",
312 "IBLOCK_CODE" => $arCODEsInc,
313 "!IBLOCK_ID" => $arIDsExc,
314 "!IBLOCK_CODE" => $arCODEsExc,
315 "ACTIVE_DATE" =>
"Y",
317 "CHECK_PERMISSIONS" =>
"Y",
341 "IBLOCK_ID" => intval($IBLOCK),
342 "ACTIVE_DATE" =>
"Y",
344 "CHECK_PERMISSIONS" =>
"Y",
346 if ($SECTION_ID !==
false)
347 $filter[
"SECTION_ID"] = intval($SECTION_ID);
348 return CIBlockElement::GetList($arOrder,
$filter,
true);
366 "IBLOCK_ID" => intval($IBLOCK),
367 "ACTIVE_DATE" =>
"Y",
369 "CHECK_PERMISSIONS" =>
"Y",
371 if ($SECTION_ID !==
false)
372 $filter[
"SECTION_ID"]=intval($SECTION_ID);
377 $dbr = CIBlockElement::GetList($arOrder,
$filter,
false,
false, $arSelect);
379 $dbr->NavStart($cnt);
397 "ACTIVE_DATE" =>
"Y",
399 "CHECK_PERMISSIONS" =>
"Y",
404 $iblockElement = CIBlockElement::GetList(
array(),
$filter);
405 if($obIBlockElement = $iblockElement->GetNextElement())
407 $arIBlockElement = $obIBlockElement->GetFields();
410 $arIBlockElement[
"IBLOCK_ID"] =
$arIBlock[
"ID"];
411 $arIBlockElement[
"IBLOCK_NAME"] =
$arIBlock[
"NAME"];
412 $arIBlockElement[
"~IBLOCK_NAME"] =
$arIBlock[
"~NAME"];
413 $arIBlockElement[
"PROPERTIES"] = $obIBlockElement->GetProperties();
414 return $arIBlockElement;
434 "IBLOCK_ID" => intval($IBLOCK),
438 if ($SECT_ID !==
false)
439 $filter[
"SECTION_ID"] = intval($SECT_ID);
444 $dbr = CIBlockSection::GetList($arOrder,
$filter,
true);
446 $dbr->NavStart($cnt);
465 "IBLOCK_ID" => intval($IBLOCK),
467 "IBLOCK_ACTIVE" =>
"Y",
469 if ($SECT_ID !==
false)
470 $filter[
"SECTION_ID"] = intval($SECT_ID);
475 $dbr = CIBlockSection::GetList($arOrder,
$filter);
477 $dbr->NavStart($cnt);
495 $iblockSection = CIBlockSection::GetList(
array(),
array(
499 if($arIBlockSection = $iblockSection->GetNext())
503 $arIBlockSection[
"IBLOCK_ID"] =
$arIBlock[
"ID"];
504 $arIBlockSection[
"IBLOCK_NAME"] =
$arIBlock[
"NAME"];
505 return $arIBlockSection;
522 return CIBlockSection::GetNavChain(
$IBLOCK_ID, $SECTION_ID);
534 $values = $index = $array =
array();
535 $parser = xml_parser_create();
536 xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
537 xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
538 xml_parse_into_struct($parser,
$data, $values, $index);
539 xml_parser_free($parser);
543 $tagName = $values[
$i][
'tag'];
544 if (isset($values[
$i][
'attributes']))
545 $array[$tagName][
'@'] = $values[
$i][
'attributes'];
547 $array[$tagName][
'@'] =
array();
565 if (isset($values[
$i][
'value']))
570 switch ($values[
$i][
'type'])
573 if (isset($values[
$i][
'tag']))
574 $tagName = $values[
$i][
'tag'];
583 if (isset($values[
$i][
'attributes']))
584 $children[$tagName][$size][
'@'] = $values[
$i][
"attributes"];
594 $tagName = $values[
$i][
'tag'];
601 if(isset($values[
$i][
'value']))
602 $children[$tagName][$size][
"#"] = $values[
$i][
'value'];
606 if (isset($values[
$i][
'attributes']))
607 $children[$tagName][$size][
'@'] = $values[
$i][
'attributes'];
636 static $arTypesAll =
array();
638 static $arIBlocks =
array();
642 if (!array_key_exists(
'MIN_PERMISSION',
$arFilter) || trim(
$arFilter[
'MIN_PERMISSION']) ==
'')
654 $tmpIBLOCK_TYPE_ID =
$arIBlock[
"IBLOCK_TYPE_ID"];
655 if(!array_key_exists($tmpIBLOCK_TYPE_ID, $arTypesAll))
658 $arTypesAll[$arType[
"~ID"]] = $arType[
"~NAME"].
" [".$arType[
"~ID"].
"]";
660 if(!array_key_exists($tmpIBLOCK_TYPE_ID,
$arTypes[$filterId]))
662 $arTypes[$filterId][$tmpIBLOCK_TYPE_ID] = $arTypesAll[$tmpIBLOCK_TYPE_ID];
663 $arIBlocks[$filterId][$tmpIBLOCK_TYPE_ID] =
array(0 =>
GetMessage(
"IBLOCK_CHOOSE_IBLOCK"));
670 function OnType_'.$filterId.
'_Changed(typeSelect, iblockSelectID)
672 var arIBlocks = '.CUtil::PhpToJSObject($arIBlocks[$filterId]).
';
673 var iblockSelect = BX(iblockSelectID);
676 for(var i=iblockSelect.length-1; i >= 0; i--)
677 iblockSelect.remove(i);
678 for(var j in arIBlocks[typeSelect.value])
680 var newOption = new Option(arIBlocks[typeSelect.value][j], j, false, false);
681 iblockSelect.options.add(newOption);
689 $IBLOCK_TYPE =
false;
692 foreach($arIBlocks[$filterId] as $iblock_type_id => $iblocks)
696 $IBLOCK_TYPE = $iblock_type_id;
704 $onChangeType =
'OnType_'.$filterId.
'_Changed(this, \''.CUtil::JSEscape($strIBlockName).
'\');
'.$onChangeType.';
';
705 $onChangeIBlock = trim($onChangeIBlock);
707 $html .= '<
select name=
"'.$htmlTypeName.'" id=
"'.$htmlTypeName.'" onchange=
"'.htmlspecialcharsbx($onChangeType).'" '.$strAddType.'>
'."\n";
708 foreach($arTypes[$filterId] as $key => $value)
710 if($IBLOCK_TYPE === false)
712 $html .= '<option value=
"'.htmlspecialcharsbx($key).'"'.($IBLOCK_TYPE===$key? ' selected': '').'>
'.htmlspecialcharsEx($value).'</option>
'."\n";
714 $html .= "</select>\n";
716 $html .= '<
select name=
"'.$htmlIBlockName.'" id=
"'.$htmlIBlockName.'"'.($onChangeIBlock != ''? ' onchange=
"'.htmlspecialcharsbx($onChangeIBlock).'"': '').' '.$strAddIBlock.'>
'."\n";
717 foreach($arIBlocks[$filterId][$IBLOCK_TYPE] as $key => $value)
719 $html .= '<option value=
"'.htmlspecialcharsbx($key).'"'.($IBLOCK_ID==$key? ' selected': '').'>
'.htmlspecialcharsEx($value).'</option>
'."\n";
721 $html .= "</select>\n";
737function GetIBlockDropDownList($IBLOCK_ID, $strTypeName, $strIBlockName, $arFilter = false, $strAddType = '
', $strAddIBlock = '')
739 if(!is_array($arFilter))
741 $arFilter["MIN_PERMISSION"] = "W";
743 return GetIBlockDropDownListEx($IBLOCK_ID, $strTypeName, $strIBlockName, $arFilter, '', '', $strAddType, $strAddIBlock);
760function ImportXMLFile($file_name, $iblock_type="-", $site_id='
', $section_action="D", $element_action="D", $use_crc=false, $preview=false, $sync=false, $return_last_error=false, $return_iblock_id=false)
764 $ABS_FILE_NAME = false;
769 file_exists($file_name)
770 && is_file($file_name)
772 mb_substr($file_name, -4) === ".xml"
773 || mb_substr($file_name, -7) === ".tar.gz"
777 $ABS_FILE_NAME = $file_name;
781 $filename = trim(str_replace("\\", "/", trim($file_name)), "/");
782 $FILE_NAME = rel2abs($_SERVER["DOCUMENT_ROOT"], "/".$filename);
783 if((mb_strlen($FILE_NAME) > 1) && ($FILE_NAME === "/".$filename) && ($APPLICATION->GetFileAccessPermission($FILE_NAME) >= "W"))
785 $ABS_FILE_NAME = $_SERVER["DOCUMENT_ROOT"].$FILE_NAME;
791 return GetMessage("IBLOCK_XML2_FILE_ERROR");
793 $WORK_DIR_NAME = mb_substr($ABS_FILE_NAME, 0, mb_strrpos($ABS_FILE_NAME, "/") + 1);
795 if(mb_substr($ABS_FILE_NAME, -7) == ".tar.gz")
797 include_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/classes/general/tar_gz.php");
798 $obArchiver = new CArchiver($ABS_FILE_NAME);
799 if(!$obArchiver->ExtractFiles($WORK_DIR_NAME))
802 if(is_object($APPLICATION))
804 $arErrors = $obArchiver->GetErrors();
807 foreach($arErrors as $error)
808 $strError .= $error[1]."<br>";
814 return GetMessage("IBLOCK_XML2_FILE_ERROR");
816 $IMP_FILE_NAME = mb_substr($ABS_FILE_NAME, 0, -7).".xml";
820 $IMP_FILE_NAME = $ABS_FILE_NAME;
823 $fp = fopen($IMP_FILE_NAME, "rb");
825 return GetMessage("IBLOCK_XML2_FILE_ERROR");
828 $table_name = "b_xml_tree_sync";
830 $table_name = "b_xml_tree";
832 $NS = array("STEP"=>0);
834 $obCatalog = new CIBlockCMLImport;
835 $obCatalog->Init($NS, $WORK_DIR_NAME, $use_crc, $preview, false, false, false, $table_name);
839 if(!$obCatalog->StartSession(bitrix_sessid()))
840 return GetMessage("IBLOCK_XML2_TABLE_CREATE_ERROR");
842 $obCatalog->ReadXMLToDatabase($fp, $NS, 0, 1024);
844 $xml_root = $obCatalog->GetSessionRoot();
845 $bUpdateIBlock = false;
849 $result = $obCatalog->initializeTemporaryTables();
853 return GetMessage("IBLOCK_XML2_TABLE_PREPARE_ERROR");
856 $obCatalog->ReadXMLToDatabase($fp, $NS, 0, 1024);
858 if(!$obCatalog->IndexTemporaryTables())
859 return GetMessage("IBLOCK_XML2_INDEX_ERROR");
861 $xml_root = $obCatalog->GetRoot();
862 $bUpdateIBlock = true;
867 $result = $obCatalog->ImportMetaData($xml_root, $iblock_type, $site_id, $bUpdateIBlock);
871 $obCatalog->EndSession();
872 return GetMessage("IBLOCK_XML2_METADATA_ERROR").' '.(is_array($result) ? implode("\n", $result) : $result);
875 $obCatalog->ImportSections();
876 $obCatalog->DeactivateSections($section_action);
877 $obCatalog->SectionsResort();
879 $obCatalog = new CIBlockCMLImport;
880 $obCatalog->Init($NS, $WORK_DIR_NAME, $use_crc, $preview, false, false, false, $table_name);
883 if(!$obCatalog->StartSession(bitrix_sessid()))
884 return GetMessage("IBLOCK_XML2_TABLE_CREATE_ERROR");
886 $SECTION_MAP = false;
888 $obCatalog->ReadCatalogData($SECTION_MAP, $PRICES_MAP);
889 $obCatalog->ImportElements(time(), 0);
890 $obCatalog->ImportProductSets();
892 $obCatalog->DeactivateElement($element_action, time(), 0);
894 $obCatalog->EndSession();
896 if($return_last_error)
898 if($obCatalog->LAST_ERROR <> '')
900 return $obCatalog->LAST_ERROR;
904 if ($return_iblock_id)
905 return intval($NS["IBLOCK_ID"]);
static GetByIDLang($ID, $LID, $bFindAny=true)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
GetIBlockListLang($lang, $type, $arTypesInc=array(), $arTypesExc=array(), $arOrder=array("SORT"=> "ASC"), $cnt=0, $bCountActive=false)
GetIBlockSectionPath($IBLOCK_ID, $SECTION_ID)
GetIBlockSectionListWithCnt($IBLOCK, $SECT_ID=false, $arOrder=array("left_margin"=>"asc"), $cnt=0, $arFilter=array())
GetIBlockElement($ID, $TYPE="")
GetIBlockElementListExLang($lang, $type, $arTypesInc=array(), $arTypesExc=array(), $arOrder=array("sort"=>"asc"), $cnt=0, $arFilter=array(), $arSelect=array(), $arGroupBy=false)
GetIBlockSection($ID, $TYPE="")
GetIBlockElementCountEx($type, $arTypesInc=array(), $arTypesExc=array(), $arOrder=array("sort"=>"asc"), $cnt=0, $arFilter=array())
GetIBlockListWithCnt($type, $arTypesInc=array(), $arTypesExc=array(), $arOrder=array("sort"=> "asc"), $cnt=0)
GetIBlockElementCount($IBLOCK, $SECTION_ID=false, $arOrder=array("sort"=>"asc"), $cnt=0)
GetIBlockLang($lang, $ID, $type="")
GetIBlockElementListEx($type, $arTypesInc=array(), $arTypesExc=array(), $arOrder=array("sort"=>"asc"), $cnt=0, $arFilter=array(), $arSelect=array(), $arGroupBy=false)
GetIBlockSectionList($IBLOCK, $SECT_ID=false, $arOrder=array("left_margin"=>"asc"), $cnt=0, $arFilter=array())
xml_depth_rss($values, &$i)
GetIBlockElementList($IBLOCK, $SECTION_ID=false, $arOrder=array("sort"=>"asc"), $cnt=0, $arFilter=array(), $arSelect=array())
GetIBlockDropDownListEx($IBLOCK_ID, $strTypeName, $strIBlockName, $arFilter=false, $onChangeType='', $onChangeIBlock='', $strAddType='', $strAddIBlock='')
GetIBlockElementCountExLang($lang, $type, $arTypesInc=array(), $arTypesExc=array(), $arOrder=array("sort"=>"asc"), $cnt=0, $arFilter=array())
_GetIBlockElementListExLang_tmp($lang, $type, $arTypesInc=array(), $arTypesExc=array(), $arOrder=array("sort"=> "asc"), $cnt=0, $arFilter=array(), $arSelect=array())
GetIBlockList($type, $arTypesInc=array(), $arTypesExc=array(), $arOrder=array("sort"=> "asc"), $cnt=0)
if(!defined('SITE_ID')) $lang
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
GetMessage($name, $aReplace=null)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"