rocketship_core-8.x-2.0-alpha11/src/RocketshipConfigInstaller.php
src/RocketshipConfigInstaller.php
<?php namespace Drupal\rocketship_core; use Drupal\Core\Config\ConfigInstallerInterface; use Drupal\Core\Config\PreExistingConfigException; use Drupal\Core\Config\StorageInterface; use Drupal\Core\Extension\ExtensionList; /** * Decorator for ConfigInstaller service. * * Decorates the ConfigInstaller with checkConfigurationToInstall() modified * to allow pre-existing configuration to be installed for Rocketship modules. */ class RocketshipConfigInstaller implements ConfigInstallerInterface { /** * The configuration installer. * * @var \Drupal\Core\Config\ConfigInstallerInterface */ protected $configInstaller; /** * The module extension list. * * @var \Drupal\Core\Extension\ExtensionList */ protected $extensionList; /** * Constructs the configuration installer. * * @param \Drupal\Core\Config\ConfigInstallerInterface $config_installer * The configuration installer. * @param \Drupal\Core\Extension\ExtensionList $extensionList * The module extension list. */ public function __construct(ConfigInstallerInterface $config_installer, ExtensionList $extensionList) { $this->configInstaller = $config_installer; $this->extensionList = $extensionList; } /** * {@inheritdoc} */ public function checkConfigurationToInstall($type, $name) { try { $this->configInstaller->checkConfigurationToInstall($type, $name); } catch (PreExistingConfigException $e) { // Ignore pre-existing config exceptions for Rocketship packages. if ($type === 'module') { $all_info = $this->extensionList->getAllAvailableInfo(); $module = $all_info[$name]; if (isset($module['package']) && $module['package'] == 'Rocketship') { return; } } // Rethrow for others. throw PreExistingConfigException::create($e->getExtension(), $e->getConfigObjects()); } } /** * {@inheritdoc} */ public function installDefaultConfig($type, $name) { return $this->configInstaller->installDefaultConfig($type, $name); } /** * {@inheritdoc} */ public function getSourceStorage() { return $this->configInstaller->getSourceStorage(); } /** * {@inheritdoc} */ public function installOptionalConfig(StorageInterface $storage = NULL, $dependency = []) { return $this->configInstaller->installOptionalConfig($storage, $dependency); } /** * {@inheritdoc} */ public function installCollectionDefaultConfig($collection) { return $this->configInstaller->installCollectionDefaultConfig($collection); } /** * {@inheritdoc} */ public function setSourceStorage(StorageInterface $storage) { return $this->configInstaller->setSourceStorage($storage); } /** * {@inheritdoc} */ public function setSyncing($status) { return $this->configInstaller->setSyncing($status); } /** * {@inheritdoc} */ public function isSyncing() { return $this->configInstaller->isSyncing(); } /** * Implements magic __call method. * * Seeing as core didn't think it was necessary to add all their public * methods to the interface we can't be sure what else they'll add without * adding it to their interface. * * @param string $name * The method to call. * @param mixed $arguments * The arguments. * * @return mixed * Whatever the called method returns. */ public function __call($name, $arguments) { return call_user_func_array( [$this->configInstaller, $name], $arguments ); } }