vendor/ibexa/http-cache/src/lib/EventSubscriber/CachePurge/ContentTypeEventsSubscriber.php line 45

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\ContentType\AssignContentTypeGroupEvent;
  9. use Ibexa\Contracts\Core\Repository\Events\ContentType\DeleteContentTypeEvent;
  10. use Ibexa\Contracts\Core\Repository\Events\ContentType\DeleteContentTypeGroupEvent;
  11. use Ibexa\Contracts\Core\Repository\Events\ContentType\PublishContentTypeDraftEvent;
  12. use Ibexa\Contracts\Core\Repository\Events\ContentType\UnassignContentTypeGroupEvent;
  13. use Ibexa\Contracts\Core\Repository\Events\ContentType\UpdateContentTypeGroupEvent;
  14. use Ibexa\Contracts\HttpCache\Handler\ContentTagInterface;
  15. final class ContentTypeEventsSubscriber extends AbstractSubscriber
  16. {
  17.     private const TYPE_TAG_PREFIX 't';
  18.     private const TYPE_GROUP_TAG_PREFIX 't';
  19.     public static function getSubscribedEvents(): array
  20.     {
  21.         return [
  22.             AssignContentTypeGroupEvent::class => 'onAssignContentTypeGroup',
  23.             DeleteContentTypeGroupEvent::class => 'onDeleteContentTypeGroup',
  24.             DeleteContentTypeEvent::class => 'onDeleteContentType',
  25.             PublishContentTypeDraftEvent::class => 'onPublishContentTypeDraft',
  26.             UnassignContentTypeGroupEvent::class => 'onUnassignContentTypeGroup',
  27.             UpdateContentTypeGroupEvent::class => 'onUpdateContentTypeGroup',
  28.         ];
  29.     }
  30.     public function onAssignContentTypeGroup(AssignContentTypeGroupEvent $event): void
  31.     {
  32.         $contentTypeGroupId $event->getContentTypeGroup()->id;
  33.         $this->purgeClient->purge([
  34.             self::TYPE_GROUP_TAG_PREFIX $contentTypeGroupId,
  35.         ]);
  36.     }
  37.     public function onDeleteContentTypeGroup(DeleteContentTypeGroupEvent $event): void
  38.     {
  39.         $contentTypeGroupId $event->getContentTypeGroup()->id;
  40.         $this->purgeClient->purge([
  41.             self::TYPE_GROUP_TAG_PREFIX $contentTypeGroupId,
  42.         ]);
  43.     }
  44.     public function onDeleteContentType(DeleteContentTypeEvent $event): void
  45.     {
  46.         $contentTypeId $event->getContentType()->id;
  47.         $this->purgeClient->purge([
  48.             ContentTagInterface::CONTENT_TYPE_PREFIX $contentTypeId,
  49.             self::TYPE_TAG_PREFIX $contentTypeId,
  50.         ]);
  51.     }
  52.     public function onPublishContentTypeDraft(PublishContentTypeDraftEvent $event): void
  53.     {
  54.         $contentTypeId $event->getContentTypeDraft()->id;
  55.         $this->purgeClient->purge([
  56.             ContentTagInterface::CONTENT_TYPE_PREFIX $contentTypeId,
  57.             self::TYPE_TAG_PREFIX $contentTypeId,
  58.         ]);
  59.     }
  60.     public function onUnassignContentTypeGroup(UnassignContentTypeGroupEvent $event): void
  61.     {
  62.         $contentTypeGroupId $event->getContentTypeGroup()->id;
  63.         $this->purgeClient->purge([
  64.             self::TYPE_GROUP_TAG_PREFIX $contentTypeGroupId,
  65.         ]);
  66.     }
  67.     public function onUpdateContentTypeGroup(UpdateContentTypeGroupEvent $event): void
  68.     {
  69.         $contentTypeGroupId $event->getContentTypeGroup()->id;
  70.         $this->purgeClient->purge([
  71.             self::TYPE_GROUP_TAG_PREFIX $contentTypeGroupId,
  72.         ]);
  73.     }
  74. }
  75. class_alias(ContentTypeEventsSubscriber::class, 'EzSystems\PlatformHttpCacheBundle\EventSubscriber\CachePurge\ContentTypeEventsSubscriber');