*/ /** * La classe Error permet de lancer des erreurs HTTP */ class Error { public function __construct () { } /** * 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 ); Response::setHeader ($code); if ($redirect) { Request::forward (array ( 'c' => 'error' ), true); } else { Request::forward (array ( 'c' => 'error', 'params' => $params ), false); } } else { $text = '

An error occured

'."\n"; if (!empty ($logs)) { $text .= ''."\n"; } Response::setHeader ($code); Response::setBody ($text); Response::send (); exit (); } } /** * Permet de retourner les logs de façon à n'avoir que * ceux que l'on veut réellement * @param $logs les logs rangés par catégories (error, warning, notice) * @return la liste des logs, sans catégorie, * > en fonction de l'environment */ private static function processLogs ($logs) { $env = Configuration::environment (); $logs_ok = array (); $error = array (); $warning = array (); $notice = array (); if (isset ($logs['error'])) { $error = $logs['error']; } if (isset ($logs['warning'])) { $warning = $logs['warning']; } if (isset ($logs['notice'])) { $notice = $logs['notice']; } if ($env == Configuration::PRODUCTION) { $logs_ok = $error; } if ($env == Configuration::DEVELOPMENT) { $logs_ok = array_merge ($error, $warning, $notice); } return $logs_ok; } }