You are here

class ConfigDistroFilterEventSubscriber in Config Distro 8

Class ConfigDistroFilterEventSubscriber.

Hierarchy

Expanded class hierarchy of ConfigDistroFilterEventSubscriber

1 string reference to 'ConfigDistroFilterEventSubscriber'
config_distro_filter.services.yml in modules/config_distro_filter/config_distro_filter.services.yml
modules/config_distro_filter/config_distro_filter.services.yml
1 service uses ConfigDistroFilterEventSubscriber
config_distro_filter.event_subscriber in modules/config_distro_filter/config_distro_filter.services.yml
Drupal\config_distro_filter\ConfigDistroFilterEventSubscriber

File

modules/config_distro_filter/src/ConfigDistroFilterEventSubscriber.php, line 15

Namespace

Drupal\config_distro_filter
View source
class ConfigDistroFilterEventSubscriber implements EventSubscriberInterface {
  use StorageCopyTrait;

  /**
   * The filter storage factory.
   *
   * @var \Drupal\config_filter\ConfigFilterStorageFactory
   */
  protected $filterStorageFactory;

  /**
   * ConfigFilterEventSubscriber constructor.
   *
   * @param \Drupal\config_filter\ConfigFilterStorageFactory $filterStorageFactory
   *   The filter storage factory.
   */
  public function __construct(ConfigFilterStorageFactory $filterStorageFactory) {
    $this->filterStorageFactory = $filterStorageFactory;
  }

  /**
   * The storage is transformed for importing.
   *
   * @param \Drupal\config_distro\Event\DistroStorageTransformEvent $event
   */
  public function onDistroTransform(DistroStorageTransformEvent $event) {
    $storage = $event
      ->getStorage();

    // The temporary storage representing the active storage.
    $temp = new MemoryStorage();

    // Get the filtered storage based on the event storage.
    $filtered = $this->filterStorageFactory
      ->getFilteredStorage($storage, [
      'config_distro.storage.distro',
    ]);

    // Simulate the importing of configuration.
    self::replaceStorageContents($filtered, $temp);

    // Set the event storage to the one of the simulated import.
    self::replaceStorageContents($temp, $storage);
  }

  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents() {
    $events[ConfigDistroEvents::TRANSFORM][] = [
      'onDistroTransform',
    ];
    return $events;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ConfigDistroFilterEventSubscriber::$filterStorageFactory protected property The filter storage factory.
ConfigDistroFilterEventSubscriber::getSubscribedEvents public static function Returns an array of event names this subscriber wants to listen to.
ConfigDistroFilterEventSubscriber::onDistroTransform public function The storage is transformed for importing.
ConfigDistroFilterEventSubscriber::__construct public function ConfigFilterEventSubscriber constructor.
StorageCopyTrait::replaceStorageContents protected static function Copy the configuration from one storage to another and remove stale items.