Error.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. /**
  3. * MINZ - Copyright 2011 Marien Fressinaud
  4. * Sous licence AGPL3 <http://www.gnu.org/licenses/>
  5. */
  6. /**
  7. * La classe Error permet de lancer des erreurs HTTP
  8. */
  9. class Minz_Error {
  10. public function __construct () { }
  11. /**
  12. * Permet de lancer une erreur
  13. * @param $code le type de l'erreur, par défaut 404 (page not found)
  14. * @param $logs logs d'erreurs découpés de la forme
  15. * > $logs['error']
  16. * > $logs['warning']
  17. * > $logs['notice']
  18. * @param $redirect indique s'il faut forcer la redirection (les logs ne seront pas transmis)
  19. */
  20. public static function error ($code = 404, $logs = array (), $redirect = false) {
  21. $logs = self::processLogs ($logs);
  22. $error_filename = APP_PATH . '/Controllers/ErrorController.php';
  23. if (file_exists ($error_filename)) {
  24. $params = array (
  25. 'code' => $code,
  26. 'logs' => $logs
  27. );
  28. Minz_Response::setHeader ($code);
  29. if ($redirect) {
  30. Minz_Request::forward (array (
  31. 'c' => 'error'
  32. ), true);
  33. } else {
  34. Minz_Request::forward (array (
  35. 'c' => 'error',
  36. 'params' => $params
  37. ), false);
  38. }
  39. } else {
  40. $text = '<h1>An error occured</h1>'."\n";
  41. if (!empty ($logs)) {
  42. $text .= '<ul>'."\n";
  43. foreach ($logs as $log) {
  44. $text .= '<li>' . $log . '</li>'."\n";
  45. }
  46. $text .= '</ul>'."\n";
  47. }
  48. Minz_Response::setHeader ($code);
  49. Minz_Response::setBody ($text);
  50. Minz_Response::send ();
  51. exit ();
  52. }
  53. }
  54. /**
  55. * Permet de retourner les logs de façon à n'avoir que
  56. * ceux que l'on veut réellement
  57. * @param $logs les logs rangés par catégories (error, warning, notice)
  58. * @return la liste des logs, sans catégorie,
  59. * > en fonction de l'environment
  60. */
  61. private static function processLogs ($logs) {
  62. $env = Minz_Configuration::environment ();
  63. $logs_ok = array ();
  64. $error = array ();
  65. $warning = array ();
  66. $notice = array ();
  67. if (isset ($logs['error'])) {
  68. $error = $logs['error'];
  69. }
  70. if (isset ($logs['warning'])) {
  71. $warning = $logs['warning'];
  72. }
  73. if (isset ($logs['notice'])) {
  74. $notice = $logs['notice'];
  75. }
  76. if ($env == Minz_Configuration::PRODUCTION) {
  77. $logs_ok = $error;
  78. }
  79. if ($env == Minz_Configuration::DEVELOPMENT) {
  80. $logs_ok = array_merge ($error, $warning, $notice);
  81. }
  82. return $logs_ok;
  83. }
  84. }