1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-06-26 03:30:48 +03:00

Возможность обрабатывает разные ошибки, а не только 404 в экшене Error

This commit is contained in:
Mzhelskiy Maxim 2012-05-04 15:18:46 +04:00
parent 06bb140f5b
commit 01c2a635aa

View file

@ -22,6 +22,16 @@
* @since 1.0
*/
class ActionError extends Action {
/**
* Список специфических HTTP ошибок для которых необходимо отдавать header
*
* @var array
*/
protected $aHttpErrors=array(
'404' => array(
'header' => '404 Not Found',
),
);
/**
* Инициализация экшена
*
@ -42,7 +52,7 @@ class ActionError extends Action {
*/
protected function RegisterEvent() {
$this->AddEvent('index','EventError');
$this->AddEvent('404','EventError');
$this->AddEventPreg('/^\d{3}$/i','EventError');
}
/**
* Вывод ошибки
@ -50,12 +60,16 @@ class ActionError extends Action {
*/
protected function EventError() {
/**
* Если эвент равен 404, то значит нужно в хидере послать браузеру HTTP/1.1 404 Not Found
* Если евент равен одной из ошибок из $aHttpErrors, то шлем браузеру специфичный header
* Например, для 404 в хидере будет послан браузеру заголовок HTTP/1.1 404 Not Found
*/
if ($this->sCurrentEvent=='404') {
$this->Message_AddErrorSingle($this->Lang_Get('system_error_404'),'404');
$sProtocol=isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.1';
header("{$sProtocol} 404 Not Found");
if (array_key_exists($this->sCurrentEvent,$this->aHttpErrors)) {
$this->Message_AddErrorSingle($this->Lang_Get('system_error_'.$this->sCurrentEvent),$this->sCurrentEvent);
$aHttpError=$this->aHttpErrors[$this->sCurrentEvent];
if (isset($aHttpError['header'])) {
$sProtocol=isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.1';
header("{$sProtocol} {$aHttpError['header']}");
}
}
/**
* Устанавливаем title страницы