function InstallStorage::getComponentNames

Same name in other branches
  1. 9 core/lib/Drupal/Core/Config/InstallStorage.php \Drupal\Core\Config\InstallStorage::getComponentNames()
  2. 8.9.x core/lib/Drupal/Core/Config/InstallStorage.php \Drupal\Core\Config\InstallStorage::getComponentNames()
  3. 11.x core/lib/Drupal/Core/Config/InstallStorage.php \Drupal\Core\Config\InstallStorage::getComponentNames()

Get all configuration names and folders for a list of modules or themes.

Parameters

\Drupal\Core\Extension\Extension[] $list: An associative array of Extension objects, keyed by extension name.

Return value

array Folders indexed by configuration name.

3 calls to InstallStorage::getComponentNames()
ExtensionInstallStorage::getAllFolders in core/lib/Drupal/Core/Config/ExtensionInstallStorage.php
Returns a map of all config object names and their folders.
InstallStorage::getAllFolders in core/lib/Drupal/Core/Config/InstallStorage.php
Returns a map of all config object names and their folders.
TestInstallStorage::getAllFolders in core/modules/config/tests/config_test/src/TestInstallStorage.php
Returns a map of all config object names and their folders.

File

core/lib/Drupal/Core/Config/InstallStorage.php, line 189

Class

InstallStorage
Storage used by the Drupal installer.

Namespace

Drupal\Core\Config

Code

public function getComponentNames(array $list) {
    $extension = '.' . $this->getFileExtension();
    $pattern = '/' . preg_quote($extension, '/') . '$/';
    $folders = [];
    foreach ($list as $extension_object) {
        // We don't have to use ExtensionDiscovery here because our list of
        // extensions was already obtained through an ExtensionDiscovery scan.
        $directory = $this->getComponentFolder($extension_object);
        if (is_dir($directory)) {
            // glob() directly calls into libc glob(), which is not aware of PHP
            // stream wrappers. Same for \GlobIterator (which additionally requires
            // an absolute realpath() on Windows).
            // @see https://github.com/mikey179/vfsStream/issues/2
            $files = scandir($directory);
            foreach ($files as $file) {
                if ($file[0] !== '.' && preg_match($pattern, $file)) {
                    $folders[basename($file, $extension)] = $directory;
                }
            }
        }
    }
    return $folders;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.