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

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');