From 122acc951c8cba0d8be2a3ed32f3f11f0f0dd9d4 Mon Sep 17 00:00:00 2001 From: tuxes3 Date: Mon, 21 Aug 2023 15:28:08 +0200 Subject: [PATCH] fix: inject request stack for symfony 6 --- Core/H5PSymfony.php | 28 ++++++++++++++++++++-------- Resources/config/services.yml | 5 ++++- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/Core/H5PSymfony.php b/Core/H5PSymfony.php index 1c45a6f..aaf1754 100644 --- a/Core/H5PSymfony.php +++ b/Core/H5PSymfony.php @@ -23,6 +23,8 @@ use GuzzleHttp\Client; use H5PPermission; use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\HttpFoundation\Exception\SessionNotFoundException; +use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\HttpKernel\Kernel; use Symfony\Component\Routing\Router; @@ -84,7 +86,8 @@ public function __construct(H5POptions $options, EditorStorage $editorStorage, TokenStorageInterface $tokenStorage, EntityManagerInterface $manager, - Session $session, + ?Session $session, + ?RequestStack $requestStack, AuthorizationCheckerInterface $authorizationChecker, EventDispatcherInterface $eventDispatcher, RouterInterface $router) @@ -93,10 +96,16 @@ public function __construct(H5POptions $options, $this->editorStorage = $editorStorage; $this->tokenStorage = $tokenStorage; $this->manager = $manager; - $this->session = $session; $this->authorizationChecker = $authorizationChecker; $this->eventDispatcher = $eventDispatcher; $this->router = $router; + try { + $this->session = !$requestStack ? null : $requestStack->getSession(); + } catch (SessionNotFoundException $e) { + } + if (!$this->session) { + $this->session = $session; + } } /** @@ -195,7 +204,9 @@ public function setLibraryTutorialUrl($machineName, $tutorialUrl) */ public function setErrorMessage($message, $code = NULL) { - $this->session->getFlashBag()->add("error", "[$code]: $message"); + if ($this->session) { + $this->session->getFlashBag()->add("error", "[$code]: $message"); + } } /** @@ -204,7 +215,9 @@ public function setErrorMessage($message, $code = NULL) */ public function setInfoMessage($message) { - $this->session->getFlashBag()->add("info", "$message"); + if ($this->session) { + $this->session->getFlashBag()->add("info", "$message"); + } } /** @@ -214,11 +227,10 @@ public function setInfoMessage($message) */ public function getMessages($type) { - if (!$this->session->getFlashBag()->has($type)) { - return NULL; + if (!$this->session || !$this->session->getFlashBag()->has($type)) { + return null; } - $messages = $this->session->getFlashBag()->get($type); - return $messages; + return $this->session->getFlashBag()->get($type); } /** diff --git a/Resources/config/services.yml b/Resources/config/services.yml index 51270d2..3daf396 100644 --- a/Resources/config/services.yml +++ b/Resources/config/services.yml @@ -16,7 +16,7 @@ services: studit_h5p.interface: class: Studit\H5PBundle\Core\H5PSymfony - arguments: ['@studit_h5p.options', '@studit_h5p.editor_storage','@security.token_storage', '@doctrine.orm.entity_manager', '@session', '@security.authorization_checker', '@event_dispatcher', '@router.default'] + arguments: ['@studit_h5p.options', '@studit_h5p.editor_storage','@security.token_storage', '@doctrine.orm.entity_manager', '@?session', '@?request_stack', '@security.authorization_checker', '@event_dispatcher', '@router.default'] Studit\H5PBundle\Core\H5PSymfony: '@studit_h5p.interface' studit_h5p.filestorage: @@ -91,12 +91,15 @@ services: Studit\H5PBundle\Controller\H5PController: autowire: true + autoconfigure: true tags: [ 'controller.service_arguments'] Studit\H5PBundle\Controller\H5PInteractionController: autowire: true + autoconfigure: true tags: [ 'controller.service_arguments'] Studit\H5PBundle\Controller\H5PAJAXController: autowire: true + autoconfigure: true tags: [ 'controller.service_arguments'] Studit\H5PBundle\Entity\EventRepository: