You are here

class ConfigCollector in Configuration Provider 8.2

Same name and namespace in other branches
  1. 8 src/Plugin/ConfigCollector.php \Drupal\config_provider\Plugin\ConfigCollector

Class for invoking configuration providers..

Hierarchy

Expanded class hierarchy of ConfigCollector

1 string reference to 'ConfigCollector'
config_provider.services.yml in ./config_provider.services.yml
config_provider.services.yml
1 service uses ConfigCollector
config_provider.collector in ./config_provider.services.yml
Drupal\config_provider\Plugin\ConfigCollector

File

src/Plugin/ConfigCollector.php, line 12

Namespace

Drupal\config_provider\Plugin
View source
class ConfigCollector implements ConfigCollectorInterface {

  /**
   * The configuration factory.
   *
   * @var \Drupal\Core\Config\ConfigFactoryInterface
   */
  protected $configFactory;

  /**
   * The active configuration storage.
   *
   * @var \Drupal\Core\Config\StorageInterface
   */
  protected $activeStorage;

  /**
   * The configuration manager.
   *
   * @var \Drupal\Core\Config\ConfigManagerInterface
   */
  protected $configManager;

  /**
   * The provider configuration storage.
   *
   * @var \Drupal\Core\Config\StorageInterface
   */
  protected $providerStorage;

  /**
   * The configuration provider manager.
   *
   * @var \Drupal\config_provider\Plugin\ConfigProviderManager
   */
  protected $configProviderManager;

  /**
   * The name of the currently active installation profile.
   *
   * @var string
   */
  protected $installProfile;

  /**
   * The configuration provider plugin instances.
   *
   * @var \Drupal\config_provider\Plugin\ConfigProvider
   */
  protected $configProviders;

  /**
   * Constructor for ConfigCollector objects.
   *
   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
   *   The configuration factory.
   * @param \Drupal\Core\Config\StorageInterface $active_storage
   *   The active configuration storage.
   * @param \Drupal\Core\Config\ConfigManagerInterface $config_manager
   *   The configuration manager.
   * @param \Drupal\Core\Config\StorageInterface $provider_storage
   *   The provider configuration storage.
   * @param \Drupal\config_provider\Plugin\ConfigProviderManager $config_provider_manager
   *   The configuration provider manager.
   * @param string $install_profile
   *   (optional) The current installation profile. This parameter will be
   *   mandatory in Drupal 9.0.0.
   */
  public function __construct(ConfigFactoryInterface $config_factory, StorageInterface $active_storage, ConfigManagerInterface $config_manager, StorageInterface $provider_storage, ConfigProviderManager $config_provider_manager, $install_profile = NULL) {
    $this->configFactory = $config_factory;
    $this->activeStorage = $active_storage;
    $this->configManager = $config_manager;
    $this->providerStorage = $provider_storage;
    $this->configProviderManager = $config_provider_manager;
    if (is_null($install_profile)) {
      @trigger_error('Install profile will be a mandatory parameter in Drupal 9.0.', E_USER_DEPRECATED);
    }
    $this->installProfile = $install_profile ?: \Drupal::installProfile();
    $this->configProviders = [];
  }

  /**
   * {@inheritdoc}
   */
  public function getConfigProviders() {
    if (empty($this->configProviders)) {
      $definitions = $this->configProviderManager
        ->getDefinitions();
      foreach (array_keys($definitions) as $id) {
        $this
          ->initConfigProviderInstance($id);
      }
    }
    return $this->configProviders;
  }

  /**
   * {@inheritdoc}
   */
  public function addInstallableConfig(array $extensions = []) {

    // Start with an empty storage.
    $this->providerStorage
      ->deleteAll();
    foreach ($this->providerStorage
      ->getAllCollectionNames() as $collection) {
      $provider_collection = $this->providerStorage
        ->createCollection($collection);
      $provider_collection
        ->deleteAll();
    }

    /* @var \Drupal\config_provider\Plugin\ConfigProviderInterface[] $providers */
    $providers = $this
      ->getConfigProviders();
    foreach ($providers as $provider) {
      $provider
        ->addInstallableConfig($extensions);
    }
  }

  /**
   * Initializes an instance of the specified configuration provider.
   *
   * @param string $id
   *   The string identifier of the configuration provider.
   */
  protected function initConfigProviderInstance($id) {
    if (!isset($this->configProviders[$id])) {
      $instance = $this->configProviderManager
        ->createInstance($id, []);
      $instance
        ->setConfigFactory($this->configFactory);
      $instance
        ->setActiveStorages($this->activeStorage);
      $instance
        ->setConfigManager($this->configManager);
      $instance
        ->setProviderStorage($this->providerStorage);
      $instance
        ->setInstallProfile($this->installProfile);
      $this->configProviders[$id] = $instance;
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ConfigCollector::$activeStorage protected property The active configuration storage.
ConfigCollector::$configFactory protected property The configuration factory.
ConfigCollector::$configManager protected property The configuration manager.
ConfigCollector::$configProviderManager protected property The configuration provider manager.
ConfigCollector::$configProviders protected property The configuration provider plugin instances.
ConfigCollector::$installProfile protected property The name of the currently active installation profile.
ConfigCollector::$providerStorage protected property The provider configuration storage.
ConfigCollector::addInstallableConfig public function Adds installable configuration from all provider plugins. Overrides ConfigCollectorInterface::addInstallableConfig
ConfigCollector::getConfigProviders public function Gets all configuration provider plugins. Overrides ConfigCollectorInterface::getConfigProviders
ConfigCollector::initConfigProviderInstance protected function Initializes an instance of the specified configuration provider.
ConfigCollector::__construct public function Constructor for ConfigCollector objects.