media_library_extend_crowdriff-1.x-dev/src/EventSubscriber/CrowdriffEntityUsageEventSubscriber.php

src/EventSubscriber/CrowdriffEntityUsageEventSubscriber.php
<?php

namespace Drupal\media_library_extend_crowdriff\EventSubscriber;

use Drupal\Core\Cache\Cache;
use Drupal\entity_usage\Events\EntityUsageEvent;
use Drupal\entity_usage\Events\Events;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

/**
 * Crowdriff Entity Usage Event Subscriber.
 *
 * @package Drupal\media_library_extend_crowdriff\EventSubscriber
 */
class CrowdriffEntityUsageEventSubscriber implements EventSubscriberInterface {

  /**
   * {@inheritdoc}
   *
   * @return array
   *   The event names to listen for, and the methods that should be executed.
   */
  public static function getSubscribedEvents(): array {
    return [
      Events::USAGE_REGISTER => 'invalidateMedia',
      Events::BULK_DELETE_DESTINATIONS => 'invalidateMedia',
      Events::BULK_DELETE_SOURCES => 'invalidateMedia',
      Events::DELETE_BY_FIELD => 'invalidateMedia',
      Events::DELETE_BY_SOURCE_ENTITY => 'invalidateMedia',
      Events::DELETE_BY_TARGET_ENTITY => 'invalidateMedia',
    ];
  }

  /**
   * Invalidate Media cache tag on specific entity usage events.
   *
   * @param \Drupal\entity_usage\Events\EntityUsageEvent $event
   *   The entity usage event.
   */
  public function invalidateMedia(EntityUsageEvent $event) {
    if (!empty($event->getTargetEntityType()) && $event->getTargetEntityType() == 'media') {
      if ($mediaId = $event->getTargetEntityId()) {
        Cache::invalidateTags(['media:' . $mediaId]);
      }
    }
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc