• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/factories/factoriescollection.php
  • Класс: BitrixCalendarSyncFactoriesFactoriesCollection
  • Вызов: FactoriesCollection::createBySection
static function createBySection(Section $section): FactoriesCollection
{
	$collection = [];

	if (!Loader::includeModule('dav'))
	{
		return new self($collection);
	}

	$links = SectionConnectionTable::query()
		->setSelect(['*', 'CONNECTION'])
		->where('SECTION_ID', $section->getId())
		->where('CONNECTION.IS_DELETED', 'N')
		->whereIn('CONNECTION.ACCOUNT_TYPE', [
			SyncGoogleFactory::SERVICE_NAME,
			SyncIcloudFactory::SERVICE_NAME,
			SyncOffice365Factory::SERVICE_NAME,
		])
		->exec()
	;

	while ($link = $links->fetchObject())
	{
		$connection = (new SyncBuildersBuilderConnectionFromDM($link->getConnection()))->build();
		$context = new Context([
			'section_sync_data' => $link,
		]);

		$collection[] = FactoryBuilder::create(
			$connection->getVendor()->getCode(),
			$connection,
			$context
		);
	}

	return new self(array_filter($collection));
}