Chris@0: [ Chris@0: * 'missing_dependency_1', Chris@0: * 'missing_dependency_2', Chris@0: * ] Chris@0: * ]; Chris@0: * Chris@0: * @endcode Chris@0: * Chris@0: * @var array Chris@0: */ Chris@0: protected $configObjects = []; Chris@0: Chris@0: /** Chris@0: * The name of the extension that is being installed. Chris@0: * Chris@0: * @var string Chris@0: */ Chris@0: protected $extension; Chris@0: Chris@0: /** Chris@0: * Gets the list of configuration objects that have unmet dependencies. Chris@0: * Chris@0: * @return array Chris@0: * A list of configuration objects that have unmet dependencies, keyed by Chris@0: * object name, with the value being a list of the unmet dependencies. Chris@0: */ Chris@0: public function getConfigObjects() { Chris@0: return $this->configObjects; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Gets the name of the extension that is being installed. Chris@0: * Chris@0: * @return string Chris@0: * The name of the extension that is being installed. Chris@0: */ Chris@0: public function getExtension() { Chris@0: return $this->extension; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Gets a translated message from the exception. Chris@0: * Chris@0: * @param \Drupal\Core\StringTranslation\TranslationInterface $string_translation Chris@0: * The string translation service. Chris@0: * Chris@0: * @return string Chris@0: */ Chris@0: public function getTranslatedMessage(TranslationInterface $string_translation, $extension) { Chris@0: return $string_translation->translate( Chris@0: 'Unable to install %extension due to unmet dependencies: %config_names', Chris@0: [ Chris@0: '%config_names' => static::formatConfigObjectList($this->configObjects), Chris@0: '%extension' => $extension, Chris@0: ] Chris@0: ); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Creates an exception for an extension and a list of configuration objects. Chris@0: * Chris@0: * @param $extension Chris@0: * The name of the extension that is being installed. Chris@0: * @param array $config_objects Chris@0: * A list of configuration keyed by configuration name, with unmet Chris@0: * dependencies as the value. Chris@0: * Chris@0: * @return \Drupal\Core\Config\PreExistingConfigException Chris@0: */ Chris@0: public static function create($extension, array $config_objects) { Chris@0: $message = new FormattableMarkup('Configuration objects provided by %extension have unmet dependencies: %config_names', Chris@0: [ Chris@0: '%config_names' => static::formatConfigObjectList($config_objects), Chris@17: '%extension' => $extension, Chris@0: ] Chris@0: ); Chris@0: $e = new static($message); Chris@0: $e->configObjects = $config_objects; Chris@0: $e->extension = $extension; Chris@0: return $e; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Formats a list of configuration objects. Chris@0: * Chris@0: * @param array $config_objects Chris@0: * A list of configuration object names that have unmet dependencies. Chris@0: * Chris@0: * @return string Chris@0: * The imploded config_objects, formatted in an easy to read string. Chris@0: */ Chris@0: protected static function formatConfigObjectList(array $config_objects) { Chris@0: $list = []; Chris@0: foreach ($config_objects as $config_object => $missing_dependencies) { Chris@0: $list[] = $config_object . ' (' . implode(', ', $missing_dependencies) . ')'; Chris@0: } Chris@0: return implode(', ', $list); Chris@0: } Chris@0: Chris@0: }