• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/managers/incomingmanager.php
  • Класс: BitrixCalendarSyncManagersIncomingManager
  • Вызов: IncomingManager::subscribeSection
private function subscribeSection(SectionConnection $link): Result
{
	$mainResult = new Result();
	if ($this->getSyncManager()->canSubscribeSection())
	{
		$pushManager = new PushManager();
		$subscription = $pushManager->getPush(
			PushManager::TYPE_SECTION_CONNECTION,
			$link->getId()
		);
		if ($subscription && !$subscription->isExpired())
		{
			$result = $this->getSyncManager()->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->getSyncManager()->subscribeSection($link);
			if ($subscribeResult->isSuccess())
			{
				if ($subscription !== null)
				{
					$pushManager->renewPush($subscription, $subscribeResult->getData());
				}
				else
				{
					$pushManager->addPush(
						'SECTION_CONNECTION',
						$link->getId(),
						$subscribeResult->getData()
					);
				}
			}
			else
			{
				$mainResult->addError(new Error('Error of add subscription.'));
				$mainResult->addErrors($subscribeResult->getErrors());
			}
		}
	}

	return $mainResult;
}