vendor/ibexa/content-forms/src/lib/Form/Processor/User/UserCreateFormProcessor.php line 49

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\ContentForms\Form\Processor\User;
  8. use Ibexa\ContentForms\Data\User\UserCreateData;
  9. use Ibexa\ContentForms\Event\ContentFormEvents;
  10. use Ibexa\ContentForms\Event\FormActionEvent;
  11. use Ibexa\Contracts\Core\Repository\UserService;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. use Symfony\Component\HttpFoundation\RedirectResponse;
  14. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  15. /**
  16.  * Listens for and processes User create events.
  17.  */
  18. class UserCreateFormProcessor implements EventSubscriberInterface
  19. {
  20.     /** @var \Ibexa\Contracts\Core\Repository\UserService */
  21.     private $userService;
  22.     /** @var \Symfony\Component\Routing\Generator\UrlGeneratorInterface */
  23.     private $urlGenerator;
  24.     /**
  25.      * @param \Ibexa\Contracts\Core\Repository\UserService $userService
  26.      * @param \Symfony\Component\Routing\Generator\UrlGeneratorInterface $urlGenerator
  27.      */
  28.     public function __construct(
  29.         UserService $userService,
  30.         UrlGeneratorInterface $urlGenerator
  31.     ) {
  32.         $this->userService $userService;
  33.         $this->urlGenerator $urlGenerator;
  34.     }
  35.     public static function getSubscribedEvents()
  36.     {
  37.         return [
  38.             ContentFormEvents::USER_CREATE => ['processCreate'20],
  39.         ];
  40.     }
  41.     public function processCreate(FormActionEvent $event)
  42.     {
  43.         $data $data $event->getData();
  44.         if (!$data instanceof UserCreateData) {
  45.             return;
  46.         }
  47.         $form $event->getForm();
  48.         $languageCode $form->getConfig()->getOption('languageCode');
  49.         $this->setContentFields($data$languageCode);
  50.         $user $this->userService->createUser($data$data->getParentGroups());
  51.         $redirectUrl $form['redirectUrlAfterPublish']->getData() ?: $this->urlGenerator->generate(
  52.             'ibexa.content.view',
  53.             [
  54.                 'contentId' => $user->id,
  55.                 'locationId' => $user->contentInfo->mainLocationId,
  56.             ],
  57.             UrlGeneratorInterface::ABSOLUTE_URL
  58.         );
  59.         $event->setResponse(new RedirectResponse($redirectUrl));
  60.     }
  61.     /**
  62.      * @param \Ibexa\ContentForms\Data\User\UserCreateData $data
  63.      * @param string $languageCode
  64.      */
  65.     private function setContentFields(UserCreateData $datastring $languageCode): void
  66.     {
  67.         foreach ($data->fieldsData as $fieldDefIdentifier => $fieldData) {
  68.             $data->setField($fieldDefIdentifier$fieldData->value$languageCode);
  69.         }
  70.     }
  71. }
  72. class_alias(UserCreateFormProcessor::class, 'EzSystems\EzPlatformContentForms\Form\Processor\User\UserCreateFormProcessor');