• Модуль: 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'
			]);
		}
	}
}