• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/classes/general/account.php
  • Класс: CDavAccount
  • Вызов: CDavAccount::GetAddressbookContactsList
static function GetAddressbookContactsList($collectionId, $arFilter = array())
{
	list($siteId) = $collectionId;
	$arFilter = self::GetAddressbookExtranetUserFilter($siteId, $arFilter);
	$arFilter["ACTIVE"] = "Y";
	$arResult = array();

	$canCache  = false;
	$fromCache = false;
	if(count($arFilter) == 2 && $arFilter['!UF_DEPARTMENT'] === false)
	{
		$canCache = true;

		$obDavCache = new CPHPCache;
		$cache_id = 'kp_dav_address_book';
		$cache_dir = '/dav/address_book';

		if(defined("BX_COMP_MANAGED_CACHE"))
			$cache_ttl = 2592000;
		else
			$cache_ttl = 1200;

		if($obDavCache->InitCache($cache_ttl, $cache_id, $cache_dir))
		{
			$fromCache = true;
			$arResult = $obDavCache->GetVars();
		}
	}

	if (!$fromCache)
	{
		$xmlIds = array();
		if (!empty($arFilter['XML_ID']))
			$xmlIds = (array) $arFilter['XML_ID'];

		if (empty($xmlIds) || !empty($arFilter['ID']))
		{
			unset($arFilter['XML_ID']);
			$params = array(
				'filter' => $arFilter,
				'select' => array(
					'ID', 'LOGIN', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'EMAIL', 'PERSONAL_BIRTHDAY', 'PERSONAL_PHOTO',
					'WORK_PHONE', 'PERSONAL_MOBILE', 'PERSONAL_PHONE', 'WORK_COMPANY', 'WORK_POSITION',
					'WORK_WWW', 'PERSONAL_WWW', 'PERSONAL_STREET', 'PERSONAL_CITY', 'PERSONAL_STATE',
					'PERSONAL_ZIP', 'PERSONAL_COUNTRY', 'WORK_STREET', 'WORK_CITY', 'WORK_STATE',
					'WORK_ZIP', 'WORK_COUNTRY', 'TIMESTAMP_X', 'UF_DEPARTMENT', 'UF_PHONE_INNER'
				)
			);
			$dbUsers = BitrixMainUserTable::getList($params);
			while ($arUser = $dbUsers->fetch())
			{
				$arUser['UF_DEPARTMENT'] = self::getDepartmentsNames($arUser['UF_DEPARTMENT']);
				$arResult[] = $arUser;
			}
		}

		if ($canCache)
		{
			if (defined("BX_COMP_MANAGED_CACHE"))
			{
				global $CACHE_MANAGER;
				$CACHE_MANAGER->startTagCache($cache_dir);
				$CACHE_MANAGER->registerTag("USER_CARD");
				$CACHE_MANAGER->endTagCache();
			}

			if ($obDavCache->startDataCache())
				$obDavCache->endDataCache($arResult);
		}
	}

	global $USER;
	if ($USER->isAuthorized() and !empty($xmlIds) || empty($arFilter['ID']) and CModule::includeModule('mail'))
	{
		$timestampX   = self::getAddressbookModificationLabel($collectionId);
		$extranetSite = isModuleInstalled('extranet') ? COption::getOptionString('extranet', 'extranet_site') : (isModuleInstalled('bitrix24') ? 'ex' : false);
		$extranetUser = (CModule::IncludeModule("extranet") && !CExtranet::IsIntranetUser());

		$rsSite = CSite::getList('', '', array('LID' => $siteId));
		while ($arSite = $rsSite->fetch())
		{
			if (
				(!$extranetUser && $extranetSite && $arSite['LID'] == $extranetSite)
				|| ($extranetUser && $extranetSite && $arSite['LID'] != $extranetSite)
			)
				continue;

			$server_name = $arSite['SERVER_NAME'] ?: COption::getOptionString('main', 'server_name', '');

			$xmlId = 'feed-'.$arSite['LID'];
			$siteName = !empty($arSite['SITE_NAME'])? $arSite['SITE_NAME'] : mb_strtoupper($arSite['LID']);
			if (empty($xmlIds) || in_array($xmlId, $xmlIds) and isModuleInstalled('blog'))
			{
				$arResult[] = array(
					'ID'             => $xmlId,
					'LAST_NAME'      => getMessage('DAV_BLOG_POST_CONTACT_NAME') . '(' .  $siteName . ')',
					'EMAIL'          => reset(BitrixMailUser::getForwardTo($arSite['LID'], $USER->getId(), 'BLOG_POST')),
					'WORK_WWW'       => $server_name,
					'TIMESTAMP_X'    => $timestampX,
					'PERSONAL_PHOTO' => array('src' => '/bitrix/modules/dav/images/addressbook/feed.png')
				);
			}

			$xmlId = 'task-'.$arSite['LID'];
			if (empty($xmlIds) || in_array($xmlId, $xmlIds) and isModuleInstalled('tasks'))
			{
				$arResult[] = array(
					'ID'             => $xmlId,
					'LAST_NAME'      => getMessage('DAV_TASK_CONTACT_NAME') . '(' .  $siteName . ')',
					'EMAIL'          => reset(BitrixMailUser::getForwardTo($arSite['LID'], $USER->getId(), 'TASKS_TASK')),
					'WORK_WWW'       => $server_name,
					'TIMESTAMP_X'    => $timestampX,
					'PERSONAL_PHOTO' => array('src' => '/bitrix/modules/dav/images/addressbook/task.png')
				);
			}
		}
	}

	return $arResult;
}