You are here

public function FeedImportBaseSettingsForm::buildForm in Feed Import 8

Form constructor.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form structure.

Overrides ConfigFormBase::buildForm

File

feed_import_base/src/Form/FeedImportBaseSettingsForm.php, line 45
Contains \Drupal\feed_import_base\Form\FeedImportBaseSettingsForm.

Class

FeedImportBaseSettingsForm

Namespace

Drupal\feed_import_base\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $config = $this
    ->config('feed_import_base.settings');
  $form['reports'] = [
    '#type' => 'checkbox',
    '#default_value' => $config
      ->get('reports'),
    '#title' => t('Provide import reports'),
    '#description' => t('These are log reports.'),
  ];
  $form['use_cron'] = [
    '#type' => 'checkbox',
    '#default_value' => $config
      ->get('use_cron'),
    '#title' => t('Cron import'),
    '#description' => t('Run import for enabled feeds at cron'),
  ];
  $form['container'] = [
    '#type' => 'fieldset',
    '#states' => [
      'invisible' => [
        'input[name="use_cron"]' => [
          'checked' => FALSE,
        ],
      ],
    ],
  ];
  $form['container']['time_settings'] = [
    '#type' => 'radios',
    '#options' => [
      t('From time to time'),
      t('Specified time interval'),
    ],
    '#default_value' => $config
      ->get('time_settings'),
    '#title' => t('When feeds can be imported'),
  ];
  $form['container']['time_between_imports'] = [
    '#type' => 'textfield',
    '#default_value' => $config
      ->get('interval'),
    '#title' => t('Time between two imports at cron (seconds)'),
    '#description' => t('Time betwen two cron imports.'),
    '#states' => [
      'visible' => [
        'input[name="time_settings"]' => [
          'value' => 0,
        ],
      ],
    ],
  ];
  $form['container']['interval_start'] = [
    '#type' => 'textfield',
    '#default_value' => $config
      ->get('interval_start'),
    '#title' => t('Start time'),
    '#description' => t('Format is hh:mm.'),
    '#states' => [
      'visible' => [
        'input[name="time_settings"]' => [
          'value' => 1,
        ],
      ],
    ],
  ];
  $form['container']['interval_stop'] = [
    '#type' => 'textfield',
    '#default_value' => $config
      ->get('interval_stop'),
    '#title' => t('End time'),
    '#description' => t('Format is hh:mm. This must be greater than start time.'),
    '#states' => [
      'visible' => [
        'input[name="time_settings"]' => [
          'value' => 1,
        ],
      ],
    ],
  ];
  $form['delete_items_per_cron'] = [
    '#type' => 'textfield',
    '#default_value' => $config
      ->get('delete_items_per_cron'),
    '#title' => t('Expired items delete per cron'),
    '#description' => t('How many expired items to delete when cron runs.'),
    '#required' => TRUE,
  ];
  $form['filters_dir'] = [
    '#type' => 'textfield',
    '#default_value' => _feed_import_base_get_filters_dir(),
    '#title' => t('Extra filters base path'),
    '#description' => t('Where to look for filter files.'),
  ];
  $form['let_overlap'] = [
    '#type' => 'select',
    '#multiple' => TRUE,
    '#options' => FeedImport::getAllEntities(),
    '#default_value' => $config
      ->get('let_overlap'),
    '#title' => t('Allow import overlap for specified entities'),
    '#description' => t('This is not indicated for nodes.'),
  ];
  $form['invoke_hooks'] = [
    '#type' => 'checkbox',
    '#default_value' => $config
      ->get('invoke_hooks'),
    '#title' => t('Invoke hooks on import success or error'),
    '#description' => t('This can be useful for sending alerts.'),
  ];
  return parent::buildForm($form, $form_state);
}