• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar.php
  • Класс: CCalendar
  • Вызов: CCalendar::UpdateCounter
static function UpdateCounter($users = false)
{
	if (!$users)
	{
		$users = array(self::GetCurUserId());
	}
	elseif(!is_array($users))
	{
		$users = array($users);
	}

	$ids = [];
	foreach($users as $user)
	{
		if ((int)$user)
		{
			$ids[] = (int)$user;
		}
	}
	$users = $ids;

	if (!empty($users))
	{
		$events = CCalendarEvent::GetList([
			'arFilter' => [
				'CAL_TYPE' => 'user',
				'OWNER_ID' => $users,
				'FROM_LIMIT' => self::Date(time(), false),
				'TO_LIMIT' => self::Date(time() + self::DAY_LENGTH * 90, false),
				'IS_MEETING' => 1,
				'MEETING_STATUS' => 'Q',
				'DELETED' => 'N',
			],
			'parseRecursion' => false,
			'checkPermissions' => false
		]);

		$counters = [];
		foreach($events as $event)
		{
			if(!isset($counters[$event['OWNER_ID']]))
			{
				$counters[$event['OWNER_ID']] = 0;
			}

			$counters[$event['OWNER_ID']]++;
		}

		foreach($users as $user)
		{
			if($user > 0)
			{
				if(isset($counters[$user]) && $counters[$user] > 0)
				{
					CUserCounter::Set($user, 'calendar', $counters[$user], '**', '', false);
				}
				else
				{
					CUserCounter::Set($user, 'calendar', 0, '**', '', false);
				}
			}
		}
	}
}