- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/urlrewriter.php
- Класс: BitrixMainUrlRewriter
- Вызов: UrlRewriter::reindexFile
static function reindexFile($siteId, $rootPath, $path, $maxFileSize = 0)
{
$pathAbs = IOPath::combine($rootPath, $path);
if (!static::checkPath($pathAbs))
return 0;
$file = new IOFile($pathAbs);
if ($maxFileSize > 0 && $file->getSize() > $maxFileSize * 1024)
return 0;
$fileSrc = $file->getContents();
if (!$fileSrc || $fileSrc == "")
return 0;
$arComponents = PHPParser::parseScript($fileSrc);
for ($i = 0, $cnt = count($arComponents); $i < $cnt; $i++)
{
$sef = (is_array($arComponents[$i]["DATA"]["PARAMS"]) && $arComponents[$i]["DATA"]["PARAMS"]["SEF_MODE"] == "Y");
ComponentParametersTable::add(
array(
'SITE_ID' => $siteId,
'COMPONENT_NAME' => $arComponents[$i]["DATA"]["COMPONENT_NAME"],
'TEMPLATE_NAME' => $arComponents[$i]["DATA"]["TEMPLATE_NAME"],
'REAL_PATH' => $path,
'SEF_MODE' => ($sef? ComponentParametersTable::SEF_MODE : ComponentParametersTable::NOT_SEF_MODE),
'SEF_FOLDER' => ($sef? $arComponents[$i]["DATA"]["PARAMS"]["SEF_FOLDER"] : null),
'START_CHAR' => $arComponents[$i]["START"],
'END_CHAR' => $arComponents[$i]["END"],
'PARAMETERS' => serialize($arComponents[$i]["DATA"]["PARAMS"]),
)
);
if ($sef)
{
if (array_key_exists("SEF_RULE", $arComponents[$i]["DATA"]["PARAMS"]))
{
$ruleMaker = new UrlRewriterRuleMaker;
$ruleMaker->process($arComponents[$i]["DATA"]["PARAMS"]["SEF_RULE"]);
$arFields = array(
"CONDITION" => $ruleMaker->getCondition(),
"RULE" => $ruleMaker->getRule(),
"ID" => $arComponents[$i]["DATA"]["COMPONENT_NAME"],
"PATH" => $path,
"SORT" => self::DEFAULT_SORT,
);
}
else
{
$arFields = array(
"CONDITION" => "#^".$arComponents[$i]["DATA"]["PARAMS"]["SEF_FOLDER"]."#",
"RULE" => "",
"ID" => $arComponents[$i]["DATA"]["COMPONENT_NAME"],
"PATH" => $path,
"SORT" => self::DEFAULT_SORT,
);
}
static::add($siteId, $arFields);
}
}
return true;
}