• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/managers/connectionmanager.php
  • Класс: BitrixCalendarSyncManagersConnectionManager
  • Вызов: ConnectionManager::initConnection
public function initConnection(Role $owner, string $accountType, string $server): Result
{
	$result = new Result();
	$resultData = [];
	try {
		if (!Loader::includeModule('dav'))
		{
			throw new LoaderException('Module dav is required');
		}
		$accountName = $this->getSocialUserLogin($owner, $accountType);
		if ($connection = $this->getConnection($owner, $accountType, ['=NAME' => $accountName]))
		{
			if ($connection->isDeleted())
			{
				$connection->setDeleted(false);
				$this->update($connection);
				$resultData['status'] = self::INIT_STATUS['activated'];
			}
			else
			{
				$resultData['status'] = self::INIT_STATUS['existed'];
			}
		}
		else
		{
			$connection = $this->createConnection(
				$owner,
				$accountType,
				$accountName,
				$server,
			);
			$resultData['status'] = self::INIT_STATUS['created'];
		}
		$resultData['connection'] = $connection;
	}
	catch (Exception $e)
	{
		$result->addError(new Error($e->getMessage()));
	}

	$result->setData($resultData);

	return $result;
}