- Модуль: intranet
- Путь к файлу: ~/bitrix/modules/intranet/classes/general/cml2.php
- Класс: CUserCMLImport
- Вызов: CUserCMLImport::LoadAbsence
function LoadAbsence($arXMLElement, &$counter)
{
$CURRENT_ENTRY = false;
$XML_ID = $arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_ID')];
if ($arCurrentEntry = $this->GetAbsenceByXML_ID($XML_ID))
$CURRENT_ENTRY = $arCurrentEntry['ID'];
if (GetMessage('IBLOCK_XML2_USER_VALUE_DELETED') == $arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_STATUS')])
{
// deleting
if ($CURRENT_ENTRY)
{
$this->__ib->Delete($CURRENT_ENTRY);
}
$counter['DEL']++;
return $CURRENT_ENTRY;
}
elseif ($arCurrentUser = $this->GetUserByXML_ID($arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_USER')]))
{
$arFields = array(
'XML_ID' => $XML_ID,
'IBLOCK_SECTION' => false,
'IBLOCK_ID' => $this->ABSENCE_IBLOCK_ID,
'NAME' => $arCurrentUser['LAST_NAME'].' '.$arCurrentUser['NAME'].' - '.$arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_STATE')],
'ACTIVE_FROM' => ConvertTimeStamp(MakeTimeStamp($arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_DATE_FROM')], 'YYYY-MM-DD')),
'ACTIVE_TO' => ConvertTimeStamp(MakeTimeStamp($arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_DATE_TO')], 'YYYY-MM-DD')),
'ACTIVE' => 'Y',
'PREVIEW_TEXT' => $arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_ABSENCE_CAUSE')],
'PREVIEW_TEXT_TYPE' => 'text',
'DETAIL_TEXT' => $arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_DOCUMENT')],
'DETAIL_TEXT_TYPE' => 'text',
'PROPERTY_VALUES' => array(
'USER' => $arCurrentUser['ID'],
'STATE' => $arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_STATE')],
'FINISH_STATE' => $arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_FINISH_STATE')],
'ABSENCE_TYPE' => $this->__GetAbsenceType($arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_STATE')].'|'.$arXMLElement[GetMessage('IBLOCK_XML2_USER_TAG_ABSENCE_CAUSE')]),
'USER_ACTIVE' => $arCurrentUser['ACTIVE']
),
);
if ($CURRENT_ENTRY)
{
if ($res = $this->__ib->Update($CURRENT_ENTRY, $arFields))
$counter['UPD']++;
}
else
{
$CURRENT_ENTRY = $this->__ib->Add($arFields);
if ($res = ($CURRENT_ENTRY > 0))
$counter['ADD']++;
}
if (!$res)
{
$counter['ERR']++;
return false;
}
return $CURRENT_ENTRY;
}
else
{
$counter['ERR']++;
return false;
}
}