• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/integration/im/chat/workgroup.php
  • Класс: BitrixSocialnetworkIntegrationImChatWorkgroup
  • Вызов: Workgroup::getChatData
static function getChatData($params)
{
	$result = array();

	if (
		!array($params)
		|| !isset($params['group_id'])
		|| !self::getUseChat()
		|| !Loader::includeModule('im')
	)
	{
		return $result;
	}

	if (!is_array($params['group_id']))
	{
		$params['group_id'] = array($params['group_id']);
	}

	$cacheKey = serialize($params);
	if (isset(self::$staticCache[$cacheKey]))
	{
		return self::$staticCache[$cacheKey];
	}

	$params['group_id'] = array_values(array_unique(array_filter(array_map(
		function($groupId) {
			return (is_array($groupId) || intval($groupId) <= 0 ? false : intval($groupId));
		},
		$params['group_id']
	))));

	if (
		!isset($params['skipAvailabilityCheck'])
		|| !$params['skipAvailabilityCheck']
	)
	{
		foreach($params['group_id'] as $key => $value)
		{
			if (!self::getGroupChatAvailable($value))
			{
				unset($params['group_id'][$key]);
			}
		}
	}

	$res = ChatTable::getList(array(
		'select' => Array('ID', 'ENTITY_ID'),
		'filter' => array(
			'=ENTITY_TYPE' => self::CHAT_ENTITY_TYPE,
			'@ENTITY_ID' => $params['group_id']
		)
	));
	while ($chat = $res->fetch())
	{
		$result[$chat['ENTITY_ID']] = $chat['ID'];
	}

	self::$staticCache[$cacheKey] = $result;

	return $result;
}