• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/urlmanager.php
  • Класс: BitrixDiskUrlManager
  • Вызов: UrlManager::resolvePathComponentEngine
public function resolvePathComponentEngine(CComponentEngine $engine, $pageCandidates, &$variables)
{
	$component = $engine->getComponent();
	if(!$component)
	{
		$pageId = key($pageCandidates);
		$variables = current($pageCandidates);

		return $pageId;
	}
	/** @var Storage $storage */
	$storage = $component->arParams['STORAGE'];

	foreach ($pageCandidates as $pageId => $variablesTmp)
	{
		if(isset($variablesTmp["PATH"]) && is_string($variablesTmp["PATH"]) && $variablesTmp["PATH"] <> '')
		{
			$variables = array_merge($variablesTmp, $this->resolvePathToFolder($storage, $variablesTmp["PATH"]));
			if(empty($variables['FOLDER_ID']))
			{
				return '';
			}
			return $pageId;
		}
		elseif(isset($variablesTmp["FILE_PATH"]) && is_string($variablesTmp["FILE_PATH"]) && $variablesTmp["FILE_PATH"] <> '')
		{
			$variables = array_merge($variablesTmp, $this->resolvePathToFile($storage, $variablesTmp["FILE_PATH"]));
			if(empty($variables['FILE_ID']))
			{
				return '';
			}
			return $pageId;
		}
		elseif(isset($variablesTmp["TRASH_PATH"]) && is_string($variablesTmp["TRASH_PATH"]) && $variablesTmp["TRASH_PATH"] <> '')
		{
			$variables = array_merge($variablesTmp, $this->resolvePathToTrashFolder($storage, $variablesTmp["TRASH_PATH"]));
			if(empty($variables['FOLDER_ID']))
			{
				return '';
			}
			return $pageId;
		}
		elseif(isset($variablesTmp["TRASH_FILE_PATH"]) && is_string($variablesTmp["TRASH_FILE_PATH"]) && $variablesTmp["TRASH_FILE_PATH"] <> '')
		{
			$variables = array_merge($variablesTmp, $this->resolvePathToTrashFile($storage, $variablesTmp["TRASH_FILE_PATH"]));
			if(empty($variables['FILE_ID']))
			{
				return '';
			}
			return $pageId;
		}
	}

	$pageId = key($pageCandidates);
	$variables = current($pageCandidates);

	return $pageId;
}