$val) { if(!is_array($array[$key])) { $array[$key] = Filter::RemoveXSS($array[$key]); } else { RemoveXSS($array[$key]); } } } RemoveXSS($_GET); RemoveXSS($_POST); RemoveXSS($_COOKIE); Filter::RemoveXSS($_SERVER['HTTP_USER_AGENT']); // zabezpieczenie przed spacjami if(is_array($_GET)) { foreach($_GET as $key => $val) { if(strpos($val, " ") !== false || strpos($val, "/**/") !== false) { header('Location: /404.php'); die(); } } // ponizsze 2 linijki nalezy skasowac w projektach ktore przewiduja stringi w $_GET['id'] (np. forum) if (!empty($_GET['id'])) { $_GET['id'] = (int)$_GET['id']; } if (!empty($_GET['pageID'])) { $_GET['pageID'] = (int)$_GET['pageID']; } } // fukcje wspolne require_once 'inc/funkcje.inc.php'; // obsluga plikow require_once 'lib/IFile.php'; // poczatek testu wydajnosci require_once 'lib/Benchmark.php'; $_cfg['timer'] = new Benchmark(); $_cfg['timer']->start(); // obsluga bledow require_once 'inc/error.inc.php'; // konfiguracja sesji require_once 'inc/session.inc.php'; // plik configuracyjny $_cfg['timer']->start('CONFIG'); require_once 'inc/config.inc.php'; $_cfg['timer']->stop('CONFIG'); // klasa do obslugi plikow require_once 'lib/IFile.php'; // klasa obslugi formularzy require_once 'lib/HTMLForm.php'; // pager require_once 'lib/Pager.php'; require_once 'lib/Response.php'; // funkcja wybierajaca bloki do wyswietlenia function pobierzBloki() { global $db, $_cfg, $tpl; $regiony = array(); // sprawdzanie ustawien widocznosci regionow if(intval($_GET['id_kategorii']) > 0) $tmpSql = " AND id_kategorii = ".$_GET['id_kategorii']; else $tmpSql = " AND id_kategorii IS NULL"; $sql = " SELECT region FROM ".$_cfg['t_projekty_regiony']." WHERE id_projektu = ".$_GET['id_projektu']." AND lang = '".$_GET['lang']."' AND status = '0' AND region NOT IN ( SELECT region FROM ".$_cfg['t_kategorie_regiony']." WHERE id_projektu = ".$_GET['id_projektu']." AND lang = '".$_GET['lang']."' AND status = '1' ".$tmpSql." ) UNION SELECT region FROM ".$_cfg['t_kategorie_regiony']." WHERE id_projektu = ".$_GET['id_projektu']." AND lang = '".$_GET['lang']."' AND status = '0' ".$tmpSql." "; $disabled = $db->queryCol($sql); if(!is_array($disabled)) $disabled = array(); // wybieranie blokow if(intval($_GET['id_kategorii']) > 0) $tmpSql = " AND k.id_kategorii = ".$_GET['id_kategorii']; else $tmpSql = " AND k.id_kategorii IS NULL"; $sql = " SELECT p.id, p.nazwa, p.id_kategorii, p.konfiguracja, CASE WHEN k.id_bloku IS NULL THEN p.region ELSE k.region END AS region, CASE WHEN k.id_bloku IS NULL THEN p.pozycja ELSE k.pozycja END AS pozycja, b.symbol, m.symbol AS modul, m.prefix FROM ".$_cfg['t_projekty_bloki']." AS p LEFT JOIN ".$_cfg['t_kategorie_bloki']." AS k ON k.id_bloku = p.id AND k.id_projektu = ".$_GET['id_projektu']." AND k.lang = '".$_GET['lang']."' ".$tmpSql." LEFT JOIN ".$_cfg['t_bloki']." AS b ON b.id = p.id_bloku LEFT JOIN ".$_cfg['t_moduly']." AS m ON m.id = b.id_modulu WHERE p.id_projektu = ".$_GET['id_projektu']." AND p.lang = '".$_GET['lang']."' ORDER BY region ASC, pozycja ASC "; $res = $db->query($sql); while($row = $res->fetchRow()) { if(trim($row['region']) != "" && !in_array($row['region'], $disabled)) { $_cfg['blok']['id'] = $row['id']; $_cfg['blok']['symbol'] = $row['symbol']; $_cfg['blok']['id_kategorii'] = $row['id_kategorii']; $_cfg['blok']['prefix'] = $row['prefix']; $_cfg['blok']['modul'] = $row['modul']; $_cfg['blok']['pozycja'] = $row['region']; if(trim($row['konfiguracja']) != "") { $_cfg['blok']['konfiguracja'] = unserialize($row['konfiguracja']); } $regiony[$row['region']] .= $tpl->blok($row['symbol'], $row['nazwa'], $row['region']); } } return $regiony; } // funkcja zwraca kontent modulu function returnModul($id) { global $db, $_cfg, $tpl; return $tpl->modul($id); } if (empty($_cfg['baza_error'])) { // jesli serwer nie ma wlaczonej obslugi mod_rewrite, to wykonujemy reguly z pliku .htaccess po stronie php if($_cfg['mod_rewrite'] != true) { include 'inc/htaccess.inc.php'; } // podstawowe informacje o projekcie (id projektu, kompresja gzip, itp) require_once 'inc/projekt.inc.php'; // klasa do obslugi cache require_once 'Cache/Cache.php'; // utworzenie obiektu cache $cacheDir = 'gfx/'.$_SESSION['projekt']['symbol'].'/_cache/'; if(!file_exists($cacheDir)) { $f = new IFile(); $f->mkdir($cacheDir); $f->close(); } $_cfg['cache'] = new Cache('file', array('cache_dir' => $cacheDir)); // wygenerowanie unikalnego id dla strony $id = $_cfg['cache']->generateID($_SERVER['REQUEST_URI']); $params = $_cfg['cache']->get($id, 'page'); Response::NotModified(); if (!empty($params['html']) && IsPageCacheable($params)) { echo $params['html']; } else { // pozostale informacje o projekcie (template, lang, itp) require_once 'inc/naglowek.inc.php'; // glowna klasa obslugi szablonow require_once 'lib/Szablon.php'; // dodanie nawigacji require_once('lib/Nawigacja.php'); $tpl = &new Szablon($_GET['id_projektu'], $_cfg['szablon']); // projekt strony CMS'a // |-------------------| // | 1 | // |---|-----------|---| // | | 5 | | // | |-----------| | // | | | | // | 4 | 0/7 | 2 | // | | | | // | |-----------| | // | | 6 | | // |---|-----------|---| // | 3 | // |-------------------| // ustawienie zmiennej $bloki = array(); if(intval($_GET['id_kategorii']) > 0) { $modulHMTL = returnModul($_cfg['modul']['symbol']); } $bloki = pobierzBloki(); if(intval($_GET['id_kategorii']) > 0) { $bloki[0] = $modulHMTL; } // parsowanie strony $html = $tpl->page($bloki); // wyswietlenie strony echo $html; // zapisanie danych do cacheu if($tpl->IsPageCacheable == true) { $params['no_cache'] = $tpl->NoCache; $params['html'] = $html; $_cfg['cache']->save($id, $params, 0, 'page'); } } // zerwanie polaczenia z baza danych $_cfg['timer']->start('DISCONNECT'); $db->disconnect(); $_cfg['timer']->stop('DISCONNECT'); } else { printError($_cfg['baza_error']); } //echo $_cfg['debug']; // koniec testu if ($_cfg['debug'] >= '2') { $_cfg['timer']->stop(); $_cfg['timer']->display(); if ($_cfg['debug'] >= '3' && !empty($_SESSION['user']['login'])) { $_cfg['timer']->displayExt(); } } //echo floor(memory_get_usage()/1024).' KB'; if(!empty($_cfg['podglad_strony'])) { echo $_cfg['podglad_strony']; }