vendor/ibexa/core/src/lib/Search/Common/EventSubscriber/UserEventSubscriber.php line 111

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. namespace Ibexa\Core\Search\Common\EventSubscriber;
  7. use Ibexa\Contracts\Core\Repository\Event\AfterEvent;
  8. use Ibexa\Contracts\Core\Repository\Events\User\AssignUserToUserGroupEvent;
  9. use Ibexa\Contracts\Core\Repository\Events\User\BeforeUnAssignUserFromUserGroupEvent;
  10. use Ibexa\Contracts\Core\Repository\Events\User\CreateUserEvent;
  11. use Ibexa\Contracts\Core\Repository\Events\User\CreateUserGroupEvent;
  12. use Ibexa\Contracts\Core\Repository\Events\User\DeleteUserEvent;
  13. use Ibexa\Contracts\Core\Repository\Events\User\DeleteUserGroupEvent;
  14. use Ibexa\Contracts\Core\Repository\Events\User\MoveUserGroupEvent;
  15. use Ibexa\Contracts\Core\Repository\Events\User\UnAssignUserFromUserGroupEvent;
  16. use Ibexa\Contracts\Core\Repository\Events\User\UpdateUserEvent;
  17. use Ibexa\Contracts\Core\Repository\Events\User\UpdateUserGroupEvent;
  18. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  19. class UserEventSubscriber extends AbstractSearchEventSubscriber implements EventSubscriberInterface
  20. {
  21.     public static function getSubscribedEvents(): array
  22.     {
  23.         return [
  24.             CreateUserEvent::class => 'onCreateUser',
  25.             CreateUserGroupEvent::class => 'onCreateUserGroup',
  26.             DeleteUserEvent::class => 'onDeleteUser',
  27.             DeleteUserGroupEvent::class => 'onDeleteUserGroup',
  28.             MoveUserGroupEvent::class => 'onMoveUserGroup',
  29.             UpdateUserEvent::class => 'onUpdateUser',
  30.             UpdateUserGroupEvent::class => 'onUpdateUserGroup',
  31.             AssignUserToUserGroupEvent::class => 'onAssignUserToUserGroup',
  32.             UnAssignUserFromUserGroupEvent::class => 'onUnAssignUserFromUserGroup',
  33.             BeforeUnAssignUserFromUserGroupEvent::class => 'onBeforeUnAssignUserFromUserGroup',
  34.         ];
  35.     }
  36.     public function onCreateUser(CreateUserEvent $event)
  37.     {
  38.         $userContentInfo $this->persistenceHandler->contentHandler()->loadContentInfo(
  39.             $event->getUser()->id
  40.         );
  41.         $this->searchHandler->indexContent(
  42.             $this->persistenceHandler->contentHandler()->load(
  43.                 $userContentInfo->id,
  44.                 $userContentInfo->currentVersionNo
  45.             )
  46.         );
  47.         $locations $this->persistenceHandler->locationHandler()->loadLocationsByContent(
  48.             $userContentInfo->id
  49.         );
  50.         foreach ($locations as $location) {
  51.             $this->searchHandler->indexLocation($location);
  52.         }
  53.     }
  54.     public function onCreateUserGroup(CreateUserGroupEvent $event)
  55.     {
  56.         $userGroupContentInfo $this->persistenceHandler->contentHandler()->loadContentInfo(
  57.             $event->getUserGroup()->id
  58.         );
  59.         $this->searchHandler->indexContent(
  60.             $this->persistenceHandler->contentHandler()->load(
  61.                 $userGroupContentInfo->id,
  62.                 $userGroupContentInfo->currentVersionNo
  63.             )
  64.         );
  65.         $locations $this->persistenceHandler->locationHandler()->loadLocationsByContent(
  66.             $userGroupContentInfo->id
  67.         );
  68.         foreach ($locations as $location) {
  69.             $this->searchHandler->indexLocation($location);
  70.         }
  71.     }
  72.     public function onDeleteUser(DeleteUserEvent $event)
  73.     {
  74.         $this->searchHandler->deleteContent($event->getUser()->id);
  75.         foreach ($event->getLocations() as $locationId) {
  76.             $this->searchHandler->deleteLocation($locationId$event->getUser()->id);
  77.         }
  78.     }
  79.     public function onDeleteUserGroup(DeleteUserGroupEvent $event)
  80.     {
  81.         $this->searchHandler->deleteContent($event->getUserGroup()->id);
  82.         foreach ($event->getLocations() as $locationId) {
  83.             $this->searchHandler->deleteLocation($locationId$event->getUserGroup()->id);
  84.         }
  85.     }
  86.     public function onMoveUserGroup(MoveUserGroupEvent $event)
  87.     {
  88.         $userGroupContentInfo $this->persistenceHandler->contentHandler()->loadContentInfo(
  89.             $event->getUserGroup()->id
  90.         );
  91.         $this->indexSubtree($userGroupContentInfo->mainLocationId);
  92.     }
  93.     public function onUpdateUser(UpdateUserEvent $event)
  94.     {
  95.         $userContentInfo $this->persistenceHandler->contentHandler()->loadContentInfo(
  96.             $event->getUser()->id
  97.         );
  98.         $this->searchHandler->indexContent(
  99.             $this->persistenceHandler->contentHandler()->load(
  100.                 $userContentInfo->id,
  101.                 $userContentInfo->currentVersionNo
  102.             )
  103.         );
  104.         $locations $this->persistenceHandler->locationHandler()->loadLocationsByContent(
  105.             $userContentInfo->id
  106.         );
  107.         foreach ($locations as $location) {
  108.             $this->searchHandler->indexLocation($location);
  109.         }
  110.     }
  111.     public function onUpdateUserGroup(UpdateUserGroupEvent $event)
  112.     {
  113.         $userContentInfo $this->persistenceHandler->contentHandler()->loadContentInfo(
  114.             $event->getUserGroup()->id
  115.         );
  116.         $this->searchHandler->indexContent(
  117.             $this->persistenceHandler->contentHandler()->load(
  118.                 $userContentInfo->id,
  119.                 $userContentInfo->currentVersionNo
  120.             )
  121.         );
  122.         $locations $this->persistenceHandler->locationHandler()->loadLocationsByContent(
  123.             $userContentInfo->id
  124.         );
  125.         foreach ($locations as $location) {
  126.             $this->searchHandler->indexLocation($location);
  127.         }
  128.     }
  129.     public function onAssignUserToUserGroup(AssignUserToUserGroupEvent $event): void
  130.     {
  131.         $this->indexUserContentWithLocation($event);
  132.     }
  133.     public function onUnAssignUserFromUserGroup(UnAssignUserFromUserGroupEvent $event): void
  134.     {
  135.         $this->indexUserContentWithLocation($event);
  136.     }
  137.     public function onBeforeUnAssignUserFromUserGroup(BeforeUnAssignUserFromUserGroupEvent $event): void
  138.     {
  139.         $userContentInfo $this->persistenceHandler->contentHandler()->loadContentInfo(
  140.             $event->getUser()->id
  141.         );
  142.         $locations $this->persistenceHandler->locationHandler()->loadLocationsByContent(
  143.             $userContentInfo->id
  144.         );
  145.         foreach ($locations as $location) {
  146.             $this->searchHandler->deleteLocation($location->id$userContentInfo->id);
  147.         }
  148.     }
  149.     private function indexUserContentWithLocation(AfterEvent $event): void
  150.     {
  151.         $userContentInfo $this->persistenceHandler->contentHandler()->loadContentInfo(
  152.             $event->getUser()->id
  153.         );
  154.         $locations $this->persistenceHandler->locationHandler()->loadLocationsByContent(
  155.             $userContentInfo->id
  156.         );
  157.         $this->searchHandler->indexContent(
  158.             $this->persistenceHandler->contentHandler()->load(
  159.                 $userContentInfo->id,
  160.                 $userContentInfo->currentVersionNo
  161.             )
  162.         );
  163.         foreach ($locations as $location) {
  164.             $this->searchHandler->indexLocation($location);
  165.         }
  166.     }
  167. }
  168. class_alias(UserEventSubscriber::class, 'eZ\Publish\Core\Search\Common\EventSubscriber\UserEventSubscriber');