Example #1
0
 /**
  * Permet de lancer une erreur
  * @param $code le type de l'erreur, par défaut 404 (page not found)
  * @param $logs logs d'erreurs découpés de la forme
  *      > $logs['error']
  *      > $logs['warning']
  *      > $logs['notice']
  * @param $redirect indique s'il faut forcer la redirection (les logs ne seront pas transmis)
  */
 public static function error($code = 404, $logs = array(), $redirect = false)
 {
     $logs = self::processLogs($logs);
     $error_filename = APP_PATH . '/Controllers/errorController.php';
     if (file_exists($error_filename)) {
         $params = array('code' => $code, 'logs' => $logs);
         Minz_Response::setHeader($code);
         if ($redirect) {
             Minz_Request::forward(array('c' => 'error'), true);
         } else {
             Minz_Request::forward(array('c' => 'error', 'params' => $params), false);
         }
     } else {
         $text = '<h1>An error occured</h1>' . "\n";
         if (!empty($logs)) {
             $text .= '<ul>' . "\n";
             foreach ($logs as $log) {
                 $text .= '<li>' . $log . '</li>' . "\n";
             }
             $text .= '</ul>' . "\n";
         }
         Minz_Response::setHeader($code);
         Minz_Response::setBody($text);
         Minz_Response::send();
         exit;
     }
 }
Example #2
0
 /**
  * Démarre l'application (lance le dispatcher et renvoie la réponse
  */
 public function run()
 {
     try {
         $this->dispatcher->run($this->useOb);
         Minz_Response::send();
     } catch (Minz_Exception $e) {
         try {
             Minz_Log::record($e->getMessage(), Minz_Log::ERROR);
         } catch (Minz_PermissionDeniedException $e) {
             $this->killApp($e->getMessage());
         }
         if ($e instanceof Minz_FileNotExistException || $e instanceof Minz_ControllerNotExistException || $e instanceof Minz_ControllerNotActionControllerException || $e instanceof Minz_ActionException) {
             Minz_Error::error(404, array('error' => array($e->getMessage())), true);
         } else {
             $this->killApp();
         }
     }
 }
Example #3
0
 /**
  * Mets à jour le header de la Response
  * @param $code le code HTTP, valeurs possibles
  *	- 200 (OK)
  *	- 403 (Forbidden)
  *	- 404 (Forbidden)
  *	- 500 (Forbidden) -> par défaut si $code erroné
  *	- 503 (Forbidden)
  */
 public static function setHeader($code)
 {
     switch ($code) {
         case 200:
             self::$header = 'HTTP/1.0 200 OK';
             break;
         case 403:
             self::$header = 'HTTP/1.0 403 Forbidden';
             break;
         case 404:
             self::$header = 'HTTP/1.0 404 Not Found';
             break;
         case 500:
             self::$header = 'HTTP/1.0 500 Internal Server Error';
             break;
         case 503:
             self::$header = 'HTTP/1.0 503 Service Unavailable';
             break;
         default:
             self::$header = 'HTTP/1.0 500 Internal Server Error';
     }
 }
Example #4
0
 /**
  * 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);
 }