ConfigFactory.php in Domain Access 8
File
domain_config_ui/src/Config/ConfigFactory.php
View source
<?php
namespace Drupal\domain_config_ui\Config;
use Drupal\Core\Config\ConfigFactory as CoreConfigFactory;
use Drupal\Core\Config\StorageInterface;
use Drupal\Core\Config\TypedConfigManagerInterface;
use Drupal\domain_config_ui\DomainConfigUIManager;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class ConfigFactory extends CoreConfigFactory {
protected $domainConfigUIManager;
public function __construct(StorageInterface $storage, EventDispatcherInterface $event_dispatcher, TypedConfigManagerInterface $typed_config, DomainConfigUIManager $domain_config_ui_manager) {
parent::__construct($storage, $event_dispatcher, $typed_config);
$this->domainConfigUIManager = $domain_config_ui_manager;
}
protected function createConfigObject($name, $immutable) {
if (!$immutable) {
$config = new Config($name, $this->storage, $this->eventDispatcher, $this->typedConfigManager);
$config
->setDomainConfigUiManager($this->domainConfigUIManager);
return $config;
}
return parent::createConfigObject($name, $immutable);
}
public function setDomainConfigUiManager(DomainConfigUIManager $domain_config_ui_manager) {
$this->domainConfigUIManager = $domain_config_ui_manager;
}
protected function doLoadMultiple(array $names, $immutable = TRUE) {
$list = parent::doLoadMultiple($names, $immutable);
if (empty($this->domainConfigUIManager) || !$this->domainConfigUIManager
->getSelectedDomainId()) {
return $list;
}
if (!empty($names)) {
$module_overrides = [];
$storage_data = $this->storage
->readMultiple($names);
if (!empty($storage_data)) {
$module_overrides = $this
->loadDomainOverrides($names);
}
foreach ($storage_data as $name => $data) {
$cache_key = $this
->getConfigCacheKey($name, $immutable);
if (!empty($module_overrides[$name])) {
$this->cache[$cache_key]
->setModuleOverride($module_overrides[$name]);
$list[$name] = $this->cache[$cache_key];
$this
->propagateConfigOverrideCacheability($cache_key, $name);
}
}
}
return $list;
}
protected function doGet($name, $immutable = TRUE) {
if (empty($this->domainConfigUIManager) || !$this->domainConfigUIManager
->getSelectedDomainId()) {
return parent::doGet($name, $immutable);
}
if ($config = $this
->doLoadMultiple([
$name,
], $immutable)) {
return $config[$name];
}
else {
$config = $this
->createConfigObject($name, $immutable);
$overrides = $this
->loadDomainOverrides([
$name,
]);
if (isset($overrides[$name])) {
$config
->setModuleOverride($overrides[$name]);
}
foreach ($this->configFactoryOverrides as $override) {
$config
->addCacheableDependency($override
->getCacheableMetadata($name));
}
return $config;
}
}
protected function loadDomainOverrides(array $names) {
$overrides = [];
foreach ($names as $name) {
$config_name = $this->domainConfigUIManager
->getSelectedConfigName($name);
if ($override = $this->storage
->read($config_name)) {
$overrides[$name] = $override;
}
elseif ($this->domainConfigUIManager
->getSelectedLanguageId()) {
$omit_language = TRUE;
$config_name = $this->domainConfigUIManager
->getSelectedConfigName($name, $omit_language);
if ($override = $this->storage
->read($config_name)) {
$overrides[$name] = $override;
}
}
}
return $overrides;
}
}
Classes
Name |
Description |
ConfigFactory |
Extends core ConfigFactory class to save domain specific configuration. |