Mercurial > hg > isophonics-drupal-site
view core/lib/Drupal/Core/Config/PreExistingConfigException.php @ 13:5fb285c0d0e3
Update Drupal core to 8.4.7 via Composer. Security update; I *think* we've
been lucky to get away with this so far, as we don't support self-registration
which seems to be used by the so-called "drupalgeddon 2" attack that 8.4.5
was vulnerable to.
author | Chris Cannam |
---|---|
date | Mon, 23 Apr 2018 09:33:26 +0100 |
parents | 4c8ae668cc8c |
children | 129ea1e6d783 |
line wrap: on
line source
<?php namespace Drupal\Core\Config; use Drupal\Component\Utility\SafeMarkup; /** * An exception thrown if configuration with the same name already exists. */ class PreExistingConfigException extends ConfigException { /** * A list of configuration objects that already exist in active configuration. * * @var array */ protected $configObjects = []; /** * The name of the module that is being installed. * * @var string */ protected $extension; /** * Gets the list of configuration objects that already exist. * * @return array * A list of configuration objects that already exist in active * configuration keyed by collection. */ public function getConfigObjects() { return $this->configObjects; } /** * Gets the name of the extension that is being installed. * * @return string * The name of the extension that is being installed. */ public function getExtension() { return $this->extension; } /** * Creates an exception for an extension and a list of configuration objects. * * @param $extension * The name of the extension that is being installed. * @param array $config_objects * A list of configuration objects that already exist in active * configuration, keyed by config collection. * * @return \Drupal\Core\Config\PreExistingConfigException */ public static function create($extension, array $config_objects) { $message = SafeMarkup::format('Configuration objects (@config_names) provided by @extension already exist in active configuration', [ '@config_names' => implode(', ', static::flattenConfigObjects($config_objects)), '@extension' => $extension ] ); $e = new static($message); $e->configObjects = $config_objects; $e->extension = $extension; return $e; } /** * Flattens the config object array to a single dimensional list. * * @param array $config_objects * A list of configuration objects that already exist in active * configuration, keyed by config collection. * * @return array * A list of configuration objects that have been prefixed with their * collection. */ public static function flattenConfigObjects(array $config_objects) { $flat_config_objects = []; foreach ($config_objects as $collection => $config_names) { $config_names = array_map(function ($config_name) use ($collection) { if ($collection != StorageInterface::DEFAULT_COLLECTION) { $config_name = str_replace('.', DIRECTORY_SEPARATOR, $collection) . DIRECTORY_SEPARATOR . $config_name; } return $config_name; }, $config_names); $flat_config_objects = array_merge($flat_config_objects, $config_names); } return $flat_config_objects; } }