protected function returnFailure(Exception $exception)
 {
     $data = array();
     $data['success'] = false;
     $data['errorCode'] = $exception->getCode();
     $data['errorMsg'] = $exception instanceof common_exception_UserReadableException ? $exception->getUserMessage() : $exception->getMessage();
     $data['version'] = TAO_VERSION;
     echo json_encode($data);
     exit(0);
 }
Beispiel #2
0
 public function getBody()
 {
     $userMessage = '';
     if ($this->exception instanceof HttpError) {
         $userMessage = $this->exception->getUserMessage();
     }
     if ($this->request->getFormats()->contains('html')) {
         $model = array('status' => $this->getStatus(), 'rootUrl' => $this->request->getContext()->toString(), 'userMessage' => $userMessage);
         $details = date('Y-m-d H:i:s');
         $exception = $this->exception;
         while ($exception) {
             $details .= "\n" . get_class($exception) . ": " . $exception->getMessage() . "\n" . $exception->getTraceAsString() . "\n";
             $exception = $exception->getPrevious();
         }
         $model['details'] = htmlentities($details);
         return $this->renderTemplate($model);
     } else {
         return $userMessage ?: get_class($this->exception) . ': ' . $this->exception->getMessage();
     }
 }
 /**
  * Generate safe message preventing exposing sensitive date in non develop mode
  * @param Exception $exception
  * @return string
  */
 private function getErrorMessage(Exception $exception)
 {
     $defaultMessage = __('Unexpected error. Please contact administrator');
     if (DEBUG_MODE) {
         $defaultMessage = $exception->getMessage();
     }
     return $exception instanceof common_exception_UserReadableException ? $exception->getUserMessage() : $defaultMessage;
 }
Beispiel #4
0
 /**
  * Handle PHP Exception
  * @SuppressWarnings(PHPMD.ExitExpression)
  * @param Exception $exception
  */
 public function handleException(\Exception $exception)
 {
     $message = $exception->getMessage();
     $userMessage = 'Unspecified Technical Difficulties';
     $code = 500;
     $log = $this->_log;
     if ($exception instanceof \Lvc_Exception) {
         $code = 404;
         $log = $this->_404Log;
         $userMessage = 'Sorry the page you are looking for could not be found.';
     }
     if ($exception instanceof \PDOException) {
         $message = 'Problem with database connection. PDO says: ' . $message;
         $userMessage = 'We are experiencing a problem connecting to our database.  Please try your request again.';
     }
     if ($exception instanceof \Foundation\Exception) {
         $userMessage = $exception->getUserMessage();
     }
     if ($exception instanceof \Foundation\Virtual\Exception) {
         $userMessage = $exception->getUserMessage();
         $code = $exception->getHttpErrorCode();
         $log = $this->_404Log;
     }
     /* Map the PHP error to a Log priority. */
     switch ($exception->getCode()) {
         case E_WARNING:
         case E_USER_WARNING:
             $priority = \Monolog\Logger::WARNING;
             break;
         case E_NOTICE:
         case E_USER_NOTICE:
             $priority = \Monolog\Logger::INFO;
             break;
         case E_ERROR:
         case E_USER_ERROR:
             $priority = \Monolog\Logger::CRITICAL;
             break;
         default:
             $priority = \Monolog\Logger::INFO;
     }
     $log->addRecord($priority, $message);
     //send the error to PHP as well
     error_log($message);
     // Get a request for the error page
     $request = new \Lvc_Request();
     $request->setControllerName('error');
     $request->setActionName('index');
     $request->setActionParams(array('error' => $code, 'message' => $userMessage));
     // Get a new front controller without any routers, and have it process our handmade request.
     $frontController = new \Lvc_FrontController();
     $frontController->processRequest($request);
     exit(1);
 }