class ImportForm in Bibliography & Citation 8
Same name and namespace in other branches
- 2.0.x modules/bibcite_import/src/Form/ImportForm.php \Drupal\bibcite_import\Form\ImportForm
Common import form.
Hierarchy
- class \Drupal\Core\Form\FormBase implements ContainerInjectionInterface, FormInterface uses DependencySerializationTrait, LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait- class \Drupal\bibcite_import\Form\ImportForm
 
Expanded class hierarchy of ImportForm
1 string reference to 'ImportForm'
- bibcite_import.routing.yml in modules/bibcite_import/ bibcite_import.routing.yml 
- modules/bibcite_import/bibcite_import.routing.yml
File
- modules/bibcite_import/ src/ Form/ ImportForm.php, line 14 
Namespace
Drupal\bibcite_import\FormView source
class ImportForm extends FormBase {
  /**
   * Bibcite format manager service.
   *
   * @var \Drupal\bibcite\Plugin\BibciteFormatManagerInterface
   */
  protected $formatManager;
  /**
   * Serializer service.
   *
   * @var \Symfony\Component\Serializer\Serializer
   */
  protected $serializer;
  /**
   * Import form constructor.
   *
   * @param \Symfony\Component\Serializer\SerializerInterface $serializer
   *   Import plugins manager.
   * @param \Drupal\bibcite\Plugin\BibciteFormatManagerInterface $format_manager
   *   Bibcite format manager service.
   */
  public function __construct(SerializerInterface $serializer, BibciteFormatManagerInterface $format_manager) {
    $this->serializer = $serializer;
    $this->formatManager = $format_manager;
  }
  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    return new static($container
      ->get('serializer'), $container
      ->get('plugin.manager.bibcite_format'));
  }
  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    return 'bibcite_import';
  }
  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state) {
    $form['file'] = [
      '#type' => 'file',
      '#title' => $this
        ->t('File'),
      '#multiple' => FALSE,
    ];
    $form['format'] = [
      '#type' => 'select',
      '#title' => $this
        ->t('Format'),
      '#options' => array_map(function ($definition) {
        return $definition['label'];
      }, $this->formatManager
        ->getImportDefinitions()),
      '#required' => TRUE,
    ];
    $form['actions'] = [
      '#type' => 'actions',
    ];
    $form['actions']['submit'] = [
      '#type' => 'submit',
      '#value' => $this
        ->t('Import'),
    ];
    return $form;
  }
  /**
   * {@inheritdoc}
   */
  public function validateForm(array &$form, FormStateInterface $form_state) {
    $all_files = $this
      ->getRequest()->files
      ->get('files', []);
    if (!empty($all_files['file'])) {
      /** @var \Symfony\Component\HttpFoundation\File\UploadedFile $file_upload */
      $file_upload = $all_files['file'];
      if ($file_upload
        ->isValid()) {
        $form_state
          ->setValue('file', $file_upload
          ->getRealPath());
        $format_id = $form_state
          ->getValue('format');
        $format = $this->formatManager
          ->getDefinition($format_id);
        try {
          $data = file_get_contents($form_state
            ->getValue('file'));
          $decoded = $this->serializer
            ->decode($data, $format_id);
          $form_state
            ->setValue('decoded', $decoded);
        } catch (\Exception $exception) {
          $err_string = $this
            ->t('@format file content is not valid.<br>%ex', [
            '@format' => $format['label'],
            '%ex' => $exception
              ->getMessage(),
          ]);
          $form_state
            ->setErrorByName('file', $err_string);
        }
        return;
      }
    }
    else {
      $form_state
        ->setErrorByName('file', $this
        ->t('The file could not be uploaded.'));
    }
    parent::validateForm($form, $form_state);
  }
  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    $format_id = $form_state
      ->getValue('format');
    /** @var \Drupal\bibcite\Plugin\BibciteFormatInterface $format */
    $format = $this->formatManager
      ->createInstance($format_id);
    $decoded = $form_state
      ->getValue('decoded');
    $chunks = array_chunk($decoded, 50);
    $batch = [
      'title' => t('Import reference data'),
      'operations' => [],
      'finished' => 'bibcite_import_batch_finished',
      'file' => drupal_get_path('module', 'bibcite_import') . '/bibcite_import.batch.inc',
    ];
    foreach ($chunks as $chunk) {
      $batch['operations'][] = [
        'bibcite_import_batch_callback',
        [
          $chunk,
          $format,
        ],
      ];
    }
    batch_set($batch);
  }
}Members
| Name   | Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| DependencySerializationTrait:: | protected | property | An array of entity type IDs keyed by the property name of their storages. | |
| DependencySerializationTrait:: | protected | property | An array of service IDs keyed by property name used for serialization. | |
| DependencySerializationTrait:: | public | function | 1 | |
| DependencySerializationTrait:: | public | function | 2 | |
| FormBase:: | protected | property | The config factory. | 1 | 
| FormBase:: | protected | property | The request stack. | 1 | 
| FormBase:: | protected | property | The route match. | |
| FormBase:: | protected | function | Retrieves a configuration object. | |
| FormBase:: | protected | function | Gets the config factory for this form. | 1 | 
| FormBase:: | private | function | Returns the service container. | |
| FormBase:: | protected | function | Gets the current user. | |
| FormBase:: | protected | function | Gets the request object. | |
| FormBase:: | protected | function | Gets the route match. | |
| FormBase:: | protected | function | Gets the logger for a specific channel. | |
| FormBase:: | protected | function | Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: | |
| FormBase:: | public | function | Resets the configuration factory. | |
| FormBase:: | public | function | Sets the config factory for this form. | |
| FormBase:: | public | function | Sets the request stack object to use. | |
| ImportForm:: | protected | property | Bibcite format manager service. | |
| ImportForm:: | protected | property | Serializer service. | |
| ImportForm:: | public | function | Form constructor. Overrides FormInterface:: | |
| ImportForm:: | public static | function | Instantiates a new instance of this class. Overrides FormBase:: | |
| ImportForm:: | public | function | Returns a unique string identifying the form. Overrides FormInterface:: | |
| ImportForm:: | public | function | Form submission handler. Overrides FormInterface:: | |
| ImportForm:: | public | function | Form validation handler. Overrides FormBase:: | |
| ImportForm:: | public | function | Import form constructor. | |
| LinkGeneratorTrait:: | protected | property | The link generator. | 1 | 
| LinkGeneratorTrait:: | protected | function | Returns the link generator. | |
| LinkGeneratorTrait:: | protected | function | Renders a link to a route given a route name and its parameters. | |
| LinkGeneratorTrait:: | public | function | Sets the link generator service. | |
| LoggerChannelTrait:: | protected | property | The logger channel factory service. | |
| LoggerChannelTrait:: | protected | function | Gets the logger for a specific channel. | |
| LoggerChannelTrait:: | public | function | Injects the logger channel factory. | |
| MessengerTrait:: | protected | property | The messenger. | 29 | 
| MessengerTrait:: | public | function | Gets the messenger. | 29 | 
| MessengerTrait:: | public | function | Sets the messenger. | |
| RedirectDestinationTrait:: | protected | property | The redirect destination service. | 1 | 
| RedirectDestinationTrait:: | protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
| RedirectDestinationTrait:: | protected | function | Returns the redirect destination service. | |
| RedirectDestinationTrait:: | public | function | Sets the redirect destination service. | |
| StringTranslationTrait:: | protected | property | The string translation service. | 1 | 
| StringTranslationTrait:: | protected | function | Formats a string containing a count of items. | |
| StringTranslationTrait:: | protected | function | Returns the number of plurals supported by a given language. | |
| StringTranslationTrait:: | protected | function | Gets the string translation service. | |
| StringTranslationTrait:: | public | function | Sets the string translation service to use. | 2 | 
| StringTranslationTrait:: | protected | function | Translates a string to the current language or to a given language. | |
| UrlGeneratorTrait:: | protected | property | The url generator. | |
| UrlGeneratorTrait:: | protected | function | Returns the URL generator service. | |
| UrlGeneratorTrait:: | public | function | Sets the URL generator service. | |
| UrlGeneratorTrait:: | protected | function | Generates a URL or path for a specific route based on the given parameters. | 
