Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 5 |
CRAP | |
0.00% |
0 / 52 |
LocaleDefaultConfigStorage | |
0.00% |
0 / 1 |
|
0.00% |
0 / 5 |
182 | |
0.00% |
0 / 52 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 5 |
|||
read | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 16 |
|||
listAll | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 9 |
|||
getComponentNames | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 12 |
|||
predefinedConfiguredLanguages | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 10 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\locale\LocaleDefaultConfigStorage. | |
*/ | |
namespace Drupal\locale; | |
use Drupal\Core\Config\ExtensionInstallStorage; | |
use Drupal\Core\Config\StorageInterface; | |
use Drupal\language\ConfigurableLanguageManagerInterface; | |
/** | |
* Provides access to default configuration for locale integration. | |
* | |
* Allows unified access to default configuration from one of three sources: | |
* - Required default configuration (config/install/*) | |
* - Optional default configuration (config/optional/*) | |
* - Predefined languages mocked as default configuration (list defined in | |
* LocaleConfigManagerInterface::getStandardLanguageList()) | |
* | |
* These sources are considered equal in terms of how locale module interacts | |
* with them for translation. Their translatable source strings are exposed | |
* for interface translation and participate in remote translation updates. | |
*/ | |
class LocaleDefaultConfigStorage { | |
/** | |
* The storage instance for reading configuration data. | |
* | |
* @var \Drupal\Core\Config\StorageInterface | |
*/ | |
protected $configStorage; | |
/** | |
* The language manager. | |
* | |
* @var \Drupal\language\ConfigurableLanguageManagerInterface | |
*/ | |
protected $languageManager; | |
/** | |
* The storage instance for reading required default configuration data. | |
* | |
* @var \Drupal\Core\Config\StorageInterface | |
*/ | |
protected $requiredInstallStorage; | |
/** | |
* The storage instance for reading optional default configuration data. | |
* | |
* @var \Drupal\Core\Config\StorageInterface | |
*/ | |
protected $optionalInstallStorage; | |
/** | |
* Constructs a LocaleDefaultConfigStorage. | |
* | |
* @param \Drupal\Core\Config\StorageInterface $config_storage | |
* The storage object to use for reading configuration data. | |
* @param \Drupal\language\ConfigurableLanguageManagerInterface $language_manager | |
* The language manager. | |
*/ | |
public function __construct(StorageInterface $config_storage, ConfigurableLanguageManagerInterface $language_manager) { | |
$this->configStorage = $config_storage; | |
$this->languageManager = $language_manager; | |
$this->requiredInstallStorage = new ExtensionInstallStorage($this->configStorage); | |
$this->optionalInstallStorage = new ExtensionInstallStorage($this->configStorage, ExtensionInstallStorage::CONFIG_OPTIONAL_DIRECTORY); | |
} | |
/** | |
* Read a configuration from install storage or default languages. | |
* | |
* @param string $name | |
* Configuration object name. | |
* | |
* @return array | |
* Configuration data from install storage or default language. | |
*/ | |
public function read($name) { | |
if ($this->requiredInstallStorage->exists($name)) { | |
return $this->requiredInstallStorage->read($name); | |
} | |
elseif ($this->optionalInstallStorage->exists($name)) { | |
return $this->optionalInstallStorage->read($name); | |
} | |
elseif (strpos($name, 'language.entity.') === 0) { | |
// Simulate default languages as if they were shipped as default | |
// configuration. | |
$langcode = str_replace('language.entity.', '', $name); | |
$predefined_languages = $this->languageManager->getStandardLanguageList(); | |
if (isset($predefined_languages[$langcode])) { | |
$data = $this->configStorage->read($name); | |
$data['label'] = $predefined_languages[$langcode][0]; | |
return $data; | |
} | |
} | |
} | |
/** | |
* Return the list of configuration in install storage and current languages. | |
* | |
* @return array | |
* List of configuration in install storage and current languages. | |
*/ | |
public function listAll() { | |
$languages = $this->predefinedConfiguredLanguages(); | |
return array_unique( | |
array_merge( | |
$this->requiredInstallStorage->listAll(), | |
$this->optionalInstallStorage->listAll(), | |
$languages | |
) | |
); | |
} | |
/** | |
* Get all configuration names and folders for a list of modules or themes. | |
* | |
* @param string $type | |
* Type of components: 'module' | 'theme' | 'profile' | |
* @param array $list | |
* Array of theme or module names. | |
* | |
* @return array | |
* Configuration names provided by that component. In case of language | |
* module this list is extended with configured languages that have | |
* predefined names as well. | |
*/ | |
public function getComponentNames($type, array $list) { | |
$names = array_unique( | |
array_merge( | |
array_keys($this->requiredInstallStorage->getComponentNames($type, $list)), | |
array_keys($this->optionalInstallStorage->getComponentNames($type, $list)) | |
) | |
); | |
if ($type == 'module' && in_array('language', $list)) { | |
$languages = $this->predefinedConfiguredLanguages(); | |
$names = array_unique(array_merge($names, $languages)); | |
} | |
return $names; | |
} | |
/** | |
* Compute the list of configuration names that match predefined languages. | |
* | |
* @return array | |
* The list of configuration names that match predefined languages. | |
*/ | |
protected function predefinedConfiguredLanguages() { | |
$names = $this->configStorage->listAll('language.entity.'); | |
$predefined_languages = $this->languageManager->getStandardLanguageList(); | |
foreach ($names as $id => $name) { | |
$langcode = str_replace('language.entity.', '', $name); | |
if (!isset($predefined_languages[$langcode])) { | |
unset($names[$id]); | |
} | |
} | |
return array_values($names); | |
} | |
} | |