Current File : /home/karenpetzb/application/modules/default/controllers/ErrorController.php |
<?php
class ErrorController extends Zend_Controller_Action
{
public function errorAction()
{
$errors = $this->_getParam('error_handler');
$this->initLog();
$exception = $errors->exception;
$message = "Une erreure est survenue : ".$exception->getMessage().";<br/>URL : ".$this->getRequest()->getRequestUri();
switch ($errors->type) {
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
$message .= "<br/>TYPE : Le controller n'existe pas";
break;
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
$message .= "<br/>TYPE : Page introuvable";
break;
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_OTHER:
switch ($exception) {
case 'Zend_View_Exception' :
$message = "<br/>TYPE : 500 : Erreur de traitement d'une vue";
break;
case 'Zend_Db_Exception' :
$message.= "<br/>TYPE : 503 : Erreur de traitement dans la base de donn�es";
break;
case 'Metier_Exception' :
$message.= "<br/>TYPE : 200 : Erreur metier";
break;
default:
$message.= "<br/>TRACE : ".$exception->getTraceAsString();
break;
}
break;
}
$message .= "<br/>USER AGENT : ".getenv("HTTP_USER_AGENT");
$botDetector = new BotDetector();
$isBot = $botDetector->isBot(getenv("HTTP_USER_AGENT"));
if ($isBot != 'ERROR') {
$message .= "<br/>Bot : ".$isBot;
$this->log($message,'warn');
} else {
$this->log($message,'err');
}
$this->view->title = 'Un probl�me est survenu';
$this->_response->clearBody();
$this->_response->clearHeaders();
$this->_response->setHttpResponseCode(404);
}
private function initLog() {
$registry = Zend_Registry::getInstance();
$loggerDefault = $registry->get('loggerDefault');
$controller = Zend_Controller_Front::getInstance()->getRequest();
$loggerDefault->setEventItem('controller', $controller->getControllerName().'::'.$controller->getActionName());
$registry->set('loggerDefault', $loggerDefault);
}
private function log($message , $level) {
$loggerDefault = Zend_Registry::get('loggerDefault');
if ($level == 'info') {
$loggerDefault->info($message);
} elseif ($level == 'err') {
$loggerDefault->err($message);
} elseif ($level == 'warn') {
$loggerDefault->warn($message);
} elseif ($level == 'crit') {
$loggerDefault->crit($message);
}
}
}
?>