- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_activity_calendar.php
- Класс: \CCrmActivityCalendar
- Вызов: CCrmActivityCalendar::GetList
public function GetList($arOrder = Array('CREATED_DATE' => 'DESC'), $arFilter = Array(), $arSelect = Array(), $nPageTop = false)
{
// Fix for #27449
if (!CModule::IncludeModule('calendar'))
{
$obRes = new CDBResult();
$obRes->InitFromArray(array());
return $obRes;
}
global $USER;
$ENTITY_ID = 'CALENDAR_EVENT';
$arElement = $GLOBALS['USER_FIELD_MANAGER']->GetUserFields($ENTITY_ID, 0, LANGUAGE_ID);
if ($arElement == false || !isset($arElement['UF_CRM_CAL_EVENT']))
{
$arFields = array();
$arFields['ENTITY_ID'] = $ENTITY_ID;
$arFields['FIELD_NAME'] = 'UF_CRM_CAL_EVENT';
$arFields['USER_TYPE_ID'] = 'crm';
$arFields['EDIT_FORM_LABEL'][LANGUAGE_ID] = GetMessage('CRM_UF_NAME');
$arFields['LIST_COLUMN_LABEL'][LANGUAGE_ID] = GetMessage('CRM_UF_NAME');
$arFields['LIST_FILTER_LABEL'][LANGUAGE_ID] = GetMessage('CRM_UF_NAME');
$arFields['SETTINGS']['LEAD'] = 'Y';
$arFields['SETTINGS']['CONTACT'] = 'Y';
$arFields['SETTINGS']['COMPANY'] = 'Y';
$arFields['SETTINGS']['DEAL'] = 'Y';
$arFields['MULTIPLE'] = 'Y';
$CAllUserTypeEntity = new CUserTypeEntity();
$CAllUserTypeEntity->Add($arFields);
}
$entityTypeId = \CCrmOwnerType::ResolveID($arFilter['ENTITY_TYPE'] ?? '');
if (
$entityTypeId > 0
&& isset($arFilter['ENTITY_ID'])
&& (int)$arFilter['ENTITY_ID'] > 0
)
{
$arFilter['UF_CRM_CAL_EVENT'] = \Bitrix\Crm\UserField\Types\ElementType::getValueByIdentifier(
new \Bitrix\Crm\ItemIdentifier(
(int)$arFilter['ENTITY_TYPE'],
(int)$arFilter['ENTITY_ID']
)
);
unset($arFilter['ENTITY_TYPE'], $arFilter['ENTITY_ID']);
}
else if (!empty($arFilter['ENTITY_TYPE']))
{
$arFilter['ENTITY_TYPE'] = CUserTypeCrm::GetShortEntityType($arFilter['ENTITY_TYPE']);
$arFilter['%UF_CRM_CAL_EVENT'] = $arFilter['ENTITY_TYPE'].'_';
unset($arFilter['ENTITY_TYPE']);
}
else
$arFilter['!=UF_CRM_CAL_EVENT'] = '';
$arFilter['CAL_TYPE'] = 'user';
$arFilter['DELETED'] = 'N';
if (isset($arFilter['OWNER_ID']) && is_array($arFilter['OWNER_ID']))
$arFilter['OWNER_ID'] = current($arFilter['OWNER_ID']);
$arCal = CCalendarEvent::GetList(
array(
'arFilter' => $arFilter,
'parseRecursion' => false,
'userId' => $USER->GetID(),
'fetchAttendees' => false,
'fetchMeetings' => true
)
);
$obRes = new CDBResult();
$obRes->InitFromArray($arCal);
return $obRes;
}