127 $resultNoHash =
array();
128 $resultWithHash =
array();
129 $resultWithGreedy =
array();
131 foreach ($arUrlTemplates as $pageID => $pageTemplate)
133 $pos = mb_strpos($pageTemplate,
"?");
135 $pageTemplate = mb_substr($pageTemplate, 0, $pos);
138 $resultNoHash[$pageID] = $pageTemplate;
140 $resultWithGreedy[$pageID] = $pageTemplate;
142 $resultWithHash[$pageID] = $pageTemplate;
144 $bHasGreedyPartsInTemplates = !empty($resultWithGreedy);
145 return array_merge($resultNoHash, $resultWithHash, $resultWithGreedy);
159 if (!empty($this->greedyParts))
161 $pageTemplateReg = preg_replace(
"'#(?:".implode(
"|", $this->greedyParts).
")#'",
"(.+?)", $pageTemplate);
162 $pageTemplateReg = preg_replace(
"'#[^#]+?#'",
"([^/]+?)", $pageTemplateReg);
166 $pageTemplateReg = preg_replace(
"'#[^#]+?#'",
"([^/]+?)", $pageTemplate);
169 if (mb_substr($pageTemplateReg, -1, 1) ==
"/")
170 $pageTemplateReg .=
"index\\.php";
173 if (preg_match(
"'^".$pageTemplateReg.
"$'", $currentPageUrl,
$arValues))
175 $arMatches =
array();
176 if (preg_match_all(
"'#([^#]+?)#'", $pageTemplate, $arMatches))
178 for (
$i = 0, $cnt =
count($arMatches[1]);
$i < $cnt;
$i++)
214 if (!isset($arVariables) || !is_array($arVariables))
215 $arVariables =
array();
217 if ($requestURL ===
false)
218 $requestURL = Bitrix\Main\Context::getCurrent()->getRequest()->getRequestedPage();
220 $folder404 = str_replace(
"\\",
"/", $folder404);
221 if ($folder404 !=
"/")
222 $folder404 =
"/".trim($folder404,
"/ \t\n\r\0\x0B").
"/";
225 if(mb_strpos($requestURL, $folder404) !== 0)
228 $currentPageUrl = mb_substr($requestURL, mb_strlen($folder404));
229 $this->cacheSalt = md5($currentPageUrl);
231 $pageCandidates =
array();
232 $arUrlTemplates = $this->
sortUrlTemplates($arUrlTemplates, $bHasGreedyPartsInTemplates);
234 $bHasGreedyPartsInTemplates
235 && is_callable($this->resolveCallback)
238 foreach ($arUrlTemplates as $pageID => $pageTemplate)
240 $arVariablesTmp = $arVariables;
241 if ($this->__CheckPath4Template($pageTemplate, $currentPageUrl, $arVariablesTmp))
245 $arVariables = $arVariablesTmp;
250 $pageCandidates[$pageID] = $arVariablesTmp;
257 foreach ($arUrlTemplates as $pageID => $pageTemplate)
259 if ($this->__CheckPath4Template($pageTemplate, $currentPageUrl, $arVariables))
266 if (!empty($pageCandidates) && is_callable($this->resolveCallback))
268 return call_user_func_array($this->resolveCallback,
array($this, $pageCandidates, &$arVariables));
285 if (!isset($arVariables) || !is_array($arVariables))
286 $arVariables =
array();
290 if (array_key_exists($componentPage, $arVariableAliases) && is_array($arVariableAliases[$componentPage]))
292 foreach ($arVariableAliases[$componentPage] as $variableName => $aliasName)
293 if (!array_key_exists($variableName, $arVariables) && array_key_exists($aliasName,
$_REQUEST))
294 $arVariables[$variableName] =
$_REQUEST[$aliasName];
299 foreach ($arVariableAliases as $variableName => $aliasName)
300 if (!array_key_exists($variableName, $arVariables))
301 if (is_string($aliasName) && array_key_exists($aliasName,
$_REQUEST))
302 $arVariables[$variableName] =
$_REQUEST[$aliasName];