1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-07-08 01:14:24 +03:00
ifhub.club/application/classes/actions/ActionError.class.php

91 lines
2.5 KiB
PHP
Raw Normal View History

<?php
2008-09-21 09:36:57 +03:00
/*-------------------------------------------------------
*
* LiveStreet Engine Social Networking
* Copyright © 2008 Mzhelskiy Maxim
*
*--------------------------------------------------------
*
* Official site: www.livestreet.ru
* Contact e-mail: rus.engine@gmail.com
*
* GNU General Public License, version 2:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
---------------------------------------------------------
*/
/**
* Экшен обработки УРЛа вида /error/ т.е. ошибок
2008-09-21 09:36:57 +03:00
*
* @package actions
* @since 1.0
2008-09-21 09:36:57 +03:00
*/
class ActionError extends Action {
/**
* Список специфических HTTP ошибок для которых необходимо отдавать header
*
* @var array
*/
protected $aHttpErrors=array(
'404' => array(
'header' => '404 Not Found',
),
'403' => array(
'header' => '403 Forbidden',
),
'500' => array(
'header' => '500 Internal Server Error',
),
);
2008-09-21 09:36:57 +03:00
/**
* Инициализация экшена
*
*/
public function Init() {
/**
* Устанавливаем дефолтный евент
*/
2008-09-21 09:36:57 +03:00
$this->SetDefaultEvent('index');
/**
* Запрешаем отображать статистику выполнения
*/
2009-02-07 11:43:46 +02:00
Router::SetIsShowStats(false);
2008-09-21 09:36:57 +03:00
}
/**
* Регистрируем евенты
2008-09-21 09:36:57 +03:00
*
*/
protected function RegisterEvent() {
$this->AddEvent('index','EventError');
$this->AddEventPreg('/^\d{3}$/i','EventError');
2008-09-21 09:36:57 +03:00
}
/**
* Вывод ошибки
2008-09-21 09:36:57 +03:00
*
*/
protected function EventError() {
/**
* Если евент равен одной из ошибок из $aHttpErrors, то шлем браузеру специфичный header
* Например, для 404 в хидере будет послан браузеру заголовок HTTP/1.1 404 Not Found
*/
if (array_key_exists($this->sCurrentEvent,$this->aHttpErrors)) {
/**
* Смотрим есть ли сообщения об ошибках
*/
if (!$this->Message_GetError()) {
$this->Message_AddErrorSingle($this->Lang_Get('common.error.system.code.'.$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']}");
}
2008-09-21 09:36:57 +03:00
}
/**
* Устанавливаем title страницы
*/
$this->Viewer_AddHtmlTitle($this->Lang_Get('error'));
$this->SetTemplateAction('index');
2008-09-21 09:36:57 +03:00
}
}