]+id=\"{$page}\"/",$xml_file) && !$isDynamic) {
$page = "error";
$object = "404";
}
}
}
if ($page=="error" && $object=="404") {
header("HTTP/1.0 404 Not Found");
/* */
}
TRACE_START();
//print_r($HTTP_GET_VARS);
// функции тайминга
/**
* Ф-я возвращает кол-во времени от начала
* эпохи Unix в микросекундах
*/
function getmicrotime() {
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
$time[begin] = getmicrotime();
function is_cached($id) {
global $config;
global $_SERVER;
$xml_file = $config[site][content][path]."/../_site/content.xml";
if ( file_exists("cache/".$id) && filesize("cache/".$id) > 0 ) {
if ( filemtime("cache/".$id) < filemtime($xml_file)) {
// Удаляем файл
unlink("cache/".$id);
return 0;
} else {
return 1;
}
}
return 0;
}
function cache($id, $data) {
$fh = fopen ("cache/".$id, "wb");
fwrite ($fh, $data);
fclose($fh);
}
function get_from_cache ($id) {
$fh = fopen ("cache/".$id, "rb");
$result = fread ($fh, filesize("cache/".$id));
fclose($fh);
return $result;
}
$MODIFILED_COOKIE_VARS = $HTTP_COOKIE_VARS;
$MODIFILED_COOKIE_VARS['PHPSESSID'] = $s_user;
$CACHE_FILENAME = md5(serialize(array_merge($HTTP_GET_VARS, $HTTP_POST_VARS, $MODIFILED_COOKIE_VARS)));
$APPLY_CACHE = ($s_editmode == "view") && is_file("{$config[site][admin][path]}/system/.caching");
$REDIRECT_LINKS = is_file("{$config[site][admin][path]}/system/.redirect_links");
$PRINTCSSEXISTS = is_file("{$config[site][admin][path]}/skin/print.css")?"yes":"no";
/* */
//////////////{{{{{{ APPLY_CACHE
if (!($APPLY_CACHE && is_cached($CACHE_FILENAME)) ) {
// проверяем, можно ли показывать сайт (предположительно посетителю)
if( $s_editmode=="view" && (is_file("{$config[site][admin][path]}/system/.construction") or is_file("{$config[site][admin][path]}/system/.construction_forced")) ) {
if( is_file("{$config[site][userdata][path]}/construction.html") ) {
header( "Location: /userdata/construction.html" );
exit();
}
readfile( $config['public']['url'].'/public/error/construction.html' );
exit();
}
// проставляем номер заказа
$id_order += 0;
if( $id_order == 0 ) {
$id_order_filename = "{$config[site][admin][path]}/system/.id_order";
$id_order = is_file( $id_order_filename ) ? @file_get_contents( $id_order_filename ) : 0;
$id_order++;
if( $fd=fopen( $id_order_filename, "w" ) ) {
fwrite( $fd, $id_order );
fclose( $fd );
}
/* */
$id_order .= ereg_replace("^0000","",$config[site][id]);
/* */
}
setcookie( "id_order", $id_order );
$browser_version = ereg("MSIE ([0-9.]+)", $HTTP_USER_AGENT, $regs)
? $regs[0]
: '';
//////////////////////////////////////////////// Начало основной части ////////////////////////////////////////////////
$tries = 0;
$result = '';
do {
//
// логический кусок, получающий id страницы.
//
$standard_page_aliases = $config[standard_page_aliases];
if ( in_array($_GET[page], array_keys($standard_page_aliases)) ){
$content_type_to_find = $standard_page_aliases[$_GET[page]];
// создаем парсер
$xh = xslt_create();
// читаем параметры
$parameters_ = array(
"content_type" => $content_type_to_find,
"page_id" => $_GET[page]
);
$arguments_ = array();
$xml_file = $config[site][content][path]."/content.xml";
$xsl_file = $_SERVER['DOCUMENT_ROOT']."/system/page_exists.xsl";
$fh = fopen($xml_file, "rb");
$xmldata = fread($fh, filesize($xml_file));
fclose($fh);
$arguments_[xmldata] = $xmldata;
if ($config[OS] == 'Win32' ) {
$xml_file = 'file://'.$xml_file;
$xsl_file = 'file://'.$xsl_file;
}
// Проверяем существование страницы с переданным id
if (xslt_process($xh, 'arg:/xmldata', $xsl_file, null, $arguments_, $parameters_) == "") {
// Загружаем External Content
$xmldata = preg_replace( "/<([a-zA-Z0-9:]*) ([^>]*?)contentExternal=\"([^\"]*)\"(\/>|>)/e" , "''.getExternalContent2('{$config[site][content][path]}/contents/\\3').''", $xmldata);
//$fh = fopen('c:\www\aaaaaaaa.xml', "wb");
//fwrite($fh, $xmldata);
//fclose($fh);
$arguments_[xmldata] = $xmldata;
$xsl_file = $_SERVER['DOCUMENT_ROOT']."/system/content_type2page_id.xsl";
if ($config[OS] == 'Win32' ) {
$xsl_file = 'file://'.$xsl_file;
}
$res = xslt_process($xh, 'arg:/xmldata', $xsl_file, null, $arguments_, $parameters_);
xslt_free($xh);
// echo "for content_type='{$content_type_to_find}' returned page_id='{$res}'.";
//exit ();
}
}
// конец логического куска
/*
// логический кусок, проверяющий возможность показа карзины заказа
if ($_GET['page']=="shoppingcart") {
// создаем парсер
$xh = xslt_create();
// читаем параметры
$parameters_ = array();
$arguments_ = array();
$xml_file = $config[site][content][path]."/content.xml";
$xsl_file = $_SERVER['DOCUMENT_ROOT']."/system/get_shoppingcart_page.xsl";
$fh = fopen($xml_file, "rb");
$xmldata = fread($fh, filesize($xml_file));
fclose($fh);
// Загружаем External Content
$xmldata = preg_replace( "/<([a-zA-Z0-9:]*) ([^>]*?)contentExternal=\"([^\"]*)\"(\/>|>)/e" , "''.getExternalContent2('{$config[site][content][path]}/contents/\\3').''", $xmldata);
$arguments_[xmldata] = $xmldata;
if ($config[OS] == 'Win32' ) {
$xml_file = 'file://'.$xml_file;
$xsl_file = 'file://'.$xsl_file;
}
//$fh = fopen('c:\www\aaaaaaaa.xml', "wb");
//fwrite($fh, $xmldata);
//fclose($fh);
$res = xslt_process($xh, 'arg:/xmldata', $xsl_file, null, $arguments_, $parameters_);
xslt_free($xh);
//echo $res.'!!!';
//exit ();
}
// конец логического куска
*/
// создаем парсер
$XSLTparser = xslt_create();
// читаем параметры
$parameters = array();
$arguments = array();
if ($HTTP_GET_VARS[language]) {
$language = $HTTP_GET_VARS[language];
} elseif($HTTP_COOKIE_VARS[language]) {
$language = $HTTP_COOKIE_VARS[language];
}else {
if (file_exists("{$config[site][admin][path]}/system/.defaultlang")) {
$language = @file_get_contents("{$config[site][admin][path]}/system/.defaultlang");
} else {
$language = 'rus';
}
}
if ($language) $parameters[language] = ($language ? $language : 'rus');
if ($res!="") {
$page = $res;
}
header("Content-type: text/html".($language=="eng"?"":";charset=windows-1251"));
header("Content-Language: ".($language=="eng"?"en":"ru"));
header("Last-Modified:".date("r"));
if ($page) $parameters[page] = $page;
if ($subpage) $parameters[subpage] = $subpage;
if ($object) $parameters[object] = $object;
if ($s_editmode) $parameters[editmode] = $s_editmode;
if ($s_user) $parameters[s_user] = $s_user;
if ($s_username) $parameters[s_username] = iconv("WINDOWS-1251","UTF-8",$s_username);
if ($s_usermail) $parameters[s_usermail] = $s_usermail;
if ($s_groups) $parameters[s_groups] = ':'.join(':', $s_groups);
/* */
$parameters[s_superuser] = $config[site][domain];
/* */
/* */
if ($final_message) $parameters[final_message] = $final_message;
if ($poll_id) $parameters[poll_id] = $poll_id;
if ($browser_version) $parameters[browser_version] = $browser_version;
if (strpos($GLOBALS['REQUEST_URI'],'popup')!==false) $parameters[popup] = 'true';
else $parameters[popup] = 'false';
$parameters[domain] = $_SERVER_NAME;
$parameters[printcssexists] = $PRINTCSSEXISTS;
$parameters[editmode] = $s_editmode;
$parameters[id_order] = $id_order; // ID заказа
$parameters[provider_name] = $config[provider][name];
$parameters[w3c_compatible] = (is_file("{$config[site][skin][path]}/.w3c_compatible")?"true":"false");
$parameters[mould_keywords_on] = (is_file("{$config[site][admin][path]}/system/.mould_keywords_on")?"true":"false");
// Кто-то продал сайт владельцу этого сайта. если это был Менедежер, то его ID сохраняется в .id_dealer
// Менеджер сам является дилером поэтому id_daler нужно брать из .id_manager
$parameters[id_dealer] = trim(@file_get_contents("{$config[site][admin][path]}/system/.id_manager")); //
// получаем xml-страницу
$arguments[xmldata] = getXML($parameters,true, $archiveFile, $content_id);
$time[getXML] = getmicrotime();
$tmprand = md5(rand().microtime());
$xmlfilename = $config[site][root][path].'/content/xml.xml'.$tmprand;
$xslfilename = $config[site][root][path].'/content/xsl.xsl'.$tmprand;
$fp = fopen($xmlfilename,'w+');
fwrite($fp,$arguments[xmldata]);
fclose($fp);
// создаем xsl
$arguments[xsldata] = getXSL($arguments[xmldata], $parameters);
$time[getXSL] = getmicrotime();
$fp = fopen($xslfilename,'w+');
fwrite($fp,$arguments[xsldata]);
fclose($fp);
// выполняем xslt
if ($config[OS] == 'Win32') {
$result = xslt_process(
$XSLTparser,
'file://'.$config[site][root][path].'/'.$xmlfilename,
'file://'.$config[site][root][path].'/'.$xslfilename,
null,
$arguments,
$parameters
);
} else {
$result = xslt_process($XSLTparser, $xmlfilename, $xslfilename, null, $arguments, $parameters );
}
@unlink('content/xml.xml');
rename($xmlfilename,'content/xml.xml');
@unlink('content/xsl.xsl');
rename($xslfilename,'content/xsl.xsl');
# Удаляем $xmlfilename и $xslfilename #
@unlink($xmlfilename);
@unlink($xslfilename);
// освобождаем ресурс
xslt_free($XSLTparser);
//// {{{{{{{
//// {{{{{{{ FOR MOD REWRITE
//// {{{{{{{
/*
$result =
ereg_replace ("index.html\?page=([0-9a-zA-Z]*)&object=([0-9a-zA-Z]*)", "/\\1/\\2", $result );
$result =
ereg_replace ("index.html\?page=([0-9a-zA-Z]*)", "/\\1", $result );
$result =
ereg_replace ("/\?page=([0-9a-zA-Z]*)&object=([0-9a-zA-Z]*)", "/\\1/\\2", $result );
$result =
ereg_replace ("/\?page=([0-9a-zA-Z]*)", "/\\1", $result );
*/
//// }}}}}}}
//// }}}}}}}
//// }}}}}}}
$tries++;
}
while ( !$result && $tries < 3 ); // три раза пытаемся запустить саблотрон работать.
if ($APPLY_CACHE) {
// не кэшируем страницу /formresult
if (!preg_match("/sitesectionformresult/",$result)) {
cache($CACHE_FILENAME, $result);
}
}
if ($REDIRECT_LINKS) {
$result = preg_replace('/href="http:\/\/([^\"]*)"/s', 'href="/system/redirect.html?link=$1"', $result);
// $result = preg_replace('/href="([^#][^\/][^\".]*)"/s', 'href="/system/redirect.html?link=$1"', $result);
// $result = preg_replace('/href="(http[^\"]*)"/s', 'href="/system/redirect.html?link=$1"', $result);
}
if (preg_match('//',$result,$regs)) {
$url = trim($regs[1]);
if (!preg_match('/^http:/',$url)) {
$url = 'http://'.$_SERVER['SERVER_NAME'].'/'.$url;
$result = @file_get_contents($url);
}
}
} else {
$result = get_from_cache($CACHE_FILENAME);
}
//////////////}}}} APPLY_CACHE
// для работы скинмашины, включаем соотвествующую либу
if ($s_editmode=='preview')
$result .= "";
$time[xml2html] = getmicrotime();
//////////////////////////////////////////////// Конец основной части ////////////////////////////////////////////////
//$timing=1;
$timepoints = array_keys($time);
if($timing) {
for ( $i = 0; $i < sizeof($timepoints)-1; $i++ ) {
$result .= ($time[$timepoints[$i+1]]-$time[$timepoints[$i]])." ({$timepoints[$i+1]})
\n";
}
$result .= ($time[$timepoints[sizeof($timepoints)-1]]-$time[$timepoints[0]])." (total)
\n";
}
$result = preg_replace("/