modules_path = $_SERVER['DOCUMENT_ROOT'].'/site/modules/'; } /** * @desc Εισάγουμε ενα component στην μνήμη * * @param moduleName Το όνομα του module που πρέπει να είναι και το όνομα του αρχείου .php * @param path Αν δεν είναι στο root του /site/modules του λέμε σε ποιό φάκελο είναι * @param default Αν δεν ωρεί το module τότε φορτώνει αυτό που θα ορίσουμε default */ function registerModule($moduleName, $path, $template_module='') { $arr['name'] = $moduleName; $arr['path'] = $path; $arr['absolute_path'] = $this->modules_path.$path.($this->modules[$module_name]['path']!='' ? '/' : ''); $arr['default'] = $default; $arr['templateFile'] = $arr['absolute_path'].'/templates/'.$moduleName.'.tpl'; $arr['template_module'] = $template_module!='' ? $template_module : 'index'; $this->modules[$moduleName] = $arr; } /** * @desc Φορτώνουμε ένα component */ function loadModule($module_name, $params='') { if($module_name!=$this->exception) { global $smarty,$profil; if(BENCHMARK=='on') $profil->increase(); if(BENCHMARK=='on') $profil->add("start module",$module_name); $file = $this->modules_path.$this->modules[$module_name]['path'].($this->modules[$module_name]['path']!='' ? '/' : '').$this->modules[$module_name]['name'].'.php'; if($this->modules[$module_name]['name']=='') return 'Module ('.$module_name.') does\'t exists'; // Μας λέει αν υπάρχει template $template_exists = $this->templateExists($this->modules[$module_name]['name']); ob_start(); if($smarty->caching==true) { // Αν είμαστε σε κατάσταση κασαρίσματος if(!$smarty->is_cached($this->modules[$module_name]['templateFile'],$_SERVER['QUERY_STRING'])) { // κανε include το αρχείο μόνο αν δεν υπάρχει κασαρισμένη η σελίδα if(BENCHMARK=='on') $profil->add("is cached",$module_name); include($file); } } else { // σε οποιαδίποτε άλλη περίπτωση κάνε include if(BENCHMARK=='on') $profil->add("load php file1",$module_name); include($file); if(BENCHMARK=='on') $profil->add("load php file2",$module_name); } // Αν υπάρχει template τότε εμφανίζουμε το Smarty template if($template_exists==true) { if(BENCHMARK=='on') $profil->add("display smarty1",$module_name); $smarty->display($this->modules[$module_name]['templateFile'],$_SERVER['QUERY_STRING']); if(BENCHMARK=='on') $profil->add("display smarty2",$module_name); } $content = ob_get_contents(); ob_end_clean(); if(BENCHMARK=='on') $profil->decrease(); return $content; } else { return ''; } } /** * @desc Υπάρχει το module? */ function exists($module_name) { return $this->modules[$module_name]['name']!='' ? true : false; } /** * @desc Εμφανίζουμε το default module */ function loadDefaultModule() { foreach($this->modules as $module) { if($module['default']==true) { return $this->loadModule($module['name']); } } } /** * @desc Ελέγχουμε αν υπάρχει Smarty Template * @return true/false */ function templateExists($moduleName) { if(file_exists($this->modules[$moduleName]['templateFile'])) { return true; } else { return false; } } /** * @desc Χρησημοποιεί το $_GET['mod'] για να βρεί ποιό module θα εμφανίσει στο template μας * @return Το όνομα του module που πρέπει να φορτώσουμε */ function getCurrentModule() { return isset($_GET['mod']) ? $_GET['mod'] : 'main'; } /** * @desc Compress Page */ function compressTop() { $phpver = phpversion(); $useragent = (isset($_SERVER["HTTP_USER_AGENT"]) ) ? $_SERVER["HTTP_USER_AGENT"] : $HTTP_USER_AGENT; if ( $phpver >= '4.0.4pl1' && ( strstr($useragent,'compatible') || strstr($useragent,'Gecko') ) ) { if ( extension_loaded('zlib') ) { ob_start('ob_gzhandler'); } } else if ( $phpver > '4.0' ) { if ( strstr($HTTP_SERVER_VARS['HTTP_ACCEPT_ENCODING'], 'gzip') ) { if ( extension_loaded('zlib') ) { $do_gzip_compress = TRUE; ob_start(); ob_implicit_flush(0); header('Content-Encoding: gzip'); } } } } /** * @desc Compress Bottom */ function compressBottom() { // Compress buffered output if required and send to browser if ( $do_gzip_compress ) { // // Borrowed from php.net! // $gzip_contents = ob_get_contents(); ob_end_clean(); $gzip_size = strlen($gzip_contents); $gzip_crc = crc32($gzip_contents); $gzip_contents = gzcompress($gzip_contents, 2); $gzip_contents = substr($gzip_contents, 0, strlen($gzip_contents) - 4); echo "\x1f\x8b\x08\x00\x00\x00\x00\x00"; echo $gzip_contents; echo pack('V', $gzip_crc); echo pack('V', $gzip_size); } exit; } } ?>