<?php
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ControllerEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Nzo\UrlEncryptorBundle\Encryptor\Encryptor;
class ActivityLogListenerSubscriber implements EventSubscriberInterface
{
protected $authChecker;
protected $entityManager;
protected $tokenStorage;
protected $router;
private $encryptor;
public function __construct(AuthorizationCheckerInterface $authChecker, EntityManagerInterface $entityManager, TokenStorageInterface $tokenStorage, RouterInterface $router, Encryptor $encryptor)
{
$this->authChecker = $authChecker;
$this->entityManager = $entityManager;
$this->tokenStorage = $tokenStorage;
$this->router = $router;
$this->encryptor = $encryptor;
}
public function onKernelController(ControllerEvent $event)
{
if ($this->tokenStorage->getToken())
{
/* if ($this->tokenStorage->getToken()->getUser()->getProfile()->getIsUpdate() == 0) {
if (!isset($_SESSION['check_update'])) {
$_SESSION['check_update'] = 1;
}
dd($_SESSION['check_update']);
if ($_SESSION['check_update']) {
$id = $this->encryptor->encrypt($this->tokenStorage->getToken()->getUser()->getProfile()->getId());
$redirectUrl = $this->router->generate('staff_profile_edit', ['id' => $id]);
$_SESSION['check_update'] = 0;
$event->setController(function() use ($redirectUrl) {
return new RedirectResponse($redirectUrl);
});
//$response = new RedirectResponse($redirectUrl);
//return $response->send();
}
} */
$user = $this->tokenStorage->getToken()->getUser()->getId();
if (!file_exists('../public/uploads/activity_log/' . $user)) {
$userID = mkdir('../public/uploads/activity_log/' . $user, 0777, true);
} else {
$userID = $user;
}
$Filename = $user . '_' . date('d-m-Y') . '.csv';
$filePath = '../public/uploads/activity_log/' . $userID . '/' . $Filename;
$dataArr = array();
$controller = $event->getRequest()->attributes->get('_controller');
$route = $event->getRequest()->attributes->get('_route');
$method = $event->getRequest()->getMethod();
$ActivityLog = fopen($filePath, "a") or die("Unable to open file!");
$data = array([
'controller' => $controller,
'method' => $method,
'route' => $route,
]);
foreach ($data as $val) {
$dataArr['controller'] = $val['controller'];
$dataArr['method'] = $val['method'];
$dataArr['route'] = $val['route'];
$dataArr['time'] = date('d-m-Y h:i:s');
fputcsv($ActivityLog, $dataArr);
}
fclose($ActivityLog);
}
}
public static function getSubscribedEvents(): array
{
return [
KernelEvents::CONTROLLER => 'onKernelController',
];
}
}