2009-05-10 10:50:39 +03:00
|
|
|
|
<?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
|
|
|
|
|
*
|
|
|
|
|
---------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
2012-04-29 17:58:36 +03:00
|
|
|
|
* Экшен обработки УРЛа вида /error/ т.е. ошибок
|
2008-09-21 09:36:57 +03:00
|
|
|
|
*
|
2012-04-29 17:58:36 +03:00
|
|
|
|
* @package actions
|
|
|
|
|
* @since 1.0
|
2008-09-21 09:36:57 +03:00
|
|
|
|
*/
|
|
|
|
|
class ActionError extends Action {
|
2012-05-04 14:18:46 +03:00
|
|
|
|
/**
|
|
|
|
|
* Список специфических HTTP ошибок для которых необходимо отдавать header
|
|
|
|
|
*
|
|
|
|
|
* @var array
|
|
|
|
|
*/
|
|
|
|
|
protected $aHttpErrors=array(
|
|
|
|
|
'404' => array(
|
|
|
|
|
'header' => '404 Not Found',
|
|
|
|
|
),
|
2014-01-28 09:47:36 +02:00
|
|
|
|
'403' => array(
|
|
|
|
|
'header' => '403 Forbidden',
|
|
|
|
|
),
|
|
|
|
|
'500' => array(
|
|
|
|
|
'header' => '500 Internal Server Error',
|
|
|
|
|
),
|
2012-05-04 14:18:46 +03:00
|
|
|
|
);
|
2008-09-21 09:36:57 +03:00
|
|
|
|
/**
|
|
|
|
|
* Инициализация экшена
|
|
|
|
|
*
|
|
|
|
|
*/
|
2009-12-14 02:57:20 +02:00
|
|
|
|
public function Init() {
|
2012-04-29 17:58:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Устанавливаем дефолтный евент
|
|
|
|
|
*/
|
2008-09-21 09:36:57 +03:00
|
|
|
|
$this->SetDefaultEvent('index');
|
2012-04-29 17:58:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Запрешаем отображать статистику выполнения
|
|
|
|
|
*/
|
2009-02-07 11:43:46 +02:00
|
|
|
|
Router::SetIsShowStats(false);
|
2008-09-21 09:36:57 +03:00
|
|
|
|
}
|
|
|
|
|
/**
|
2012-04-29 17:58:36 +03:00
|
|
|
|
* Регистрируем евенты
|
2008-09-21 09:36:57 +03:00
|
|
|
|
*
|
|
|
|
|
*/
|
2012-04-29 17:58:36 +03:00
|
|
|
|
protected function RegisterEvent() {
|
|
|
|
|
$this->AddEvent('index','EventError');
|
2012-05-04 14:18:46 +03:00
|
|
|
|
$this->AddEventPreg('/^\d{3}$/i','EventError');
|
2008-09-21 09:36:57 +03:00
|
|
|
|
}
|
|
|
|
|
/**
|
2012-04-29 17:58:36 +03:00
|
|
|
|
* Вывод ошибки
|
2008-09-21 09:36:57 +03:00
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
protected function EventError() {
|
|
|
|
|
/**
|
2012-05-04 14:18:46 +03:00
|
|
|
|
* Если евент равен одной из ошибок из $aHttpErrors, то шлем браузеру специфичный header
|
|
|
|
|
* Например, для 404 в хидере будет послан браузеру заголовок HTTP/1.1 404 Not Found
|
2012-04-29 17:58:36 +03:00
|
|
|
|
*/
|
2012-05-04 14:18:46 +03:00
|
|
|
|
if (array_key_exists($this->sCurrentEvent,$this->aHttpErrors)) {
|
2014-01-28 09:47:36 +02:00
|
|
|
|
/**
|
|
|
|
|
* Смотрим есть ли сообщения об ошибках
|
|
|
|
|
*/
|
|
|
|
|
if (!$this->Message_GetError()) {
|
|
|
|
|
$this->Message_AddErrorSingle($this->Lang_Get('common.error.system.code.'.$this->sCurrentEvent),$this->sCurrentEvent);
|
|
|
|
|
}
|
2012-05-04 14:18:46 +03:00
|
|
|
|
$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
|
|
|
|
}
|
2012-04-29 17:58:36 +03:00
|
|
|
|
/**
|
|
|
|
|
* Устанавливаем title страницы
|
|
|
|
|
*/
|
2009-01-10 21:23:36 +02:00
|
|
|
|
$this->Viewer_AddHtmlTitle($this->Lang_Get('error'));
|
2010-04-03 19:44:12 +03:00
|
|
|
|
$this->SetTemplateAction('index');
|
2008-09-21 09:36:57 +03:00
|
|
|
|
}
|
2014-05-28 08:37:30 +03:00
|
|
|
|
}
|