errorController.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4. * Controller to handle error page.
  5. */
  6. class FreshRSS_error_Controller extends FreshRSS_ActionController {
  7. /**
  8. * This action is the default one for the controller.
  9. *
  10. * It is called by Minz_Error::error() method.
  11. *
  12. * Parameters are passed by Minz_Session to have a proper url:
  13. * - error_code (default: 404)
  14. * - error_logs (default: array())
  15. */
  16. public function indexAction(): void {
  17. $code_int = Minz_Session::paramInt('error_code') ?: 404;
  18. /** @var array<string> */
  19. $error_logs = Minz_Session::paramArray('error_logs');
  20. Minz_Session::_params([
  21. 'error_code' => false,
  22. 'error_logs' => false,
  23. ]);
  24. switch ($code_int) {
  25. case 200:
  26. header('HTTP/1.1 200 OK');
  27. break;
  28. case 400:
  29. header('HTTP/1.1 400 Bad Request');
  30. $this->view->code = 'Error 400 - Bad Request';
  31. $this->view->errorMessage = '';
  32. break;
  33. case 403:
  34. header('HTTP/1.1 403 Forbidden');
  35. $this->view->code = 'Error 403 - Forbidden';
  36. $this->view->errorMessage = _t('feedback.access.denied');
  37. break;
  38. case 404:
  39. header('HTTP/1.1 404 Not Found');
  40. $this->view->code = 'Error 404 - Not found';
  41. $this->view->errorMessage = _t('feedback.access.not_found');
  42. break;
  43. case 405:
  44. header('HTTP/1.1 405 Method Not Allowed');
  45. $this->view->code = 'Error 405 - Method Not Allowed';
  46. $this->view->errorMessage = '';
  47. break;
  48. case 503:
  49. header('HTTP/1.1 503 Service Unavailable');
  50. $this->view->code = 'Error 503 - Service Unavailable';
  51. $this->view->errorMessage = 'Error 503 - Service Unavailable';
  52. break;
  53. case 500:
  54. default:
  55. header('HTTP/1.1 500 Internal Server Error');
  56. $this->view->code = 'Error 500 - Internal Server Error';
  57. $this->view->errorMessage = 'Error 500 - Internal Server Error';
  58. break;
  59. }
  60. $error_message = trim(implode($error_logs));
  61. if ($error_message !== '') {
  62. $this->view->errorMessage = $error_message;
  63. }
  64. FreshRSS_View::prependTitle($this->view->code . ' · ');
  65. }
  66. }