/** * Lance le controller indiqué dans Request * Remplit le body de Response à partir de la Vue * @exception Minz_Exception */ public function run($ob = true) { $cache = new Minz_Cache(); // Le ob_start est dupliqué : sans ça il y a un bug sous Firefox // ici on l'appelle avec 'ob_gzhandler', après sans. // Vraisemblablement la compression fonctionne mais c'est sale // J'ignore les effets de bord :( if ($ob) { ob_start('ob_gzhandler'); } if (Minz_Cache::isEnabled() && !$cache->expired()) { if ($ob) { ob_start(); } $cache->render(); if ($ob) { $text = ob_get_clean(); } } else { $text = ''; //TODO: Clean this code while (Minz_Request::$reseted) { Minz_Request::$reseted = false; try { $this->createController('FreshRSS_' . Minz_Request::controllerName() . '_Controller'); $this->controller->init(); $this->controller->firstAction(); $this->launchAction(Minz_Request::actionName() . 'Action'); $this->controller->lastAction(); if (!Minz_Request::$reseted) { if ($ob) { ob_start(); } $this->controller->view()->build(); if ($ob) { $text = ob_get_clean(); } } } catch (Minz_Exception $e) { throw $e; } } if (Minz_Cache::isEnabled()) { $cache->cache($text); } } Minz_Response::setBody($text); }
/** * Relance une requête * @param $url l'url vers laquelle est relancée la requête * @param $redirect si vrai, force la redirection http * > sinon, le dispatcher recharge en interne */ public static function forward($url = array(), $redirect = false) { $url = Minz_Url::checkUrl($url); if ($redirect) { header('Location: ' . Minz_Url::display($url, 'php')); exit; } else { self::$reseted = true; self::_controllerName($url['c']); self::_actionName($url['a']); self::_params(array_merge(self::$params, $url['params'])); } }