• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_contact_list.php
  • Класс: CAllIMContactList
  • Вызов: CAllIMContactList::PrepareUserIds
static function PrepareUserIds($userIds, $searchMark = '')
{
	$portalId = Array();
	$networkId = Array();
	$structureId = Array();
	foreach ($userIds as $userId)
	{
		if (mb_substr($userId, 0, 7) == 'network')
		{
			$networkId[$userId] = mb_substr($userId, 7);
		}
		elseif (mb_substr($userId, 0, 10) == 'department')
		{
			$sid = intval(mb_substr($userId, 10));
			if ($sid > 0)
			{
				$structureId[$userId] = $sid;
			}
		}
		elseif (mb_substr($userId, 0, 9) == 'structure')
		{
			$sid = intval(mb_substr($userId, 9));
			if ($sid > 0)
			{
				$structureId[$userId] = $sid;
			}
		}
		else
		{
			$userId = intval($userId);
			if ($userId > 0)
			{
				$portalId[$userId] = $userId;
			}
		}
	}
	if (!empty($networkId) && CModule::IncludeModule('socialservices'))
	{
		$network = new BitrixSocialservicesNetwork();
		$networkEnabled = $network->isEnabled();
		if ($networkEnabled)
		{
			$users = $network->addUsersById($networkId, $searchMark);
			if ($users)
			{
				foreach ($users as $networkId => $userId)
				{
					$portalId['network'.$networkId] = $userId;
				}
			}
		}
	}
	if (!empty($structureId) && CModule::IncludeModule('intranet'))
	{
		$orm = BitrixMainUserTable::getList(Array(
			'select' => Array('ID', 'UF_DEPARTMENT'),
			'filter' => Array('=ACTIVE' => 'Y', '=UF_DEPARTMENT' => array_values($structureId))
		));
		while ($row = $orm->fetch())
		{
			$portalId[$row['ID']] = $row['ID'];
		}
	}

	return $portalId;
}