• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/classes/general/cml2.php
  • Класс: CUserCMLImport
  • Вызов: CUserCMLImport::LoadDepartments
function LoadDepartments($arDepts = null, $PARENT_ID = null)
{
	if (null == $arDepts)
		$arDepts = $this->arDepartments;

	$obSection = new CIBlockSection();

	foreach ($arDepts as $arDeptData)
	{
		//print_r($arDeptData);

		$XML_ID = $arDeptData[GetMessage('IBLOCK_XML2_USER_TAG_ID')];
		if ($SECTION_ID = $this->GetSectionByXML_ID($this->DEPARTMENTS_IBLOCK_ID, $XML_ID))
		{
			$dbRes = $obSection->GetByID($SECTION_ID);
			$arCurrentSection = $dbRes->Fetch();
		}

		$arFields = array(
			'ACTIVE' => ($arDeptData[GetMessage('IBLOCK_XML2_USER_TAG_STATUS')]===GetMessage('IBLOCK_XML2_USER_VALUE_DELETED')? 'N': 'Y'),
			'IBLOCK_ID' => $this->DEPARTMENTS_IBLOCK_ID,
			'IBLOCK_SECTION_ID' => intval($PARENT_ID),
			'EXTERNAL_ID' => $XML_ID,
			'NAME' => $arDeptData[GetMessage('IBLOCK_XML2_USER_TAG_NAME')],
			//'SORT' => 100,
		);

		$bStoreHead = false;
		if (isset($arDeptData[GetMessage('IBLOCK_XML2_USER_TAG_DEPARTMENT_HEAD')]))
		{
			if ($arDeptData[GetMessage('IBLOCK_XML2_USER_TAG_DEPARTMENT_HEAD')])
			{
				if ($arUser = $this->GetUserByXML_ID($arDeptData[GetMessage('IBLOCK_XML2_USER_TAG_DEPARTMENT_HEAD')]))
				{
					$arFields['UF_HEAD'] = $arUser['ID'];
				}
				else
				{
					$bStoreHead = true;
				}
			}
			else
			{
				$arFields['UF_HEAD'] = '';
			}

		}

		//print_r($arFields);

		if (!$SECTION_ID)
		{
			$arFields['SORT'] = 100;
			$SECTION_ID = $obSection->Add($arFields);
			$res = ($SECTION_ID > 0);
			$this->arSectionCache[$this->DEPARTMENTS_IBLOCK_ID][$XML_ID] = $SECTION_ID;
		}
		else
		{
			$res = $obSection->Update($SECTION_ID, $arFields);
		}

		if (!$res)
		{
			$GLOBALS['APPLICATION']->ThrowException($obSection->LAST_ERROR);
			return false;
		}

		if ($bStoreHead)
		{
			if (!$this->next_step['_TEMPORARY']['DEPARTMENT_HEADS'])
				$this->next_step['_TEMPORARY']['DEPARTMENT_HEADS'] = array();
			if (!$this->next_step['_TEMPORARY']['DEPARTMENT_HEADS'][$arDeptData[GetMessage('IBLOCK_XML2_USER_TAG_DEPARTMENT_HEAD')]])
				$this->next_step['_TEMPORARY']['DEPARTMENT_HEADS'][$arDeptData[GetMessage('IBLOCK_XML2_USER_TAG_DEPARTMENT_HEAD')]] = array();

			$this->next_step['_TEMPORARY']['DEPARTMENT_HEADS'][$arDeptData[GetMessage('IBLOCK_XML2_USER_TAG_DEPARTMENT_HEAD')]][] = $SECTION_ID;
		}

		if (is_array($arDeptData[GetMessage('IBLOCK_XML2_USER_TAG_DEPARTMENTS')]))
		{
			if (!$this->LoadDepartments($arDeptData[GetMessage('IBLOCK_XML2_USER_TAG_DEPARTMENTS')], $SECTION_ID))
				return false;
		}
	}

	// if (!$PARENT_ID)
		// $obSection->ReSort();

	return true;
}