|
|
<?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; } }
|