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