]+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("/$v) { if (strpos($v,'popupTable')!==false) { $out_flag=true; $content_flag=true;} if ($content_flag && strpos($v,'return')!==false) $out_flag=false; if ($tt_flag && strpos($v,'pageBodyContainer')) { $out_flag=false; $result.='
'."\n"; $result.='
'."\n"; } if ($out_flag) $result.=$v."\n"; if (strpos($v,'popup')!==false) $tt_flag=true; } $result.=''; $result.="
\n\n"; $result.=''; } else { $result.=" "; } /* */ /* */ echo $result; ?>