function ConfigImporter::processExtension

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

Processes an extension change.

Parameters

string $type: The type of extension, either 'module' or 'theme'.

string $op: The change operation.

string $name: The name of the extension to process.

1 call to ConfigImporter::processExtension()
ConfigImporter::processExtensions in core/lib/Drupal/Core/Config/ConfigImporter.php
Processes extensions as a batch operation.

File

core/lib/Drupal/Core/Config/ConfigImporter.php, line 875

Class

ConfigImporter
Defines a configuration importer.

Namespace

Drupal\Core\Config

Code

protected function processExtension($type, $op, $name) {
    // Set the config installer to use the sync directory instead of the
    // extensions own default config directories.
    \Drupal::service('config.installer')->setSourceStorage($this->storageComparer
        ->getSourceStorage());
    if ($type == 'module') {
        $this->moduleInstaller
            ->{$op}([
            $name,
        ], FALSE);
        // Installing a module can cause a kernel boot therefore inject all the
        // services again.
        $this->reInjectMe();
        // During a module install or uninstall the container is rebuilt and the
        // module handler is called. This causes the container's instance of the
        // module handler not to have loaded all the enabled modules.
        $this->moduleHandler
            ->loadAll();
    }
    if ($type == 'theme') {
        // Theme uninstalls possible remove default or admin themes therefore we
        // need to import this before doing any. If there are no uninstalls and
        // the default or admin theme is changing this will be picked up whilst
        // processing configuration.
        if ($op == 'uninstall' && $this->processedSystemTheme === FALSE) {
            $this->importConfig(StorageInterface::DEFAULT_COLLECTION, 'update', 'system.theme');
            $this->configManager
                ->getConfigFactory()
                ->reset('system.theme');
            $this->processedSystemTheme = TRUE;
        }
        \Drupal::service('theme_installer')->{$op}([
            $name,
        ]);
    }
    $this->setProcessedExtension($type, $op, $name);
}

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