You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.2 KiB

<?php
/**
* @copyright NetMonsters <team@netmonsters.ru>
* @link http://netmonsters.ru
* @package Majestic
* @subpackage app
* @since 2010-02-25
* @version SVN: $Id$
* @filesource $URL$
*/
class ErrorAction extends ViewAction
{
/**
* @var Exception
*/
protected $exception;
public function __construct($exception)
{
$this->exception = $exception;
parent::__construct();
}
protected function execute()
{
$this->template = 500;
if ($this->exception instanceof Error404Exception) {
$this->template = 404;
}
}
protected function getTemplate()
{
return '/static/' . $this->template;
}
protected function sendHttpCode($code)
{
if (headers_sent()) {
return;
}
switch ($code) {
case 404:
header('HTTP/1.0 404 Not Found');
break;
default:
header('HTTP/1.0 500 Internal Server Error');
}
}
public function fetch()
{
$this->sendHTTPCode($this->template);
return $this->view->fetch($this->getTemplate());
}
}