ai_agents_test-1.0.0-alpha1/src/Traits/RevertConfigTrait.php

src/Traits/RevertConfigTrait.php
<?php

namespace Drupal\ai_agents_test\Traits;

use Drupal\Core\Config\ConfigImporter;
use Drupal\Core\Config\StorageComparer;
use Drupal\Core\Config\StorageComparerInterface;

/**
 * Provides a trait for reverting configuration.
 */
trait RevertConfigTrait {

  /**
   * The checkpoint storage.
   *
   * @var \Drupal\Core\Config\Checkpoint\CheckpointStorageInterface
   */
  protected $checkpointStorage;

  /**
   * Sets a new config checkpoint.
   */
  public function setCheckpoint(string $message) {
    $this->checkpointStorage = \Drupal::service('config.storage.checkpoint')->checkpoint($message);
  }

  /**
   * Reverts the checkpoint.
   */
  public function revertCheckpoint() {
    $checkpoint_storage = \Drupal::service('config.storage.checkpoint')->setCheckpointToReadFrom($this->checkpointStorage);
    $storage_comparer = new StorageComparer($checkpoint_storage, \Drupal::service('config.storage'));
    $storage_comparer->reset();

    $config_importer = $this->getConfigImporterFromComparer($storage_comparer);
    $config_importer->import();
  }

  /**
   * Get a config importer from a storage comparer.
   *
   * @param \Drupal\Core\Config\StorageComparerInterface $storageComparer
   *   A storage comparer to pass to the config importer.
   *
   * @return \Drupal\Core\Config\ConfigImporter
   *   The config importer.
   */
  protected function getConfigImporterFromComparer(StorageComparerInterface $storageComparer): ConfigImporter {
    $container = \Drupal::getContainer();
    return new ConfigImporter(
      $storageComparer,
      $container->get('event_dispatcher'),
      $container->get('config.manager'),
      $container->get('lock.persistent'),
      $container->get('config.typed'),
      $container->get('module_handler'),
      $container->get('module_installer'),
      $container->get('theme_handler'),
      $container->get('string_translation'),
      $container->get('extension.list.module'),
      $container->get('extension.list.theme')
    );
  }

}

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

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