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);
		}
	}

}
?>