• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_messenger.php
  • Класс: CIMMessenger
  • Вызов: CIMMessenger::GetEventByCounterGroup
static function GetEventByCounterGroup($events, $maxUserInGroup = 100)
{
	$groups = Array();
	foreach ($events as $userId => $event)
	{
		$eventCode = $event['groupId'];
		if (!isset($groups[$eventCode]))
		{
			$groups[$eventCode]['event'] = $event;
		}
		$groups[$eventCode]['users'][] = $userId;
		$groups[$eventCode]['count'] = count($groups[$eventCode]['users']);
	}

	BitrixMainTypeCollection::sortByColumn($groups, Array('count' => SORT_DESC));

	$count = 0;
	$finalGroup = Array();
	foreach ($groups as $eventCode => $event)
	{
		if ($count >= $maxUserInGroup)
		{
			if (isset($finalGroup['other']))
			{
				$finalGroup['other']['users'] = array_unique(array_merge($finalGroup['other']['users'], $event['users']));
			}
			else
			{
				$finalGroup['other'] = $event;
				$finalGroup['other']['event']['params']['counter'] = 100;
			}
		}
		else
		{
			$finalGroup[$eventCode] = $event;
		}
		$count++;
	}

	BitrixMainTypeCollection::sortByColumn($finalGroup, Array('count' => SORT_ASC));

	return $finalGroup;
}