src/Controller/EmailTrackingController.php line 15

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Repository\EmailRecipientRepository;
  4. use App\Services\EmailTrackingService;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. class EmailTrackingController extends AbstractController
  10. {
  11.     #[Route('/email/track/open/{token}.png'name'email_tracking_open'methods: ['GET'])]
  12.     public function trackOpen(
  13.         string $token,
  14.         Request $request,
  15.         EmailRecipientRepository $recipientRepository,
  16.         EmailTrackingService $emailTrackingService
  17.     ): Response {
  18.         $recipient $recipientRepository->findOneBy(['openToken' => $token]);
  19.         if ($recipient) {
  20.             $emailTrackingService->handleOpenEvent(
  21.                 $recipient,
  22.                 $request->getClientIp(),
  23.                 $request->headers->get('User-Agent')
  24.             );
  25.         }
  26.         $pixel base64_decode('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR4nGMAAQAABQABDQottAAAAABJRU5ErkJggg==');
  27.         $response = new Response($pixel);
  28.         $response->headers->set('Content-Type''image/png');
  29.         $response->headers->set('Cache-Control''no-store, no-cache, must-revalidate, max-age=0');
  30.         $response->headers->set('Pragma''no-cache');
  31.         $response->headers->set('Expires''0');
  32.         return $response;
  33.     }
  34. }