vendor/ibexa/user/src/lib/EventListener/ViewTemplatesListener.php line 36

Open in your IDE?
  1. <?php
  2. /**
  3.  * @copyright Copyright (C) Ibexa AS. All rights reserved.
  4.  * @license For full copyright and license information view LICENSE file distributed with this source code.
  5.  */
  6. declare(strict_types=1);
  7. namespace Ibexa\User\EventListener;
  8. use Ibexa\ContentForms\User\View\UserUpdateView;
  9. use Ibexa\Contracts\Core\SiteAccess\ConfigResolverInterface;
  10. use Ibexa\Core\MVC\Symfony\Event\PreContentViewEvent;
  11. use Ibexa\Core\MVC\Symfony\MVCEvents;
  12. use Ibexa\User\View;
  13. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  14. class ViewTemplatesListener implements EventSubscriberInterface
  15. {
  16.     /** @var \Ibexa\Contracts\Core\SiteAccess\ConfigResolverInterface */
  17.     private $configResolver;
  18.     public function __construct(ConfigResolverInterface $configResolver)
  19.     {
  20.         $this->configResolver $configResolver;
  21.     }
  22.     public static function getSubscribedEvents(): array
  23.     {
  24.         return [MVCEvents::PRE_CONTENT_VIEW => [
  25.             ['setViewTemplates'0],
  26.             ['setUserEditViewTemplateParameters'0],
  27.         ]];
  28.     }
  29.     public function setUserEditViewTemplateParameters(PreContentViewEvent $event): void
  30.     {
  31.         $contentView $event->getContentView();
  32.         if (!$contentView instanceof UserUpdateView) {
  33.             return;
  34.         }
  35.         $user $contentView->getParameter('user');
  36.         $isPublished null !== $user->contentInfo->mainLocationId && $user->contentInfo->published;
  37.         $contentView->addParameters([
  38.             'is_published' => $isPublished,
  39.         ]);
  40.     }
  41.     /**
  42.      * If the event's view has a defined template, sets the view's template identifier,
  43.      * and the 'pagelayout' parameter.
  44.      */
  45.     public function setViewTemplates(PreContentViewEvent $event): void
  46.     {
  47.         $view $event->getContentView();
  48.         $pagelayout $this->configResolver->getParameter('pagelayout');
  49.         foreach ($this->getTemplatesMap() as $viewClass => $template) {
  50.             if ($view instanceof $viewClass) {
  51.                 $view->setTemplateIdentifier($template);
  52.                 $view->addParameters(['pagelayout' => $pagelayout]);
  53.                 $view->addParameters(['page_layout' => $pagelayout]);
  54.             }
  55.         }
  56.     }
  57.     /**
  58.      * @return string[]
  59.      */
  60.     private function getTemplatesMap(): array
  61.     {
  62.         return [
  63.             View\ChangePassword\FormView::class => $this->configResolver->getParameter('user_change_password.templates.form'),
  64.             View\ChangePassword\SuccessView::class => $this->configResolver->getParameter('user_change_password.templates.success'),
  65.             View\ForgotPassword\FormView::class => $this->configResolver->getParameter('user_forgot_password.templates.form'),
  66.             View\ForgotPassword\SuccessView::class => $this->configResolver->getParameter('user_forgot_password_success.templates.form'),
  67.             View\ForgotPassword\LoginView::class => $this->configResolver->getParameter('user_forgot_password_login.templates.form'),
  68.             View\ResetPassword\FormView::class => $this->configResolver->getParameter('user_reset_password.templates.form'),
  69.             View\ResetPassword\InvalidLinkView::class => $this->configResolver->getParameter('user_reset_password.templates.invalid_link'),
  70.             View\ResetPassword\SuccessView::class => $this->configResolver->getParameter('user_reset_password.templates.success'),
  71.             View\UserSettings\ListView::class => $this->configResolver->getParameter('user_settings.templates.list'),
  72.             View\Register\FormView::class => $this->configResolver->getParameter('user_registration.templates.form'),
  73.             View\Register\ConfirmView::class => $this->configResolver->getParameter('user_registration.templates.confirmation'),
  74.             View\Invitation\FormView::class => $this->configResolver->getParameter('user_invitation.templates.form'),
  75.         ];
  76.     }
  77. }
  78. class_alias(ViewTemplatesListener::class, 'EzSystems\EzPlatformUser\EventListener\ViewTemplatesListener');