Ejemplo n.º 1
0
 /**
  * Import configurations from a Tar file.
  *
  * @param  StdClass $file
  *   A file object.
  * @param  boolean $start_tracking
  *   If TRUE, all the configurations provided in the Tar file will be imported
  *   and automatically tracked.
  *
  * @return ConfigIteratorSettings
  *   An ConfigIteratorSettings object that contains the imported
  *   configurations.
  */
 public static function importToActiveStoreFromTar($uri, $start_tracking = FALSE)
 {
     $path = 'temporary://';
     $archive = archiver_get_archiver($uri);
     $files = $archive->listContents();
     foreach ($files as $filename) {
         if (is_file($path . $filename)) {
             file_unmanaged_delete($path . $filename);
         }
     }
     $config_temp_path = 'temporary://' . 'config-tmp-' . time();
     $archive->extract(drupal_realpath($config_temp_path));
     $file_content = drupal_substr(file_get_contents($config_temp_path . '/configuration/configurations.inc'), 6);
     @eval($file_content);
     $source = $config_temp_path . '/configuration/';
     $modules_results = ConfigurationManagement::discoverRequiredModules($modules);
     $missing_modules = $modules_results->getInfo('modules_missing');
     $error = FALSE;
     if (!empty($missing_modules)) {
         drupal_set_message(t('Configurations cannot be synchronized because the following modules are not available to install: %modules', array('%modules' => implode(', ', $missing_modules))), 'error');
         return $modules_results;
     } else {
         $modules_to_install = $modules_results->getInfo('modules_to_install');
         if (!empty($modules_to_install)) {
             module_enable($modules_to_install, TRUE);
             drupal_set_message(t('The following modules have been enabled: %modules', array('%modules' => implode(', ', $modules_to_install))));
             drupal_flush_all_caches();
         }
     }
     $settings = static::importToActiveStore($configurations, FALSE, FALSE, $start_tracking, $source);
     static::deteleTempConfigDir($config_temp_path);
     return $settings;
 }