src/EventSubscriber/ActivityLogListenerSubscriber.php line 32

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  5. use Symfony\Component\HttpKernel\KernelEvents;
  6. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Component\HttpFoundation\RedirectResponse;
  9. use Symfony\Component\Routing\RouterInterface;
  10. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  11. use Nzo\UrlEncryptorBundle\Encryptor\Encryptor;
  12. class ActivityLogListenerSubscriber implements EventSubscriberInterface
  13. {
  14.     protected $authChecker;
  15.     protected $entityManager;
  16.     protected $tokenStorage;
  17.     protected $router;
  18.     private $encryptor;
  19.     public function __construct(AuthorizationCheckerInterface $authCheckerEntityManagerInterface $entityManagerTokenStorageInterface $tokenStorageRouterInterface $routerEncryptor $encryptor)
  20.     {
  21.         $this->authChecker $authChecker;
  22.         $this->entityManager $entityManager;
  23.         $this->tokenStorage $tokenStorage;
  24.         $this->router $router;
  25.         $this->encryptor $encryptor;
  26.     }
  27.     public function onKernelController(ControllerEvent $event)
  28.     {
  29.         if ($this->tokenStorage->getToken())
  30.         {
  31.             /* if ($this->tokenStorage->getToken()->getUser()->getProfile()->getIsUpdate() == 0) {
  32.                 if (!isset($_SESSION['check_update'])) {
  33.                     $_SESSION['check_update'] = 1;
  34.                 }
  35.                 dd($_SESSION['check_update']);
  36.                 if ($_SESSION['check_update']) {
  37.                     $id = $this->encryptor->encrypt($this->tokenStorage->getToken()->getUser()->getProfile()->getId());
  38.                     $redirectUrl = $this->router->generate('staff_profile_edit', ['id' => $id]);
  39.                     $_SESSION['check_update'] = 0;
  40.                     $event->setController(function() use ($redirectUrl) {
  41.                         return new RedirectResponse($redirectUrl);
  42.                     });
  43.                     //$response = new  RedirectResponse($redirectUrl);
  44.                     //return $response->send();
  45.                 }
  46.             } */
  47.             $user $this->tokenStorage->getToken()->getUser()->getId();
  48.             if (!file_exists('../public/uploads/activity_log/' $user)) {
  49.                 $userID mkdir('../public/uploads/activity_log/' $user0777true);
  50.             } else {
  51.                 $userID $user;
  52.             }
  53.             $Filename $user '_' date('d-m-Y') . '.csv';
  54.             $filePath '../public/uploads/activity_log/' $userID '/' $Filename;
  55.             $dataArr = array();
  56.             $controller $event->getRequest()->attributes->get('_controller');
  57.             $route $event->getRequest()->attributes->get('_route');
  58.             $method =  $event->getRequest()->getMethod();
  59.             $ActivityLog fopen($filePath"a") or die("Unable to open file!");
  60.             $data = array([
  61.                 'controller' => $controller,
  62.                 'method' => $method,
  63.                 'route' => $route,
  64.             ]);
  65.             foreach ($data as $val) {
  66.                 $dataArr['controller'] = $val['controller'];
  67.                 $dataArr['method'] = $val['method'];
  68.                 $dataArr['route'] = $val['route'];
  69.                 $dataArr['time'] = date('d-m-Y h:i:s');
  70.                 fputcsv($ActivityLog$dataArr);
  71.             }
  72.             fclose($ActivityLog);
  73.         }
  74.     }
  75.     public static function getSubscribedEvents(): array
  76.     {
  77.         return [
  78.             KernelEvents::CONTROLLER => 'onKernelController',
  79.         ];
  80.     }
  81. }