• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/controller/action/searchaction.php
  • Класс: BitrixDiskControllerActionSearchAction
  • Вызов: SearchAction::listIdsBySearch
protected function listIdsBySearch($searchQuery)
{
	$filter = [
		'=DELETED_TYPE' => ObjectTable::DELETED_TYPE_NONE,
		'STORAGE.USE_INTERNAL_RIGHTS' => true,
		'=STORAGE.MODULE_ID' => Driver::INTERNAL_MODULE_ID,
		'@STORAGE.ENTITY_TYPE' => [
			DiskProxyTypeUser::className(),
			DiskProxyTypeGroup::className(),
			DiskProxyTypeCommon::className(),
		],
	];

	$fulltextContent = DiskSearchFullTextBuilder::create()
		->addText($searchQuery)
		->getSearchValue()
	;

	if (!SearchContent::canUseFulltextSearch($fulltextContent))
	{
		return [];
	}

	if (ReindexHeadIndex::isReady())
	{
		$filter["*HEAD_INDEX.SEARCH_INDEX"] = $fulltextContent;
	}
	elseif (ReindexBaseObjectIndex::isReady())
	{
		$filter["*SEARCH_INDEX"] = $fulltextContent;
	}
	else
	{
		return [];
	}

	$securityContext = new DiskSecurityDiskSecurityContext($this->getCurrentUser()->getId());
	$parameters = Driver::getInstance()->getRightsManager()->addRightsCheck(
		$securityContext,
		[
			'select' => ['ID'],
			'filter' => $filter,
			'limit' => 30,
			'order' => [
				'UPDATE_TIME' => 'DESC',
			],
		],
		['ID', 'CREATED_BY']
	);

	$objectIds = [];
	foreach (ObjectTable::getList($parameters) as $row)
	{
		$objectIds[] = $row['ID'];
	}

	return $objectIds;
}