- Модуль: mail
- Путь к файлу: ~/bitrix/modules/mail/lib/integration/main/uiselector/mailcontacts.php
- Класс: BitrixMailIntegrationMainUISelectorMailContacts
- Вызов: MailContacts::getData
public function getData($params = [])
{
$entityType = Handler::ENTITY_TYPE_MAILCONTACTS;
$result = array(
'ITEMS' => array(),
'ITEMS_LAST' => array(),
'ITEMS_HIDDEN' => array(),
'ADDITIONAL_INFO' => array(
'GROUPS_LIST' => array(
'mailcontacts' => array(
'TITLE' => Loc::getMessage('MAIN_UI_SELECTOR_TITLE_MAILCONTACTS'),
'TYPE_LIST' => [ $entityType ],
'DESC_LESS_MODE' => 'N',
'SORT' => 100
)
),
'SORT_SELECTED' => 100
)
);
$currentUser = BitrixMainEngineCurrentUser::get();
if (is_null($currentUser->getId()))
{
return $result;
}
$entityOptions = (!empty($params['options']) ? $params['options'] : array());
$lastItems = (!empty($params['lastItems']) ? $params['lastItems'] : array());
$selectedItems = (!empty($params['selectedItems']) ? $params['selectedItems'] : array());
$selectedItemsData = (!empty($entityOptions['selectedItemsData']) ? $entityOptions['selectedItemsData'] : array());
$lastMailContactsIdList = [];
if(!empty($lastItems[$entityType]))
{
$result["ITEMS_LAST"] = array_values($lastItems[$entityType]);
foreach ($lastItems[$entityType] as $value)
{
$lastMailContactsIdList[] = str_replace(self::PREFIX, '', $value);
}
}
$selectedMailContactsIdList = [];
if(!empty($selectedItems[$entityType]))
{
foreach ($selectedItems[$entityType] as $value)
{
$selectedMailContactsIdList[] = str_replace(self::PREFIX, '', $value);
}
}
$mailContactsIdList = array_merge($selectedMailContactsIdList, $lastMailContactsIdList);
$mailContactsIdList = array_slice($mailContactsIdList, 0, count($selectedMailContactsIdList) > 20 ? count($selectedMailContactsIdList) : 20);
$mailContactsIdList = array_unique($mailContactsIdList);
$mailContactsEmailList = [];
foreach($mailContactsIdList as $key => $contactId)
{
if (
$contactId !== (int) $contactId.' '
&& check_email($contactId, true)
)
{
unset($mailContactsIdList[$key]);
$mailContactsEmailList[] = $contactId;
}
}
$mailContactsList = [];
$filter = [
'=USER_ID' => $currentUser->getId()
];
$order = [];
if (!empty($mailContactsIdList))
{
$filter['ID'] = $mailContactsIdList;
$limit = false;
}
else
{
$order = [
'ID' => 'DESC'
];
$limit = 10;
}
$mailContacts = BitrixMailInternalsMailContactTable::getList([
'order' => $order,
'filter' => $filter,
'select' => ['ID', 'NAME', 'EMAIL', 'ICON'],
'limit' => $limit,
])->fetchAll();
foreach ($mailContacts as $mailContact)
{
$mailContactsList[self::PREFIX.$mailContact['ID']] = self::prepareEntity($mailContact, $entityOptions);
}
if (!empty($mailContactsEmailList))
{
foreach ($mailContactsEmailList as $mailContactEmail)
{
$mailContactsList[self::PREFIX.$mailContactEmail] = self::prepareEntity([
'ID' => $mailContactEmail,
'NAME' => (
isset($selectedItemsData[self::PREFIX.$mailContactEmail])
&& isset($selectedItemsData[self::PREFIX.$mailContactEmail]['name'])
? $selectedItemsData[self::PREFIX.$mailContactEmail]['name']
: $mailContactEmail
),
'EMAIL' => $mailContactEmail,
'ICON' => BitrixMailHelperMailContact::getIconData($mailContactEmail, '')
], $entityOptions);
}
}
if (empty($lastMailContactsIdList))
{
$result["ITEMS_LAST"] = array_keys($mailContactsList);
}
$result['ITEMS'] = $mailContactsList;
return $result;
}