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