class LanguageConfigFactoryOverride in Drupal 8
Same name and namespace in other branches
- 9 core/modules/language/src/Config/LanguageConfigFactoryOverride.php \Drupal\language\Config\LanguageConfigFactoryOverride
Provides language overrides for the configuration factory.
Hierarchy
- class \Drupal\Core\Config\ConfigFactoryOverrideBase implements \Symfony\Component\EventDispatcher\EventSubscriberInterface
- class \Drupal\language\Config\LanguageConfigFactoryOverride implements \Symfony\Component\EventDispatcher\EventSubscriberInterface, LanguageConfigFactoryOverrideInterface uses LanguageConfigCollectionNameTrait
Expanded class hierarchy of LanguageConfigFactoryOverride
1 string reference to 'LanguageConfigFactoryOverride'
- language.services.yml in core/
modules/ language/ language.services.yml - core/modules/language/language.services.yml
1 service uses LanguageConfigFactoryOverride
- language.config_factory_override in core/
modules/ language/ language.services.yml - Drupal\language\Config\LanguageConfigFactoryOverride
File
- core/
modules/ language/ src/ Config/ LanguageConfigFactoryOverride.php, line 20
Namespace
Drupal\language\ConfigView source
class LanguageConfigFactoryOverride extends ConfigFactoryOverrideBase implements LanguageConfigFactoryOverrideInterface, EventSubscriberInterface {
use LanguageConfigCollectionNameTrait;
/**
* The configuration storage.
*
* Do not access this directly. Should be accessed through self::getStorage()
* so that the cache of storages per langcode is used.
*
* @var \Drupal\Core\Config\StorageInterface
*/
protected $baseStorage;
/**
* An array of configuration storages keyed by langcode.
*
* @var \Drupal\Core\Config\StorageInterface[]
*/
protected $storages;
/**
* The typed config manager.
*
* @var \Drupal\Core\Config\TypedConfigManagerInterface
*/
protected $typedConfigManager;
/**
* An event dispatcher instance to use for configuration events.
*
* @var \Symfony\Component\EventDispatcher\EventDispatcherInterface
*/
protected $eventDispatcher;
/**
* The language object used to override configuration data.
*
* @var \Drupal\Core\Language\LanguageInterface
*/
protected $language;
/**
* Constructs the LanguageConfigFactoryOverride object.
*
* @param \Drupal\Core\Config\StorageInterface $storage
* The configuration storage engine.
* @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher
* An event dispatcher instance to use for configuration events.
* @param \Drupal\Core\Config\TypedConfigManagerInterface $typed_config
* The typed configuration manager.
* @param \Drupal\Core\Language\LanguageDefault $default_language
* The default language.
*/
public function __construct(StorageInterface $storage, EventDispatcherInterface $event_dispatcher, TypedConfigManagerInterface $typed_config, LanguageDefault $default_language) {
$this->baseStorage = $storage;
$this->eventDispatcher = $event_dispatcher;
$this->typedConfigManager = $typed_config;
// Prior to negotiation the override language should be the default
// language.
$this->language = $default_language
->get();
}
/**
* {@inheritdoc}
*/
public function loadOverrides($names) {
if ($this->language) {
$storage = $this
->getStorage($this->language
->getId());
return $storage
->readMultiple($names);
}
return [];
}
/**
* {@inheritdoc}
*/
public function getOverride($langcode, $name) {
$storage = $this
->getStorage($langcode);
$data = $storage
->read($name);
$override = new LanguageConfigOverride($name, $storage, $this->typedConfigManager, $this->eventDispatcher);
if (!empty($data)) {
$override
->initWithData($data);
}
return $override;
}
/**
* {@inheritdoc}
*/
public function getStorage($langcode) {
if (!isset($this->storages[$langcode])) {
$this->storages[$langcode] = $this->baseStorage
->createCollection($this
->createConfigCollectionName($langcode));
}
return $this->storages[$langcode];
}
/**
* {@inheritdoc}
*/
public function getCacheSuffix() {
return $this->language ? $this->language
->getId() : NULL;
}
/**
* {@inheritdoc}
*/
public function getLanguage() {
return $this->language;
}
/**
* {@inheritdoc}
*/
public function setLanguage(LanguageInterface $language = NULL) {
$this->language = $language;
return $this;
}
/**
* {@inheritdoc}
*/
public function setLanguageFromDefault(LanguageDefault $language_default = NULL) {
$this->language = $language_default ? $language_default
->get() : NULL;
return $this;
}
/**
* {@inheritdoc}
*/
public function installLanguageOverrides($langcode) {
/** @var \Drupal\Core\Config\ConfigInstallerInterface $config_installer */
$config_installer = \Drupal::service('config.installer');
$config_installer
->installCollectionDefaultConfig($this
->createConfigCollectionName($langcode));
}
/**
* {@inheritdoc}
*/
public function createConfigObject($name, $collection = StorageInterface::DEFAULT_COLLECTION) {
$langcode = $this
->getLangcodeFromCollectionName($collection);
return $this
->getOverride($langcode, $name);
}
/**
* {@inheritdoc}
*/
public function addCollections(ConfigCollectionInfo $collection_info) {
foreach (\Drupal::languageManager()
->getLanguages() as $language) {
$collection_info
->addCollection($this
->createConfigCollectionName($language
->getId()), $this);
}
}
/**
* {@inheritdoc}
*/
public function onConfigSave(ConfigCrudEvent $event) {
$config = $event
->getConfig();
$name = $config
->getName();
foreach (\Drupal::languageManager()
->getLanguages() as $language) {
$config_translation = $this
->getOverride($language
->getId(), $name);
if (!$config_translation
->isNew()) {
$this
->filterOverride($config, $config_translation);
}
}
}
/**
* {@inheritdoc}
*/
public function onConfigRename(ConfigRenameEvent $event) {
$config = $event
->getConfig();
$name = $config
->getName();
$old_name = $event
->getOldName();
foreach (\Drupal::languageManager()
->getLanguages() as $language) {
$config_translation = $this
->getOverride($language
->getId(), $old_name);
if (!$config_translation
->isNew()) {
$saved_config = $config_translation
->get();
$storage = $this
->getStorage($language
->getId());
$storage
->write($name, $saved_config);
$config_translation
->delete();
}
}
}
/**
* {@inheritdoc}
*/
public function onConfigDelete(ConfigCrudEvent $event) {
$config = $event
->getConfig();
$name = $config
->getName();
foreach (\Drupal::languageManager()
->getLanguages() as $language) {
$config_translation = $this
->getOverride($language
->getId(), $name);
if (!$config_translation
->isNew()) {
$config_translation
->delete();
}
}
}
/**
* {@inheritdoc}
*/
public function getCacheableMetadata($name) {
$metadata = new CacheableMetadata();
if ($this->language) {
$metadata
->setCacheContexts([
'languages:language_interface',
]);
}
return $metadata;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ConfigFactoryOverrideBase:: |
protected | function | Filters data in nested arrays. | |
ConfigFactoryOverrideBase:: |
protected | function | Filters data in the override based on what is currently in configuration. | |
ConfigFactoryOverrideBase:: |
public static | function | Returns an array of event names this subscriber wants to listen to. | |
LanguageConfigCollectionNameTrait:: |
protected | function | Creates a configuration collection name based on a language code. | |
LanguageConfigCollectionNameTrait:: |
protected | function | Converts a configuration collection name to a language code. | |
LanguageConfigFactoryOverride:: |
protected | property | The configuration storage. | |
LanguageConfigFactoryOverride:: |
protected | property | An event dispatcher instance to use for configuration events. | |
LanguageConfigFactoryOverride:: |
protected | property | The language object used to override configuration data. | |
LanguageConfigFactoryOverride:: |
protected | property | An array of configuration storages keyed by langcode. | |
LanguageConfigFactoryOverride:: |
protected | property | The typed config manager. | |
LanguageConfigFactoryOverride:: |
public | function |
Reacts to the ConfigEvents::COLLECTION_INFO event. Overrides ConfigFactoryOverrideBase:: |
|
LanguageConfigFactoryOverride:: |
public | function |
Creates a configuration object for use during install and synchronization. Overrides ConfigFactoryOverrideInterface:: |
|
LanguageConfigFactoryOverride:: |
public | function |
Gets the cacheability metadata associated with the config factory override. Overrides ConfigFactoryOverrideInterface:: |
|
LanguageConfigFactoryOverride:: |
public | function |
The string to append to the configuration static cache name. Overrides ConfigFactoryOverrideInterface:: |
|
LanguageConfigFactoryOverride:: |
public | function |
Gets the language object used to override configuration data. Overrides LanguageConfigFactoryOverrideInterface:: |
|
LanguageConfigFactoryOverride:: |
public | function |
Get language override for given language and configuration name. Overrides LanguageConfigFactoryOverrideInterface:: |
|
LanguageConfigFactoryOverride:: |
public | function |
Returns the storage instance for a particular langcode. Overrides LanguageConfigFactoryOverrideInterface:: |
|
LanguageConfigFactoryOverride:: |
public | function |
Installs available language configuration overrides for a given langcode. Overrides LanguageConfigFactoryOverrideInterface:: |
|
LanguageConfigFactoryOverride:: |
public | function |
Returns config overrides. Overrides ConfigFactoryOverrideInterface:: |
|
LanguageConfigFactoryOverride:: |
public | function |
Actions to be performed to configuration override on configuration delete. Overrides ConfigFactoryOverrideBase:: |
|
LanguageConfigFactoryOverride:: |
public | function |
Actions to be performed to configuration override on configuration rename. Overrides ConfigFactoryOverrideBase:: |
|
LanguageConfigFactoryOverride:: |
public | function |
Actions to be performed to configuration override on configuration save. Overrides ConfigFactoryOverrideBase:: |
|
LanguageConfigFactoryOverride:: |
public | function |
Sets the language to be used in configuration overrides. Overrides LanguageConfigFactoryOverrideInterface:: |
|
LanguageConfigFactoryOverride:: |
public | function |
Sets the language to be used in configuration overrides from the default. Overrides LanguageConfigFactoryOverrideInterface:: |
|
LanguageConfigFactoryOverride:: |
public | function | Constructs the LanguageConfigFactoryOverride object. |