vendor/ibexa/http-cache/src/lib/EventSubscriber/CachePurge/UserEventsSubscriber.php line 93

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\HttpCache\EventSubscriber\CachePurge;
  8. use Ibexa\Contracts\Core\Repository\Events\User\AssignUserToUserGroupEvent;
  9. use Ibexa\Contracts\Core\Repository\Events\User\CreateUserEvent;
  10. use Ibexa\Contracts\Core\Repository\Events\User\CreateUserGroupEvent;
  11. use Ibexa\Contracts\Core\Repository\Events\User\UnAssignUserFromUserGroupEvent;
  12. use Ibexa\Contracts\Core\Repository\Events\User\UpdateUserEvent;
  13. use Ibexa\Contracts\Core\Repository\Events\User\UpdateUserGroupEvent;
  14. use Ibexa\Contracts\HttpCache\Handler\ContentTagInterface;
  15. final class UserEventsSubscriber extends AbstractSubscriber
  16. {
  17.     public static function getSubscribedEvents(): array
  18.     {
  19.         return [
  20.             AssignUserToUserGroupEvent::class => 'onAssignUserToUserGroup',
  21.             CreateUserGroupEvent::class => 'onCreateUserGroup',
  22.             CreateUserEvent::class => 'onCreateUser',
  23.             UnAssignUserFromUserGroupEvent::class => 'onUnAssignUserFromUserGroup',
  24.             UpdateUserGroupEvent::class => 'onUpdateUserGroup',
  25.             UpdateUserEvent::class => 'onUpdateUser',
  26.         ];
  27.     }
  28.     public function onAssignUserToUserGroup(AssignUserToUserGroupEvent $event): void
  29.     {
  30.         $userId $event->getUser()->id;
  31.         $userGroupId $event->getUserGroup()->id;
  32.         $this->purgeClient->purge([
  33.             ContentTagInterface::CONTENT_PREFIX $userId,
  34.             ContentTagInterface::CONTENT_PREFIX $userGroupId,
  35.             'ez-user-context-hash',
  36.         ]);
  37.     }
  38.     public function onCreateUserGroup(CreateUserGroupEvent $event): void
  39.     {
  40.         $userGroupId $event->getUserGroup()->id;
  41.         $tags array_merge(
  42.             $this->getContentTags($userGroupId),
  43.             $this->getContentLocationsTags($userGroupId)
  44.         );
  45.         $this->purgeClient->purge($tags);
  46.     }
  47.     public function onCreateUser(CreateUserEvent $event): void
  48.     {
  49.         $userId $event->getUser()->id;
  50.         $tags array_merge(
  51.             $this->getContentTags($userId),
  52.             $this->getContentLocationsTags($userId)
  53.         );
  54.         $this->purgeClient->purge($tags);
  55.     }
  56.     public function onUnAssignUserFromUserGroup(UnAssignUserFromUserGroupEvent $event): void
  57.     {
  58.         $userId $event->getUser()->id;
  59.         $userGroupId $event->getUserGroup()->id;
  60.         $this->purgeClient->purge([
  61.             ContentTagInterface::CONTENT_PREFIX $userId,
  62.             ContentTagInterface::CONTENT_PREFIX $userGroupId,
  63.             'ez-user-context-hash',
  64.         ]);
  65.     }
  66.     public function onUpdateUserGroup(UpdateUserGroupEvent $event): void
  67.     {
  68.         $userGroupId $event->getUserGroup()->id;
  69.         $tags array_merge(
  70.             $this->getContentTags($userGroupId),
  71.             $this->getContentLocationsTags($userGroupId)
  72.         );
  73.         $this->purgeClient->purge($tags);
  74.     }
  75.     public function onUpdateUser(UpdateUserEvent $event): void
  76.     {
  77.         $userId $event->getUser()->id;
  78.         $tags array_merge(
  79.             $this->getContentTags($userId),
  80.             $this->getContentLocationsTags($userId)
  81.         );
  82.         $this->purgeClient->purge($tags);
  83.     }
  84. }
  85. class_alias(UserEventsSubscriber::class, 'EzSystems\PlatformHttpCacheBundle\EventSubscriber\CachePurge\UserEventsSubscriber');