• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/classes/general/cml2.php
  • Класс: CUserCMLImport
  • Вызов: CUserCMLImport::ImportMetaData
function ImportMetaData($xml_root_id = false)
{
	global $DB;

	if (!$this->arParams['SKIP_STRUCTURE_CHECK'] && !$this->CheckStructure())
		return false;

	if (null == $this->__ibxml)
		$this->__ibxml = new CIBlockXMLFile();

	$XML_DEPARTMENTS_PARENT = false;
	$XML_PROPERTIES_PARENT = false;

	if ($xml_root_id <= 0)
	{
		$rs = $DB->Query("SELECT MIN(PARENT_ID) MIN_ID FROM b_xml_tree WHERE NAME='".GetMessage('IBLOCK_XML2_USER_TAG_CLASSIFIER')."'");
		$ar = $rs->Fetch();
		$xml_root_id = $ar["MIN_ID"];
	}

	$rs = $DB->Query("SELECT ID, ATTRIBUTES FROM b_xml_tree WHERE PARENT_ID = ".intval($xml_root_id)." AND NAME='".GetMessage('IBLOCK_XML2_USER_TAG_CLASSIFIER')."'");
	if($ar = $rs->Fetch())
	{
		if($ar["ATTRIBUTES"] <> '')
		{
			$attrs = unserialize($ar["ATTRIBUTES"], ["allowed_classes" => false]);
			if(is_array($attrs))
			{
				if(array_key_exists(GetMessage('IBLOCK_XML2_USER_ATTR_UPDATE_ONLY'), $attrs))
					$this->bUpdateOnly = ($attrs[GetMessage('IBLOCK_XML2_USER_ATTR_UPDATE_ONLY')] == 'true') || (intval($attrs[GetMessage('IBLOCK_XML2_USER_ATTR_UPDATE_ONLY')]) ? true: false);
			}
		}

		$rs = $DB->Query("select * from b_xml_tree where PARENT_ID = ".$ar["ID"]." order by ID");
		while($ar = $rs->Fetch())
		{
			switch ($ar['NAME'])
			{
				case GetMessage('IBLOCK_XML2_USER_TAG_DEPARTMENTS'):
					$XML_DEPARTMENTS_PARENT = $ar['ID'];
				break;
				case GetMessage('IBLOCK_XML2_USER_TAG_PROPERTIES'):
					$XML_PROPERTIES_PARENT = $ar['ID'];
				break;
				default: break;
			}
		}

		if ($XML_DEPARTMENTS_PARENT)
		{
			$this->arDepartments = $this->__ibxml->GetAllChildrenArray($XML_DEPARTMENTS_PARENT);
			if (!$this->LoadDepartments($this->arDepartments, $this->GetStructureRoot())) /////////////////////////////////////////////// put here root department
				return false;

			$this->next_step['_TEMPORARY']['DEPARTMENTS'] = $this->arSectionCache;
		}

		if ($XML_PROPERTIES_PARENT)
		{
			$this->arProperties = $this->__ibxml->GetAllChildrenArray($XML_PROPERTIES_PARENT);

			foreach($this->arProperties as $arPropertyData)
			{
				$this->GetPropertyByXML_ID($arPropertyData[GetMessage('IBLOCK_XML2_USER_TAG_ID')], array('XML_ID' => $arPropertyData[GetMessage('IBLOCK_XML2_USER_TAG_ID')], 'NAME' => $arPropertyData[GetMessage('IBLOCK_XML2_USER_TAG_NAME')]));
			}
			//$this->next_step['_TEMPORARY']['PROPERTIES'] = $this->arProperties;
		}
	}

	return true;
}