- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/lib/sync/managers/pushwatchingmanager.php
- Класс: BitrixCalendarSyncManagersPushWatchingManager
- Вызов: PushWatchingManager::doFixWatchConnectionChannels
private function doFixWatchConnectionChannels(): void
{
$query = DavConnectionTable::query()
->setSelect(['ID'])
->registerRuntimeField('PUSH',
new ReferenceField(
'PUSH',
PushTable::getEntity(),
[
'=this.ID' => 'ref.ENTITY_ID',
'ref.ENTITY_TYPE' => ['?', self::TYPE_CONNECTION]
],
['join_type' => Join::TYPE_LEFT]
)
)
->where('IS_DELETED', 'N')
->where('ACCOUNT_TYPE', self::GOOGLE_CONNECTION)
->whereIn('LAST_RESULT', ['success', '[200] OK'])
->whereNull('PUSH.ENTITY_TYPE')
->setLimit(self::FIX_LIMIT)
->exec()
;
while ($row = $query->fetch())
{
try
{
$manager = $this->getOutgoingManager($row['ID']);
$manager->subscribeConnection();
}
catch (Exception $e)
{
DavConnectionTable::update($row['ID'], [
'LAST_RESULT' => '['. $e->getCode() .'] ERR'
]);
}
}
}