src/PaaBundle/Controller/ErrorController.php line 98

Open in your IDE?
  1. <?php
  2. namespace App\PaaBundle\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Bundle\TwigBundle\Controller\ExceptionController as BaseExceptionController;
  5. use Symfony\Bundle\FrameworkBundle\Templating\TemplateReference;
  6. use Symfony\Component\HttpKernel\Log\DebugLoggerInterface;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\Debug\Exception\FlattenException;
  10. use App\PaaBundle\Component\Logs;
  11. use Symfony\Bridge\Monolog\Logger;
  12. use Twig\Environment;
  13. // LG 20200513 old class ErrorController extends DefaultController {
  14. class ErrorController extends BaseExceptionController {
  15.     protected $debug;
  16.     protected $twig;
  17.     public function __construct(Environment $twig nullbool $debug null) {
  18. //        $twig = $twig?:"" ;
  19.         $debug $debug ?: false;
  20.         parent::__construct($twig$debug);
  21.     }
  22.     //Fonction permettant de log dans la BDD un message donné en paramètre en créant une erreur
  23.     //On peut l'appeler depuis n'importe quel controller : $this->get('logArthur')->errorAction('',null,null);
  24.     function errorAction($errorMessage$errorNiveau null$errorType null) {
  25.         if ($errorNiveau == null) {
  26.             $errorNiveau 1024;
  27.         }
  28.         set_error_handler(function ($errno$errstr$errfile$errline) {
  29.             self::constructLog($errno$errstr$errfile$errline);
  30.         });
  31.         if ($errorType != null) {
  32.             trigger_error($errorMessage$errorType);
  33.         } else {
  34.             trigger_error($errorMessage);
  35.         }
  36.         restore_error_handler();
  37.     }
  38.     //Fonction permettant de log dans la BDD un message donné en paramètre sans créer une erreur
  39.     //On peut l'appeler depuis n'importe quel controller : $this->get('logArthur')->logAction('',null);
  40.     function logAction($errorMessage$errorNiveau null) {
  41.         if ($errorNiveau == null) {
  42.             $errorNiveau 1024;
  43.         }
  44.         self::constructLog($errorNiveau$errorMessagenullnull);
  45.     }
  46.     //errno : niveau d'erreur
  47.     //errstr : nom de l'erreur
  48.     //errfile : fichier où l'erreur est apparue
  49.     //errline : ligne du fichier où l'erreur est apparue
  50.     function constructLog($errno$errstr$errfile$errline) {
  51.         $o getORessources($a$b);
  52.         $loConnexion $this->getDoctrineConnection();
  53.         $user $o->getUsersArthur($r$loConnexion$_SESSION['giUser']);
  54.         ob_start();
  55.         debug_print_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
  56.         $data ob_get_clean();
  57.         $tabBacktrace explode(']'$data);
  58.         unset($tabBacktrace[0]);
  59.         $tabFileLigne explode(':'$tabBacktrace[1]);
  60.         $data implode(']'$tabBacktrace);
  61.         $errfile 'C:' $tabFileLigne[1];
  62.         $errline $tabFileLigne[2];
  63.         $content $errstr PHP_EOL
  64.                 'Niveau erreur : ' $errno ' : ' $errstr PHP_EOL
  65.                 'Programme concerné : ' $errfile ' Ligne N°' $errline '' PHP_EOL PHP_EOL
  66.                 'Liste des appels : ' PHP_EOL;
  67.         $content .= $data;
  68.         $date date("d/m/Y");
  69.         $time date("H:i:s");
  70.         $content .= PHP_EOL 'Le : ' $date ' à : ' $time PHP_EOL
  71.                 'PAA version ' $_SESSION['gsVersionPAA'] . PHP_EOL PHP_EOL
  72.                 'User : ' $user[0]['username'] . PHP_EOL
  73.                 'URL demandée : ' $_SESSION['_sf2_attributes']['URLDemandée'] . PHP_EOL
  74.                 'Système exploitation : ' php_uname('s') . ' ' php_uname('r') . ' : ' php_uname('v') . PHP_EOL
  75.                 'Session windows : ' php_uname('n') . PHP_EOL PHP_EOL
  76.                 'Etat des paramètres :' PHP_EOL PHP_EOL;
  77.         $n 0;
  78.         foreach (debug_backtrace() as $item) {
  79.             if ($n != 0) {
  80.                 $content .= '#' $n ' ' $item['class'] . $item['type'] . $item['function'] . ' called at [' $item['file'] . ':' $item['line'] . ']' PHP_EOL
  81.                         implode(PHP_EOL$item['args']) . PHP_EOL PHP_EOL;
  82.             }
  83.             $n++;
  84.         }
  85.         // Décommenter pour ajouter la création d'un fichier de log en local
  86.         $o->InsertLogArthur($r$loConnexion$errno$errstr$errfile$_SESSION['gsVersionPAA'], $content);
  87.     }
  88.     function showAction(Request $requestFlattenException $exceptionDebugLoggerInterface $logger null) {
  89.         if ($_ENV['APP_ENV'] === 'prod') {
  90.             $id $_ENV['lastErrorID'];
  91.             $laOptions = array();
  92.             $lsErrorCode $exception->getStatusCode();
  93. // LG 20240411 old            if (lg_getenv("AFFICHE_INFO_ERREUR") == "true") {
  94.             if (lg_getenv("AFFICHE_INFO_ERREUR") == "true" || strpos($exception->getMessage(), "bannie")) {
  95.                 // Afficher le mesage d'erreur détaillé
  96.                 $lsErrorText $exception->getMessage();
  97.             } else {
  98.                 // Ne pas afficher le message d'erreur détailé
  99.                 $lsErrorText "" ;
  100.             }
  101.             $lsStatusText = isset(Response::$statusTexts[$lsErrorCode]) ? Response::$statusTexts[$lsErrorCode] : '' ;
  102.             return new Response($this->twig->render(
  103.                         '@Paa/Default/error.html.twig', [
  104.                         'psErrorCode' => $lsErrorCode,
  105.                         'psStatusText' => $lsStatusText,
  106.                         "psErrorText" => $lsErrorText,
  107.                         'exception' => $exception,
  108.                         'logger' => $logger,
  109.                         'currentContent' => '$ currentContent',
  110.                         "id" => $id,
  111.                         "psURLRetour" => $request->headers->get('referer')
  112.                     ]
  113.                     ), 200, ['Content-Type' => $request->getMimeType($request->getRequestFormat()) ?: 'text/html']);
  114.         } else {
  115.             return parent::showAction($request$exception$logger);
  116.         }
  117.     }
  118. }