You are here

public function ConfigInstaller::checkConfigurationToInstall in Drupal 8

Same name in this branch
  1. 8 core/lib/Drupal/Core/Config/ConfigInstaller.php \Drupal\Core\Config\ConfigInstaller::checkConfigurationToInstall()
  2. 8 core/lib/Drupal/Core/ProxyClass/Config/ConfigInstaller.php \Drupal\Core\ProxyClass\Config\ConfigInstaller::checkConfigurationToInstall()
Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/Config/ConfigInstaller.php \Drupal\Core\Config\ConfigInstaller::checkConfigurationToInstall()

Checks the configuration that will be installed for an extension.

Parameters

string $type: Type of extension to install.

string $name: Name of extension to install.

Throws

\Drupal\Core\Config\UnmetDependenciesException

\Drupal\Core\Config\PreExistingConfigException

Overrides ConfigInstallerInterface::checkConfigurationToInstall

File

core/lib/Drupal/Core/Config/ConfigInstaller.php, line 487

Class

ConfigInstaller

Namespace

Drupal\Core\Config

Code

public function checkConfigurationToInstall($type, $name) {
  if ($this
    ->isSyncing()) {

    // Configuration is assumed to already be checked by the config importer
    // validation events.
    return;
  }
  $config_install_path = $this
    ->getDefaultConfigDirectory($type, $name);
  if (!is_dir($config_install_path)) {
    return;
  }
  $storage = new FileStorage($config_install_path, StorageInterface::DEFAULT_COLLECTION);
  $enabled_extensions = $this
    ->getEnabledExtensions();

  // Add the extension that will be enabled to the list of enabled extensions.
  $enabled_extensions[] = $name;

  // Gets profile storages to search for overrides if necessary.
  $profile_storages = $this
    ->getProfileStorages($name);

  // Check the dependencies of configuration provided by the module.
  list($invalid_default_config, $missing_dependencies) = $this
    ->findDefaultConfigWithUnmetDependencies($storage, $enabled_extensions, $profile_storages);
  if (!empty($invalid_default_config)) {
    throw UnmetDependenciesException::create($name, array_unique($missing_dependencies, SORT_REGULAR));
  }

  // Install profiles can not have config clashes. Configuration that
  // has the same name as a module's configuration will be used instead.
  if ($name != $this
    ->drupalGetProfile()) {

    // Throw an exception if the module being installed contains configuration
    // that already exists. Additionally, can not continue installing more
    // modules because those may depend on the current module being installed.
    $existing_configuration = $this
      ->findPreExistingConfiguration($storage);
    if (!empty($existing_configuration)) {
      throw PreExistingConfigException::create($name, $existing_configuration);
    }
  }
}