• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/managers/outgoingmanager.php
  • Класс: BitrixCalendarSyncManagersOutgoingManager
  • Вызов: OutgoingManager::subscribeConnection
public function subscribeConnection(): Result
{
	$mainResult = new Result();
	if ($this->syncManager->canSubscribeConnection())
	{
		$pushManager = new SyncManagersPushManager();
		$subscription = $pushManager->getPush(
			PushManager::TYPE_CONNECTION,
			$this->connection->getId()
		);

		if ($subscription && !$subscription->isExpired())
		{
			$result = $this->syncManager->renewPush($subscription);
			if ($result->isSuccess())
			{
				$mainResult = $pushManager->renewPush($subscription, $result->getData());
			}
			else
			{
				$mainResult->addError(new Error('Error of renew subscription.'));
				$mainResult->addErrors($result->getErrors());
			}
		}
		else
		{
			$subscribeResult = $this->syncManager->subscribeConnection();
			if ($subscribeResult->isSuccess())
			{
				if ($subscription !== null)
				{
					$pushManager->renewPush($subscription, $subscribeResult->getData());
				}
				else
				{
					$pushManager->addPush(
						'CONNECTION',
						$this->connection->getId(),
						$subscribeResult->getData()
					);
				}
			}
			else
			{
				$mainResult->addError(new Error('Error of add subscription.'));
				$mainResult->addErrors($subscribeResult->getErrors());
			}
		}
	}

	return $mainResult;
}