// удаляем все строки, кроме первой.
if(@$bSingleLine)
$BLOCK[$CurBlock]=ereg_Replace("[\r\n].*","",$BLOCK[$CurBlock]);
// Запускаем фильтры
_ProcessContent($CurBlock,$BLOCK[$CurBlock],$CURBLOCK_URL);
}
// Завершаем перехват потока вывода
ob_end_clean(); $Handled=0;
}
// Если имя блока задано (а это происходит практически всегда),
// значит, функция была вызвана нормальным образом, а не только для
// того, чтобы завершить вывод последнего блока (см. функцию Load()).
if($name!==false) {
// Перехватываем поток вывода
ob_start(); $Handled=1;
// Тело явно не задано, значит, нужно его получить путем
// перехвата выходного потока. Фактически, сейчас мы просто
// говорим системе, что текущий блок — $name, и что как только
// она встретит другой блок или конец файла, следует принять
// выведенные данные и записать их в массив.
if($value===false) {
$CurBlock=$name;
} else {
// Тело задано явно. Записать блок в массив, но все равно
// перехватить выходной поток (чтобы потом его проигнорировать).
_ProcessContent($name,$value,$CURBLOCK_URL);
$BLOCK[$name]=$value;
$CurBlock=false;
}
}
}
// Загружает файл с URL $name и добавляет блоки, которые в нем
// находились, к списку существующих блоков. Параметр $name может
// задавать относительный URL, в этом случае производится его
// поиск в глобальном массиве $INC (том же самом, который использует
// библиотекарь). Если в качестве $name задано не имя файла, а имя
// каталога, то анализируется файл .htaccess, расположенный
// в этом каталоге. На момент загрузки файла текущий каталог
// изменяется на тот, в котором расположен файл.
function Load($name)
{ global $BLOCK,$bSingleLine,$CURBLOCK_URL,$BLOCK_INC;
// Перевести все пути в $INC в абсолютные
AbsolutizeINC();
// Если путь относительный, ищем по $BLOCK_INC
$fname=false;