• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/integration/ui/entityselector/projecttagprovider.php
  • Класс: BitrixSocialNetworkIntegrationUIEntitySelectorProjectTagProvider
  • Вызов: ProjectTagProvider::getTags
static function getTags(array $options = []): EO_WorkgroupTag_Collection
{
	$query = WorkgroupTagTable::query();
	$query->setSelect(['NAME', 'GROUP_ID']);

	if (($options['selected'] ?? null) && $options['groupId'])
	{
		$query->where('GROUP_ID', $options['groupId']);
	}

	if (!empty($options['searchQuery'] ?? null) && is_string($options['searchQuery']))
	{
		$query
			->setDistinct(true)
			->registerRuntimeField(
				'G',
				new ReferenceField(
					'G',
					WorkgroupTable::getEntity(),
					Join::on('this.GROUP_ID', 'ref.ID'),
					['join_type' => 'left']
				)
			)
			->registerRuntimeField(
				'UG',
				new ReferenceField(
					'UG',
					UserToGroupTable::getEntity(),
					Join::on('this.GROUP_ID', 'ref.GROUP_ID'),
					['join_type' => 'left']
				)
			)
			->where(
				Query::filter()
					->logic('or')
					->where('G.VISIBLE', 'Y')
					->where(
						Query::filter()
							->whereNotNull('UG.ID')
							->whereIn('UG.ROLE', UserToGroupTable::getRolesMember())
					)
			)
			->whereLike('NAME', "{$options['searchQuery']}%")
		;
	}

	return $query->exec()->fetchCollection();
}