- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/lib/controller/syncajax.php
- Класс: BitrixCalendarControllerSyncAjax
- Вызов: SyncAjax::createGoogleConnectionAction
public function createGoogleConnectionAction(): array
{
if (!CCalendar::isGoogleApiEnabled())
{
$this->addError(new Error(Loc::getMessage('EC_SYNCAJAX_GOOGLE_API_REQUIRED'), 'google_api_required'));
}
if (!Loader::includeModule('dav'))
{
$this->addError(new Error(Loc::getMessage('EC_SYNCAJAX_DAV_REQUIRED'), 'dav_required'));
}
$response = [
'status' => 'error',
'message' => 'Could not finish sync.'
];
$owner = Helper::getRole(CCalendar::GetUserId(), User::TYPE);
$pusher = static function ($result) use ($owner)
{
Util::addPullEvent(
'process_sync_connection',
$owner->getId(),
(array) $result
);
if ($result['stage'] === 'export_finished')
{
NotificationManager::addFinishedSyncNotificationAgent(
$owner->getId(),
$result['vendorName']
);
}
};
if(empty($this->getErrors()))
{
try
{
$manager = new GoogleStartSynchronizationManager($owner->getId());
FlagRegistry::getInstance()->setFlag(SyncDictionary::FIRST_SYNC_FLAG_NAME);
if ($connection = $manager->addStatusHandler($pusher)->start())
{
$response = [
'status' => 'success',
'message' => 'CONNECTION_CREATED',
'connectionId' => $connection->getId(),
];
}
FlagRegistry::getInstance()->resetFlag(SyncDictionary::FIRST_SYNC_FLAG_NAME);
}
catch (BaseException $e)
{
}
}
return $response;
}