<?php
namespace App\Services;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
class AjaxRequestEditorListener
{
protected Request $request;
protected AjaxRequestEditor $ajaxChecker;
protected StorageManager $storageManager;
protected NotificationsManager $notificationsManager;
public function __construct(
AjaxRequestEditor $ajaxChecker,
NotificationsManager $notificationsManager,
StorageManager $storageManager
) {
$this->ajaxChecker = $ajaxChecker;
$this->notificationsManager = $notificationsManager;
$this->storageManager = $storageManager;
}
public function setRequest(RequestStack $request_stack)
{
$this->request = $request_stack->getCurrentRequest();
}
public function processAjaxRequestCheck(ResponseEvent $event)
{
if ($this->request && $this->request->getSession() && $this->request->attributes->get('_route')) {
$previousRoute = $this->request->attributes->get('_route');
$len = strlen("media/cache");
$isMediaRoute = (substr($previousRoute, 0, $len) === "media/cache");
$isApiRoute = strpos($previousRoute, 'api')
|| strpos($previousRoute, 'music_data')
|| strpos($previousRoute, 'music_informations');
if (!$isMediaRoute && !$isApiRoute && $previousRoute !== "_wdt") {
$this->request->getSession()->set('previousRoute', $previousRoute);
$this->request->getSession()->set('previousData', $this->request->attributes->get('_route_params'));
}
}
if (!$event->isMainRequest() || !$this->request->isXmlHttpRequest()) {
return;
}
if (!isset($_POST['token'])) {
return;
}
$notificationsNumber = [
'notifications' => $this->notificationsManager->getCurrentUserNotificationsNumber(),
'userMessages' => $this->notificationsManager->getCurrentUserMessagesNumber(),
'bands' => $this->notificationsManager->getBandMessagesNumber(),
'bandsNotifications' => $this->notificationsManager->getAllBandsNewsNumber()
];
$response = $this->ajaxChecker->removeStaticHtml(
$this->request,
$event->getResponse(),
$notificationsNumber,
$this->storageManager->getRemainingStorageForBands());
$event->setResponse($response);
}
}