Esempio n. 1
0
 /**
  * Processes an extension change.
  *
  * @param string $type
  *   The type of extension, either 'module' or 'theme'.
  * @param string $op
  *   The change operation.
  * @param string $name
  *   The name of the extension to process.
  */
 protected function processExtension($type, $op, $name)
 {
     // Set the config installer to use the staging directory instead of the
     // extensions own default config directories.
     \Drupal::service('config.installer')->setSyncing(TRUE)->setSourceStorage($this->storageComparer->getSourceStorage());
     if ($type == 'module') {
         $this->moduleInstaller->{$op}(array($name), FALSE);
         // Installing a module can cause a kernel boot therefore reinject all the
         // services.
         $this->reInjectMe();
         // During a module install or uninstall the container is rebuilt and the
         // module handler is called from drupal_get_complete_schema(). 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;
         }
         $this->themeHandler->{$op}(array($name));
     }
     $this->setProcessedExtension($type, $op, $name);
     \Drupal::service('config.installer')->setSyncing(FALSE);
 }