• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar_sync.php
  • Класс: CCalendarSync
  • Вызов: CCalendarSync::GetSyncInfo
static function GetSyncInfo($params = [])
{
	$userId = CCalendar::getCurUserId();
	$macSyncInfo = self::GetSyncInfoItem($userId, 'mac');
	$iphoneSyncInfo = self::GetSyncInfoItem($userId, 'iphone');
	$androidSyncInfo = self::GetSyncInfoItem($userId, 'android');
	$outlookSyncInfo = self::GetMultipleSyncInfoItem($userId, 'outlook');
	$exchangeSyncInfo = self::GetSyncInfoItem($userId, 'exchange');

	$bExchangeConnected = false;
	$bExchange = false;
	if (Loader::includeModule('dav'))
	{
		$bExchange = CCalendar::IsExchangeEnabled() && $params['type'] === 'user';
		$bExchangeConnected = $bExchange && CDavExchangeCalendar::IsExchangeEnabledForUser($userId);
	}

	$calculateTimestamp = self::getTimestampWithUserOffset($userId);

	$syncInfo = [
		'mac' => [
			'type' => 'mac',
			'active' => true,
			'connected' => $macSyncInfo['connected'],
			'status' => $macSyncInfo['status'],
			'syncOffset' => time() - $calculateTimestamp($macSyncInfo['date']),
		],
		'iphone' => [
			'type' => 'iphone',
			'active' => true,
			'connected' => $iphoneSyncInfo['connected'],
			'status' => $iphoneSyncInfo['status'],
			'syncOffset' => time() - $calculateTimestamp($iphoneSyncInfo['date']),

		],
		'android' => [
			'type' => 'android',
			'active' => true,
			'connected' => $androidSyncInfo['connected'],
			'status' => $androidSyncInfo['status'],
			'syncOffset' => time() - $calculateTimestamp($androidSyncInfo['date']),
		],
		'outlook' => [
			'type' => 'outlook',
			'active' => true,
			'connected' => $outlookSyncInfo['connected'],
			'status' => $outlookSyncInfo['status'],
			'infoBySections' => ($outlookSyncInfo['infoBySections'] ?? ''),
			'syncOffset' => time() - $calculateTimestamp($outlookSyncInfo['date'] ?? false),
		],
	];

	if (!Loader::includeModule('bitrix24'))
	{
		$syncInfo['exchange'] = [
			'type' => 'exchange',
			'active' => $bExchange,
			'connected' => $bExchangeConnected,
			'status' => $exchangeSyncInfo['status'],
			'syncOffset' => time() - $calculateTimestamp($exchangeSyncInfo['date']),
		];
	}

	$caldavConnections = self::GetCaldavItemsInfo($userId, $params['type'], $calculateTimestamp);
	if (is_array($caldavConnections))
	{
		$syncInfo = array_merge($syncInfo, $caldavConnections);
	}

	return $syncInfo;
}