class ExtensionInstallStorage
Same name in other branches
- 9 core/lib/Drupal/Core/Config/ExtensionInstallStorage.php \Drupal\Core\Config\ExtensionInstallStorage
- 8.9.x core/lib/Drupal/Core/Config/ExtensionInstallStorage.php \Drupal\Core\Config\ExtensionInstallStorage
- 11.x core/lib/Drupal/Core/Config/ExtensionInstallStorage.php \Drupal\Core\Config\ExtensionInstallStorage
Storage to access configuration and schema in enabled extensions.
Hierarchy
- class \Drupal\Core\Config\FileStorage implements \Drupal\Core\Config\StorageInterface
- class \Drupal\Core\Config\InstallStorage extends \Drupal\Core\Config\FileStorage
- class \Drupal\Core\Config\ExtensionInstallStorage extends \Drupal\Core\Config\InstallStorage
- class \Drupal\Core\Config\InstallStorage extends \Drupal\Core\Config\FileStorage
Expanded class hierarchy of ExtensionInstallStorage
See also
\Drupal\Core\Config\ConfigInstaller
\Drupal\Core\Config\TypedConfigManager
2 files declare their use of ExtensionInstallStorage
- ExtensionInstallStorageTest.php in core/
tests/ Drupal/ Tests/ Core/ Config/ ExtensionInstallStorageTest.php - LocaleDefaultConfigStorage.php in core/
modules/ locale/ src/ LocaleDefaultConfigStorage.php
1 string reference to 'ExtensionInstallStorage'
- core.services.yml in core/
core.services.yml - core/core.services.yml
1 service uses ExtensionInstallStorage
File
-
core/
lib/ Drupal/ Core/ Config/ ExtensionInstallStorage.php, line 13
Namespace
Drupal\Core\ConfigView source
class ExtensionInstallStorage extends InstallStorage {
/**
* The active configuration store.
*
* @var \Drupal\Core\Config\StorageInterface
*/
protected $configStorage;
/**
* Flag to include the profile in the list of enabled modules.
*
* @var bool
*/
protected $includeProfile = TRUE;
/**
* The name of the currently active installation profile.
*
* In the early installer this value can be NULL.
*
* @var string|false|null
*/
protected $installProfile;
/**
* Overrides \Drupal\Core\Config\InstallStorage::__construct().
*
* @param \Drupal\Core\Config\StorageInterface $config_storage
* The active configuration store where the list of enabled modules and
* themes is stored.
* @param string $directory
* The directory to scan in each extension to scan for files.
* @param string $collection
* The collection to store configuration in.
* @param bool $include_profile
* Whether to include the install profile in extensions to
* search and to get overrides from.
* @param string $profile
* The current installation profile.
*/
public function __construct(StorageInterface $config_storage, $directory, $collection, $include_profile, $profile) {
parent::__construct($directory, $collection);
$this->configStorage = $config_storage;
$this->includeProfile = $include_profile;
$this->installProfile = $profile;
}
/**
* {@inheritdoc}
*/
public function createCollection($collection) {
return new static($this->configStorage, $this->directory, $collection, $this->includeProfile, $this->installProfile);
}
/**
* Returns a map of all config object names and their folders.
*
* The list is based on enabled modules and themes. The active configuration
* storage is used rather than \Drupal\Core\Extension\ModuleHandler and
* \Drupal\Core\Extension\ThemeHandler in order to resolve circular
* dependencies between these services and \Drupal\Core\Config\ConfigInstaller
* and \Drupal\Core\Config\TypedConfigManager.
*
* @return array
* An array mapping config object names with directories.
*/
protected function getAllFolders() {
if (!isset($this->folders)) {
$this->folders = [];
$this->folders += $this->getCoreNames();
$extensions = $this->configStorage
->read('core.extension');
// @todo Remove this scan as part of https://www.drupal.org/node/2186491
$listing = new ExtensionDiscovery(\Drupal::root());
if (!empty($extensions['module'])) {
$modules = $extensions['module'];
// Remove the install profile as this is handled later.
unset($modules[$this->installProfile]);
$profile_list = $listing->scan('profile');
if ($this->installProfile && isset($profile_list[$this->installProfile])) {
// Prime the \Drupal\Core\Extension\ExtensionList::getPathname()
// static cache with the profile info file location so we can use
// ExtensionList::getPath() on the active profile during the module
// scan.
// @todo Remove as part of https://www.drupal.org/node/2186491
/** @var \Drupal\Core\Extension\ProfileExtensionList $profile_extension_list */
$profile_extension_list = \Drupal::service('extension.list.profile');
$profile_extension_list->setPathname($this->installProfile, $profile_list[$this->installProfile]
->getPathname());
}
$module_list_scan = $listing->scan('module');
$module_list = [];
foreach (array_keys($modules) as $module) {
if (isset($module_list_scan[$module])) {
$module_list[$module] = $module_list_scan[$module];
}
}
$this->folders += $this->getComponentNames($module_list);
}
if (!empty($extensions['theme'])) {
$theme_list_scan = $listing->scan('theme');
foreach (array_keys($extensions['theme']) as $theme) {
if (isset($theme_list_scan[$theme])) {
$theme_list[$theme] = $theme_list_scan[$theme];
}
}
$this->folders += $this->getComponentNames($theme_list);
}
if ($this->includeProfile) {
// The install profile can override module default configuration. We do
// this by replacing the config file path from the module/theme with the
// install profile version if there are any duplicates.
if ($this->installProfile) {
if (!isset($profile_list)) {
$profile_list = $listing->scan('profile');
}
if (isset($profile_list[$this->installProfile])) {
$profile_folders = $this->getComponentNames([
$profile_list[$this->installProfile],
]);
$this->folders = $profile_folders + $this->folders;
}
}
}
}
return $this->folders;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title |
---|---|---|---|---|
ExtensionInstallStorage::$configStorage | protected | property | The active configuration store. | |
ExtensionInstallStorage::$includeProfile | protected | property | Flag to include the profile in the list of enabled modules. | |
ExtensionInstallStorage::$installProfile | protected | property | The name of the currently active installation profile. | |
ExtensionInstallStorage::createCollection | public | function | Creates a collection on the storage. | Overrides FileStorage::createCollection |
ExtensionInstallStorage::getAllFolders | protected | function | Returns a map of all config object names and their folders. | Overrides InstallStorage::getAllFolders |
ExtensionInstallStorage::__construct | public | function | Overrides \Drupal\Core\Config\InstallStorage::__construct(). | Overrides InstallStorage::__construct |
FileStorage::$collection | protected | property | The storage collection. | |
FileStorage::$fileCache | protected | property | The file cache object. | |
FileStorage::decode | public | function | Decodes configuration data from the storage-specific format. | Overrides StorageInterface::decode |
FileStorage::encode | public | function | Encodes configuration data into the storage-specific format. | Overrides StorageInterface::encode |
FileStorage::ensureStorage | protected | function | Check if the directory exists and create it if not. | |
FileStorage::getAllCollectionNames | public | function | Gets the existing collections. | Overrides StorageInterface::getAllCollectionNames |
FileStorage::getAllCollectionNamesHelper | protected | function | Helper function for getAllCollectionNames(). | |
FileStorage::getCollectionDirectory | protected | function | Gets the directory for the collection. | |
FileStorage::getCollectionName | public | function | Gets the name of the current collection the storage is using. | Overrides StorageInterface::getCollectionName |
FileStorage::getFileExtension | public static | function | Returns the file extension used by the file storage for all configuration files. | |
FileStorage::getFileSystem | private | function | Returns file system service. | |
FileStorage::read | public | function | Implements Drupal\Core\Config\StorageInterface::read(). | Overrides StorageInterface::read |
FileStorage::readMultiple | public | function | Reads configuration data from the storage. | Overrides StorageInterface::readMultiple |
InstallStorage::$directory | protected | property | The directory to scan in each extension to scan for files. | Overrides FileStorage::$directory |
InstallStorage::$folders | protected | property | Folder map indexed by configuration name. | |
InstallStorage::CONFIG_INSTALL_DIRECTORY | constant | Extension sub-directory containing default configuration for installation. | ||
InstallStorage::CONFIG_OPTIONAL_DIRECTORY | constant | Extension sub-directory containing optional configuration for installation. | ||
InstallStorage::CONFIG_SCHEMA_DIRECTORY | constant | Extension sub-directory containing configuration schema. | ||
InstallStorage::delete | public | function | Overrides Drupal\Core\Config\FileStorage::delete(). | Overrides FileStorage::delete |
InstallStorage::deleteAll | public | function | Overrides Drupal\Core\Config\FileStorage::deleteAll(). | Overrides FileStorage::deleteAll |
InstallStorage::exists | public | function | Returns whether a configuration object exists. | Overrides FileStorage::exists |
InstallStorage::getComponentFolder | protected | function | Get folder inside each component that contains the files. | |
InstallStorage::getComponentNames | public | function | Get all configuration names and folders for a list of modules or themes. | |
InstallStorage::getCoreFolder | protected | function | Get folder inside Drupal core that contains the files. | |
InstallStorage::getCoreNames | public | function | Get all configuration names and folders for Drupal core. | |
InstallStorage::getFilePath | public | function | Overrides Drupal\Core\Config\FileStorage::getFilePath(). | Overrides FileStorage::getFilePath |
InstallStorage::listAll | public | function | Gets configuration object names starting with a given prefix. | Overrides FileStorage::listAll |
InstallStorage::rename | public | function | Overrides Drupal\Core\Config\FileStorage::rename(). | Overrides FileStorage::rename |
InstallStorage::reset | public | function | Resets the static cache. | |
InstallStorage::write | public | function | Overrides Drupal\Core\Config\FileStorage::write(). | Overrides FileStorage::write |
StorageInterface::DEFAULT_COLLECTION | constant | The default collection name. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.