if($name[0]!='/') {
// Перебираем все каталоги включения
foreach($BLOCK_INC as $v) {
$fname=Url2Path("$v/$name"); // Определяем имя файла
if(file_exists($fname)) { $name="$v/$name"; break; }
}
// Если не нашли, $fname остается равной false
} else {
// Абсолютный URL — перевести его в имя файла
$fname=Url2Path($name);
}
// Обрабатываем файл, имя которого вычислено по URL.
// Сначала проверяем, существует ли такой файл.
if($fname===false || !file_exists($fname))
die("Couldn't open \"$name\"!");
// Это каталог — значит, используем .htaccess
$Single=false;
if(@is_dir($fname)) {
$name.="/".Htaccess_Name;
$fname.="/".Htaccess_Name;
$Single=1;
}
// Если файла до сих пор не существует (это может случиться, когда
// мы предписали использовать .htaccess, а его в каталоге нет),
// "мирно" выходим. Ничего страшного, если в каталоге нет .htaccess'а.
if(!file_exists($fname)) return;
// Запускаем файл. Для этого сначала запоминаем текущее состояние
// и каталог, затем загружаем блоки файла (просто выполняем файл),
// а в конце восстанавливаем состояние.
$PrevSingle=$bSingleLine; $bSingleLine=@$Single;
$SaveDir=getcwd(); chdir(dirname($fname));
$SaveCBU=$CURBLOCK_URL; $CURBLOCK_URL=$name;
// Возможно, в файле присутствуют начальные пробелы или другие
// нежелательные символы (например, в .htaccess это может
// быть знак комментария). Все они включатся в блок с
// именем _PreBlockText (его вряд ли целесообразно использовать).
Block("_PreBlockText");
// Делаем доступными все глобальные переменные.
foreach($GLOBALS as $k=>$v) if(!@Isset($$k)) global $$k;
// Запускаем файл.
include $fname;
// Сигнализируем, что блоки закончились (достигнут конец файла).
// При этом чаще всего будет осуществлена запись данных последнего