ConfigImportForm.php

Namespace

Drupal\config\Form

File

drupal/core/modules/config/lib/Drupal/config/Form/ConfigImportForm.php
View source
<?php

namespace Drupal\config\Form;

use Drupal\Core\Form\FormInterface;
use Drupal\Component\Archiver\ArchiveTar;
class ConfigImportForm implements FormInterface {
  public function getFormID() {
    return 'config_import_form';
  }
  public function buildForm(array $form, array &$form_state) {
    $form['description'] = array(
      '#markup' => '<p>' . t('Use the upload button below.') . '</p>',
    );
    $form['import_tarball'] = array(
      '#type' => 'file',
      '#value' => t('Select your configuration export file'),
      '#description' => t('This form will redirect you to the import configuration screen.'),
    );
    $form['submit'] = array(
      '#type' => 'submit',
      '#value' => t('Upload'),
    );
    return $form;
  }
  public function validateForm(array &$form, array &$form_state) {
    if (!empty($_FILES['files']['error']['import_tarball'])) {
      form_set_error('import_tarball', t('The import tarball could not be uploaded.'));
    }
    else {
      $form_state['values']['import_tarball'] = $_FILES['files']['tmp_name']['import_tarball'];
    }
  }
  public function submitForm(array &$form, array &$form_state) {
    if ($path = $form_state['values']['import_tarball']) {
      \Drupal::service('config.storage.staging')
        ->deleteAll();
      $archiver = new ArchiveTar($path, 'gz');
      $files = array();
      foreach ($archiver
        ->listContent() as $file) {
        $files[] = $file['filename'];
      }
      $archiver
        ->extractList($files, config_get_config_directory(CONFIG_STAGING_DIRECTORY));
      drupal_unlink($path);
      drupal_set_message('Your configuration files were successfully uploaded, ready for import.');
      $form_state['redirect'] = 'admin/config/development/sync';
    }
  }

}

Classes

Namesort descending Description
ConfigImportForm