<?php
/*
* Disclaimer: This source code is protected by copyright law and by
* international conventions.
*
* Any reproduction or partial or total distribution of the source code, by any
* means whatsoever, is strictly forbidden.
*
* Anyone not complies with these provisions will be guilty of the offense of
* infringement and the penal sanctions provided for by law.
*
* © 2020 All rights reserved.
*/
namespace App\EventListener;
use App\Helper\LogHelper;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
use Symfony\Component\Mailer\MailerInterface;
/**
* Class ExceptionListener
*
* @author Rémy P. <r.peyron@ingeno.eu>
* @package App\EventListener
*/
class ExceptionListener
{
/**
* @var LogHelper
*/
private $logHelper;
/**
* @var MailerInterface
*/
private $mailer;
public function __construct(MailerInterface $mailer, LogHelper $logHelper)
{
$this->mailer = $mailer;
$this->logHelper = $logHelper;
}
public function onKernelException(ExceptionEvent $event)
{
$exception = $event->getThrowable();
$this->logHelper->addLog("Exception: " . $exception->getMessage(), LogHelper::TYPE_ERROR);
if ($_ENV['APP_ENV'] !== 'production') {
return;
}
if ($event->isMainRequest() || ($exception instanceof HttpExceptionInterface)) {
$ignoreMessageEvent = [
"Access Denied",
"No route found",
"Integrity constraint violation",
"object not found by the @ParamConverter",
];
foreach ($ignoreMessageEvent as $message) {
if (false !== strpos(strtolower($exception->getMessage()), strtolower($message))) {
return;
}
}
//
// $email = (new TemplatedEmail())
// ->from(new Address("noreply@erp-france.eu", 'RP-France'))
// ->addTo(new Address("support@infineosas.eu", "Rémy Peyron"))
// ->subject('Erreur RP-FRANCE: ' . (new DateTime())->format("Y-m-d H:i:s"))
// ->htmlTemplate("email/exception.html.twig")
// ->context([
// "message" => "Une erreur critique est survenue",
// "exception" => $exception,
// "postData" => json_encode($_POST, JSON_PRETTY_PRINT),
// "getData" => json_encode($_GET, JSON_PRETTY_PRINT),
// "jsonTrace" => $exception->getTraceAsString(),
// "ip" => $_SERVER["SERVER_ADDR"] ?? null,
// "requestUri" => $_SERVER["REQUEST_URI"]
// ]);
//
// try {
// $this->mailer->send($email);
// } catch (TransportExceptionInterface $e) {
// return;
//// dd($e->getMessage());
// }
}
}
}