- Модуль: 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;
}