Пример #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);
 }
Пример #2
0
 /**
  * Downloads a tarball of the site configuration.
  */
 public function downloadExport()
 {
     file_unmanaged_delete(file_directory_temp() . '/config.tar.gz');
     $archiver = new ArchiveTar(file_directory_temp() . '/config.tar.gz', 'gz');
     // Get raw configuration data without overrides.
     foreach ($this->configManager->getConfigFactory()->listAll() as $name) {
         $archiver->addString("{$name}.yml", Yaml::encode($this->configManager->getConfigFactory()->get($name)->getRawData()));
     }
     // Get all override data from the remaining collections.
     foreach ($this->targetStorage->getAllCollectionNames() as $collection) {
         $collection_storage = $this->targetStorage->createCollection($collection);
         foreach ($collection_storage->listAll() as $name) {
             $archiver->addString(str_replace('.', '/', $collection) . "/{$name}.yml", Yaml::encode($collection_storage->read($name)));
         }
     }
     $request = new Request(array('file' => 'config.tar.gz'));
     return $this->fileDownloadController->download($request, 'temporary');
 }