vendor/ezsystems/repository-forms/lib/Form/Processor/User/UserCreateFormProcessor.php line 50

Open in your IDE?
  1. <?php
  2. /**
  3.  * This file is part of the eZ RepositoryForms package.
  4.  *
  5.  * @copyright Copyright (C) eZ Systems AS. All rights reserved.
  6.  * @license For full copyright and license information view LICENSE file distributed with this source code.
  7.  *
  8.  * @version //autogentag//
  9.  */
  10. namespace EzSystems\RepositoryForms\Form\Processor\User;
  11. use eZ\Publish\API\Repository\UserService;
  12. use EzSystems\RepositoryForms\Data\User\UserCreateData;
  13. use EzSystems\RepositoryForms\Event\FormActionEvent;
  14. use EzSystems\RepositoryForms\Event\RepositoryFormEvents;
  15. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  16. use Symfony\Component\HttpFoundation\RedirectResponse;
  17. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  18. /**
  19.  * Listens for and processes User create events.
  20.  */
  21. class UserCreateFormProcessor implements EventSubscriberInterface
  22. {
  23.     /** @var UserService */
  24.     private $userService;
  25.     /** @var UrlGeneratorInterface */
  26.     private $urlGenerator;
  27.     /**
  28.      * @param UserService $userService
  29.      * @param UrlGeneratorInterface $urlGenerator
  30.      */
  31.     public function __construct(
  32.         UserService $userService,
  33.         UrlGeneratorInterface $urlGenerator
  34.     ) {
  35.         $this->userService $userService;
  36.         $this->urlGenerator $urlGenerator;
  37.     }
  38.     public static function getSubscribedEvents()
  39.     {
  40.         return [
  41.             RepositoryFormEvents::USER_CREATE => ['processCreate'20],
  42.         ];
  43.     }
  44.     public function processCreate(FormActionEvent $event)
  45.     {
  46.         $data $data $event->getData();
  47.         if (!$data instanceof UserCreateData) {
  48.             return;
  49.         }
  50.         $form $event->getForm();
  51.         $languageCode $form->getConfig()->getOption('languageCode');
  52.         $this->setContentFields($data$languageCode);
  53.         $user $this->userService->createUser($data$data->getParentGroups());
  54.         $redirectUrl $form['redirectUrlAfterPublish']->getData() ?: $this->urlGenerator->generate(
  55.             '_ezpublishLocation',
  56.             ['locationId' => $user->contentInfo->mainLocationId],
  57.             UrlGeneratorInterface::ABSOLUTE_URL
  58.         );
  59.         $event->setResponse(new RedirectResponse($redirectUrl));
  60.     }
  61.     /**
  62.      * @param UserCreateData $data
  63.      * @param string $languageCode
  64.      */
  65.     private function setContentFields(UserCreateData $datastring $languageCode): void
  66.     {
  67.         foreach ($data->fieldsData as $fieldDefIdentifier => $fieldData) {
  68.             if ('ezuser' === $fieldData->getFieldTypeIdentifier()) {
  69.                 continue;
  70.             }
  71.             $data->setField($fieldDefIdentifier$fieldData->value$languageCode);
  72.         }
  73.     }
  74. }