X-Git-Url: https://git.rapsys.eu/userbundle/blobdiff_plain/43469deb349e799bbf590f5e3570d1ffd69ecb2c..36ebf250be87fc879c8718a4f37a1a57e82121d8:/Controller/AbstractController.php diff --git a/Controller/AbstractController.php b/Controller/AbstractController.php index d6f34a2..8750a20 100644 --- a/Controller/AbstractController.php +++ b/Controller/AbstractController.php @@ -13,11 +13,14 @@ namespace Rapsys\UserBundle\Controller; use Doctrine\ORM\EntityManagerInterface; use Doctrine\Persistence\ManagerRegistry; + +use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; + use Symfony\Bundle\FrameworkBundle\Controller\AbstractController as BaseAbstractController; use Symfony\Bundle\FrameworkBundle\Controller\ControllerTrait; use Symfony\Bundle\SecurityBundle\Security; -use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\Form\FormFactoryInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Response; @@ -27,8 +30,10 @@ use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Symfony\Component\Routing\RouterInterface; use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; use Symfony\Component\Security\Core\User\UserInterface; +use Symfony\Contracts\Cache\CacheInterface; use Symfony\Contracts\Service\ServiceSubscriberInterface; use Symfony\Contracts\Translation\TranslatorInterface; + use Twig\Environment; use Rapsys\PackBundle\Util\SluggerUtil; @@ -51,11 +56,6 @@ abstract class AbstractController extends BaseAbstractController implements Serv */ protected array $context; - /** - * Limit integer - */ - protected int $limit; - /** * Locale string */ @@ -66,72 +66,19 @@ abstract class AbstractController extends BaseAbstractController implements Serv */ protected int $page; - /** - * AuthorizationCheckerInterface instance - */ - protected AuthorizationCheckerInterface $checker; - - /** - * ManagerRegistry instance - */ - protected ManagerRegistry $doctrine; - - /** - * UserPasswordHasherInterface instance - */ - protected UserPasswordHasherInterface $hasher; - - /** - * LoggerInterface instance - */ - protected LoggerInterface $logger; - - /** - * MailerInterface instance - */ - protected MailerInterface $mailer; - - /** - * EntityManagerInterface instance - */ - protected EntityManagerInterface $manager; - /** * Request instance */ protected Request $request; - /** - * Router instance - */ - protected RouterInterface $router; - - /** - * Security instance - */ - protected Security $security; - - /** - * Slugger util instance - */ - protected SluggerUtil $slugger; - - /** - * Translator instance - */ - protected TranslatorInterface $translator; - - /** - * Twig\Environment instance - */ - protected Environment $twig; - /** * Abstract constructor * + * @param CacheInterface $cache The cache instance * @param AuthorizationCheckerInterface $checker The checker instance * @param ContainerInterface $container The container instance * @param ManagerRegistry $doctrine The doctrine instance + * @param FormFactoryInterface $factory The factory instance * @param UserPasswordHasherInterface $hasher The password hasher instance * @param LoggerInterface $logger The logger instance * @param MailerInterface $mailer The mailer instance @@ -144,49 +91,10 @@ abstract class AbstractController extends BaseAbstractController implements Serv * @param Environment $twig The twig environment instance * @param integer $limit The page limit */ - public function __construct(AuthorizationCheckerInterface $checker, ContainerInterface $container, ManagerRegistry $doctrine, UserPasswordHasherInterface $hasher, LoggerInterface $logger, MailerInterface $mailer, EntityManagerInterface $manager, RouterInterface $router, Security $security, SluggerUtil $slugger, RequestStack $stack, TranslatorInterface $translator, Environment $twig, int $limit = 5) { + public function __construct(protected CacheInterface $cache, protected AuthorizationCheckerInterface $checker, protected ContainerInterface $container, protected ManagerRegistry $doctrine, protected FormFactoryInterface $factory, protected UserPasswordHasherInterface $hasher, protected LoggerInterface $logger, protected MailerInterface $mailer, protected EntityManagerInterface $manager, protected RouterInterface $router, protected Security $security, protected SluggerUtil $slugger, protected RequestStack $stack, protected TranslatorInterface $translator, protected Environment $twig, protected int $limit = 5) { //Retrieve config $this->config = $container->getParameter(RapsysUserBundle::getAlias()); - //Set checker - $this->checker = $checker; - - //Set container - $this->container = $container; - - //Set doctrine - $this->doctrine = $doctrine; - - //Set hasher - $this->hasher = $hasher; - - //Set logger - $this->logger = $logger; - - //Set limit - $this->limit = $limit; - - //Set mailer - $this->mailer = $mailer; - - //Set manager - $this->manager = $manager; - - //Set router - $this->router = $router; - - //Set security - $this->security = $security; - - //Set slugger - $this->slugger = $slugger; - - //Set translator - $this->translator = $translator; - - //Set twig - $this->twig = $twig; - //Get current request $this->request = $stack->getCurrentRequest(); @@ -309,13 +217,13 @@ abstract class AbstractController extends BaseAbstractController implements Serv $pathInfo = $this->router->getContext()->getPathInfo(); //Iterate on locales excluding current one - foreach(($locales = array_keys($this->config['languages'])) as $locale) { + foreach(($locales = array_keys($this->config['default']['languages'])) as $locale) { //Set titles $titles = []; //Iterate on other locales foreach(array_diff($locales, [$locale]) as $other) { - $titles[$other] = $this->translator->trans($this->config['languages'][$locale], [], null, $other); + $titles[$other] = $this->translator->trans($this->config['default']['languages'][$locale], [], null, $other); } //Retrieve route matching path @@ -330,25 +238,25 @@ abstract class AbstractController extends BaseAbstractController implements Serv //With current locale if ($locale == $this->locale) { //Set locale locales context - $this->config[$tag][$view]['context']['head']['canonical'] = $this->router->generate($name, ['_locale' => $locale]+$route, UrlGeneratorInterface::ABSOLUTE_URL); + $this->config[$tag][$view]['context']['canonical'] = $this->router->generate($name, ['_locale' => $locale]+$route, UrlGeneratorInterface::ABSOLUTE_URL); } else { //Set locale locales context - $this->config[$tag][$view]['context']['head']['alternates'][$locale] = [ + $this->config[$tag][$view]['context']['alternates'][$locale] = [ 'absolute' => $this->router->generate($name, ['_locale' => $locale]+$route, UrlGeneratorInterface::ABSOLUTE_URL), 'relative' => $this->router->generate($name, ['_locale' => $locale]+$route), 'title' => implode('/', $titles), - 'translated' => $this->translator->trans($this->config['languages'][$locale], [], null, $locale) + 'translated' => $this->translator->trans($this->config['default']['languages'][$locale], [], null, $locale) ]; } //Add shorter locale - if (empty($this->config[$tag][$view]['context']['head']['alternates'][$slocale = substr($locale, 0, 2)])) { + if (empty($this->config[$tag][$view]['context']['alternates'][$slocale = substr($locale, 0, 2)])) { //Add shorter locale - $this->config[$tag][$view]['context']['head']['alternates'][$slocale] = [ + $this->config[$tag][$view]['context']['alternates'][$slocale] = [ 'absolute' => $this->router->generate($name, ['_locale' => $locale]+$route, UrlGeneratorInterface::ABSOLUTE_URL), 'relative' => $this->router->generate($name, ['_locale' => $locale]+$route), 'title' => implode('/', $titles), - 'translated' => $this->translator->trans($this->config['languages'][$locale], [], null, $locale) + 'translated' => $this->translator->trans($this->config['default']['languages'][$locale], [], null, $locale) ]; } } @@ -369,20 +277,21 @@ abstract class AbstractController extends BaseAbstractController implements Serv $response ??= new Response(); //With empty head locale - if (empty($parameters['head']['locale'])) { + if (empty($parameters['locale'])) { //Set head locale - $parameters['head']['locale'] = $this->locale; + $parameters['locale'] = $this->locale; } + /*TODO: XXX: to drop, we have title => [ 'page' => XXX, section => XXX, site => XXX ] //With empty head title and section if (empty($parameters['head']['title']) && !empty($parameters['section'])) { //Set head title - $parameters['head']['title'] = implode(' - ', [$parameters['title'], $parameters['section'], $parameters['head']['site']]); + $parameters['title'] = implode(' - ', [$parameters['title'], $parameters['section'], $parameters['head']['site']]); //With empty head title } elseif (empty($parameters['head']['title'])) { //Set head title $parameters['head']['title'] = implode(' - ', [$parameters['title'], $parameters['head']['site']]); - } + }*/ //Call twig render method $content = $this->twig->render($view, $parameters); @@ -414,16 +323,19 @@ abstract class AbstractController extends BaseAbstractController implements Serv return [ 'doctrine' => ManagerRegistry::class, 'doctrine.orm.default_entity_manager' => EntityManagerInterface::class, + 'form.factory' => FormFactoryInterface::class, 'logger' => LoggerInterface::class, 'mailer.mailer' => MailerInterface::class, 'rapsys_pack.slugger_util' => SluggerUtil::class, 'request_stack' => RequestStack::class, 'router' => RouterInterface::class, 'security.authorization_checker' => AuthorizationCheckerInterface::class, - 'security' => Security::class, + 'security.helper' => Security::class, 'security.user_password_hasher' => UserPasswordHasherInterface::class, 'service_container' => ContainerInterface::class, - 'translator' => TranslatorInterface::class + 'translator' => TranslatorInterface::class, + 'twig' => Environment::class, + 'user.cache' => CacheInterface::class ]; } }