• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/classes/general/cml2.php
  • Класс: CIBlockCMLImport
  • Вызов: CIBlockCMLImport::ImportSectionPropertyEnum
function ImportSectionPropertyEnum($FIELD_ID, $arEnumXmlNodes)
{
	$arEnumMap = array();
	$arEnumValues = array();
	$obEnum = new CUserFieldEnum;
	$rsEnum = $obEnum->GetList(array(), array(
		"USER_FIELD_ID" => $FIELD_ID,
	));
	while($arEnum = $rsEnum->Fetch())
	{
		$arEnumValues[$arEnum["ID"]] = $arEnum;
		$arEnumMap[$arEnum["XML_ID"]] = &$arEnumValues[$arEnum["ID"]];
	}

	$i = 0;
	foreach($arEnumXmlNodes as $arE)
	{
		if($arE["NAME"] == $this->mess["IBLOCK_XML2_CHOICE"])
		{
			$arE = $this->_xml_file->GetAllChildrenArray($arE);
			if(isset($arE[$this->mess["IBLOCK_XML2_ID"]]))
			{
				$xml_id = $arE[$this->mess["IBLOCK_XML2_ID"]];
				if(!array_key_exists($xml_id, $arEnumMap))
				{
					$arEnumValues["n".$i] = array();
					$arEnumMap[$xml_id] = &$arEnumValues["n".$i];
					$i++;
				}
				$arEnumMap[$xml_id]["CML2_EXPORT_FLAG"] = true;
				$arEnumMap[$xml_id]["XML_ID"] = $xml_id;
				if(isset($arE[$this->mess["IBLOCK_XML2_VALUE"]]))
					$arEnumMap[$xml_id]["VALUE"] = $arE[$this->mess["IBLOCK_XML2_VALUE"]];
				if(isset($arE[$this->mess["IBLOCK_XML2_BY_DEFAULT"]]))
					$arEnumMap[$xml_id]["DEF"] = ($arE[$this->mess["IBLOCK_XML2_BY_DEFAULT"]]=="true") || intval($arE[$this->mess["IBLOCK_XML2_BY_DEFAULT"]])? "Y": "N";
				if(isset($arE[$this->mess["IBLOCK_XML2_SORT"]]))
					$arEnumMap[$xml_id]["SORT"] = intval($arE[$this->mess["IBLOCK_XML2_SORT"]]);
			}
		}
	}

	$bUpdateOnly = array_key_exists("bUpdateOnly", $this->next_step) && $this->next_step["bUpdateOnly"];
	$sort = 100;

	foreach($arEnumValues as $id=>$arEnum)
	{
		if(!isset($arEnum["CML2_EXPORT_FLAG"]))
		{
			//Delete value only when full exchange happened
			if(!$bUpdateOnly)
				$arEnumValues[$id]["VALUE"] = "";
		}
		elseif(isset($arEnum["SORT"]))
		{
			if($arEnum["SORT"] > $sort)
				$sort = $arEnum["SORT"] + 100;
		}
		else
		{
			$arEnumValues[$id]["SORT"] = $sort;
			$sort += 100;
		}
	}

	$obEnum = new CUserFieldEnum;
	$res = $obEnum->SetEnumValues($FIELD_ID, $arEnumValues);

	return true;
}