• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar.php
  • Класс: CCalendar
  • Вызов: CCalendar::OnDavCalendarSync
static function OnDavCalendarSync(BitrixMainEvent $event)
{
	$calendarId = $event->getParameter('id');
	$userAgent = mb_strtolower($event->getParameter('agent'));
	$agent = false;
	[$sectionId, $entityType, $entityId] = $calendarId;

	$arAgentsMap = [
			'android' => 'android', // Android/iOS CardDavBitrix24
			'iphone' => 'iphone', // Apple iPhone iCal
			'davkit' => 'mac', // Apple iCal
			'mac os' => 'mac', // Apple iCal (Mac Os X > 10.8)
			'mac_os_x' => 'mac', // Apple iCal (Mac Os X > 10.8)
			'mac+os+x' => 'mac', // Apple iCal (Mac Os X > 10.10)
			'macos' => 'mac', // Apple iCal (Mac Os X > 11)
			'dataaccess' => 'iphone', // Apple addressbook iPhone
			//'sunbird' => 'sunbird', // Mozilla Sunbird
			'ios' => 'iphone',
	];

	foreach ($arAgentsMap as $pattern => $name)
	{
		if (mb_strpos($userAgent, $pattern) !== false)
		{
			$agent = $name;
			break;
		}
	}

	if ($entityType === 'user' && $agent)
	{
		self::SaveSyncDate($entityId, $agent);
	}
}