/** * retourne vrai ou faux selon que le cache est rescent * @access public * @param string $sId * @param int $iMinute * @return bool */ public function isCached($sId, $iMinute = null) { $oFile = new _file(_root::getConfigVar('path.cache') . $sId . '.cache'); if ($oFile->exist()) { if ($iMinute == null) { return true; } else { if (time() - $oFile->filemtime() < $iMinute * 60) { return true; } } return false; } return false; }
/** * lance le framework (dispatch...) * @access public */ public function run() { try { self::loadConf(); self::loadAutoload(); self::loadRequest(); //parametrage du niveau d'erreur if (self::getConfigVar('site.mode') == 'dev') { error_reporting(E_ALL); } else { error_reporting(0); } self::getLog()->setInformation((int) self::getConfigVar('log.information')); self::getLog()->setWarning((int) self::getConfigVar('log.warning')); self::getLog()->setError((int) self::getConfigVar('log.error')); self::getLog()->setApplication((int) self::getConfigVar('log.application')); date_default_timezone_set(self::getConfigVar('site.timezone')); //auth if ((int) self::getConfigVar('auth.enabled') == 1) { self::getAuth()->enable(); } //desactivation des magic quotes if (get_magic_quotes_gpc()) { $_POST = array_map('stripslashes_deep', $_POST); $_GET = array_map('stripslashes_deep', $_GET); $_COOKIE = array_map('stripslashes_deep', $_COOKIE); $this->getRequest()->magic_quote(); } if ((int) self::getConfigVar('urlrewriting.enabled') == 1) { self::getUrlRewriting()->parseUrl($_SERVER['REQUEST_URI']); } $sModuleToLoad = self::getRequest()->getModule(); $sModuleActionToLoad = self::getRequest()->getAction(); /*LOG*/ self::getLog()->info('module a appeler [' . $sModuleToLoad . '::' . $sModuleActionToLoad . ']'); //chargement module/action $sClassModule = 'module_' . $sModuleToLoad; $oModule = new $sClassModule(); if (method_exists($oModule, '_' . $sModuleActionToLoad)) { /*LOG*/ self::getLog()->info('appel module [' . $sModuleToLoad . '::before]'); $oModule->before(); //pre action if (method_exists($oModule, 'before_' . $sModuleActionToLoad)) { /*LOG*/ self::getLog()->info('appel module [' . $sModuleToLoad . '::before_' . $sModuleActionToLoad . ']'); $sActionBefore = 'before_' . $sModuleActionToLoad; $oModule->{$sActionBefore}(); } //debut cache if ((int) self::getConfigVar('cache.enabled') == 1) { $sNomPageCache = 'cache_' . str_replace('::', '_', implode('_', self::getRequest()->getParams())) . '.html'; $oFichierCache = new _file(self::getConfigVar('path.cache') . $sNomPageCache); if ($oFichierCache->exist() and (int) self::getConfigVar('cache.lifetime') == 0 or $oFichierCache->exist() and time() - $oFichierCache->filemtime() < (int) self::getConfigVar('cache.lifetime')) { /*LOG*/ self::getLog()->info('utilisation page en cache [' . $sNomPageCache . ']'); echo $oFichierCache->getContent(); return; } ob_start(); } $sAction = '_' . $sModuleActionToLoad; /*LOG*/ self::getLog()->info('appel module [' . $sModuleToLoad . '::' . $sAction . ']'); $oModule->{$sAction}(); //post action if (method_exists($oModule, 'after_' . $sModuleActionToLoad)) { /*LOG*/ self::getLog()->info('appel module [' . $sModuleToLoad . '::after_' . $sModuleActionToLoad . ']'); $sActionAfter = 'after_' . $sModuleActionToLoad; $oModule->{$sActionAfter}(); } //post module /*LOG*/ self::getLog()->info('appel module [' . $sModuleToLoad . '::after]'); $oModule->after(); //fin cache if ((int) self::getConfigVar('cache.enabled') == 1) { $sSortie = ob_get_contents(); ob_end_clean(); $oFichierCache->write($sSortie . "\n<!--cache -->"); echo $sSortie; } } else { $tErreur = array('Erreur dans module/' . $sModuleToLoad . '/main.php', 'Pas de méthode _' . $sModuleActionToLoad . '() dans le module "' . $sModuleToLoad . '" à charger', 'Note: vous pouvez modifier le couple module/action par defaut ', 'en modifiant la section [navigation] dans le fichier conf/site.ini.php'); throw new Exception(implode("\n", $tErreur)); } } catch (Exception $e) { self::erreurLog($e->getMessage() . "\n" . self::showException($e), $e); } }