• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/managers/datasyncmanager.php
  • Класс: BitrixCalendarSyncManagersDataSyncManager
  • Вызов: DataSyncManager::syncConnection
private function syncConnection(Connection $connection): Result
{
	$result = new Result();
	$logger = null;

	if (
		RequestLogger::isEnabled()
	)
	{
		$logger = new RequestLogger($connection->getOwner()->getId(), $connection->getVendor()->getCode());
	}

	$client = $this->initClient($connection);

	$calendarsList = $client->GetCalendarList($connection->getServer()->getBasePath(), null);

	if ($client->getError())
	{
		$error = $this->processError($client->getError());
		$result->setData([
			'lastResult' => $error,
			'syncStatus' => false,
		]);

		return $result;
	}

	if (!$calendarsList || !is_array($calendarsList))
	{
		$result->setData([
			'lastResult' => '[204] No Content',
			'syncStatus' => true,
		]);

		return $result;
	}

	$calendarsList = $this->syncSections($connection, $calendarsList);

	foreach ($calendarsList as $calendar)
	{
		[$events, $eventsMap] = $this->getEventsToSync(
			$connection,
			$client,
			$calendar,
			$logger
		);

		if ($client->getError())
		{
			$error = $this->processError($client->getError());
			$result->setData([
				'lastResult' => $error,
				'syncStatus' => false,
			]);

			return $result;
		}

		foreach ($events as $event)
		{
			$this->modifyEvent(
				$connection,
				$client,
				$event,
				$eventsMap,
				$calendar
			);
		}
	}

	$result->setData([
		'lastResult' => '[200] OK',
		'syncStatus' => true,
	]);

	return $result;
}