?
<?php
class ErrorController extends Zend_Controller_Action
{
private $_exception;
private static $errorMessage;
private static $httpCode;
public function init()
{
$session = Zend_Registry::get('session');
$session->action = $this->_helper->getHelper('ParentController')->setParent();
$this->view->controllerCourant = $this->view->layout()->controlleractif;
header('Accept-Encoding: gzip, deflate');
}
public function preDispatch()
{
$this->_exception = $this->_getParam('error_handler');
switch ($this->_exception->type) {
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
self::$httpCode = 404;
self::$errorMessage = 'Cette page n\'existe pas<br /> This page does not exist<br />';
break;
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_OTHER:
switch (get_class($this->_exception->exception)) {
case 'Zend_View_Exception' :
self::$httpCode = 500;
self::$errorMessage = 'Erreur de traitement d\'une vue';
break;
case 'Zend_Db_Exception' :
self::$httpCode = 503;
self::$errorMessage = 'Erreur de traitement dans la base de données';
break;
case 'Metier_Exception' :
self::$httpCode = 200;
self::$errorMessage = $this->_exception->exception->getMessage();
break;
default:
self::$httpCode = 500;
self::$errorMessage = 'Erreur inconnue : '. $this->_exception->exception->getMessage();
break;
}
break;
}
}
public function errorAction()
{
$session = Zend_Registry::get('session');
$translate = Zend_Registry::get('translate');
$this->view->translate = $translate;
$ln = $this->_request->getParam('page');
if(isset($ln))
{
$session->lang = $ln;
$locale = new Zend_Locale($ln);
$translate->setLocale($locale->getLanguage());
}
$this->view->actionCourante = "error";
$this->_helper->layout()->setLayout('mainerror');
$this->_helper->actionStack('header','header');
$this->_helper->actionStack('nav','nav');
$this->_helper->actionStack('footer','footer');
$this->view->robots = "noindex, follows";
$this->view->TitrePage = "Erreur";
$this->view->DescPage = "Erreur";;
$this->view->langue = $session->lang;
$errors = $this->_getParam("error_handler");
$this->view->message = self::$errorMessage;
$this->view->httpCode = self::$httpCode;
$this->view->exception = $errors->exception;
$this->view->request = $errors->request;
$this->view->titrepage = $translate->_("nomsite")." - ERREUR PAGE ".self::$httpCode;
$this->view->TitreArticle = "error";
}
}