Add namespace.
This commit is contained in:
84
App/ErrorAction.php
Normal file
84
App/ErrorAction.php
Normal file
@ -0,0 +1,84 @@
|
||||
<?php namespace Majestic\App;
|
||||
/**
|
||||
* @copyright NetMonsters <team@netmonsters.ru>
|
||||
* @link http://netmonsters.ru
|
||||
* @package Majestic
|
||||
* @subpackage app
|
||||
* @since 2010-02-25
|
||||
*/
|
||||
|
||||
class ErrorAction extends Action
|
||||
{
|
||||
|
||||
/**
|
||||
* @var \ErrorException|\Majestic\Exception\ErrorHTTPException
|
||||
*/
|
||||
public $exception;
|
||||
|
||||
protected $ajax_error = false;
|
||||
|
||||
public function __construct($exception)
|
||||
{
|
||||
$this->exception = $exception;
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
protected function execute()
|
||||
{
|
||||
if ($this->exception instanceof \Majestic\Exception\Error404Exception) {
|
||||
$this->template = 404;
|
||||
} elseif ($this->exception instanceof \Majestic\Exception\ErrorHTTPException) {
|
||||
$this->template = 'HTTP';
|
||||
} else {
|
||||
$this->template = 500;
|
||||
}
|
||||
$this->logError();
|
||||
$this->sendHTTPCode();
|
||||
}
|
||||
|
||||
public function fetch()
|
||||
{
|
||||
if ($this->isAjaxActionError()) {
|
||||
return $this->exception->getMessage();
|
||||
}
|
||||
return parent::fetch();
|
||||
}
|
||||
|
||||
protected function getTemplate()
|
||||
{
|
||||
return '/actions/' . $this->template;
|
||||
}
|
||||
|
||||
protected function sendHttpCode()
|
||||
{
|
||||
if ($this->exception instanceof \Majestic\Exception\ErrorHTTPException) {
|
||||
header($this->exception->getHTTPHeader());
|
||||
} else {
|
||||
header('HTTP/1.0 500 Internal Server Error');
|
||||
}
|
||||
}
|
||||
|
||||
protected function logError()
|
||||
{
|
||||
if (!$this->exception instanceof \Majestic\Exception\Error404Exception) {
|
||||
\Majestic\Exception\ErrorHandler::logError($this->exception);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check, if exception was thrown from AjaxAction Class
|
||||
* @return bool
|
||||
*/
|
||||
protected function isAjaxActionError()
|
||||
{
|
||||
return $this->ajax_error;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set if exception was thrown from AjaxAction subclass
|
||||
*/
|
||||
public function setAjaxError()
|
||||
{
|
||||
$this->ajax_error = true;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user