public function ContentHubImportQueueForm::buildForm in Acquia Content Hub 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
- src/
Form/ ContentHubImportQueueForm.php, line 60
Class
- ContentHubImportQueueForm
- Form for the Content Hub Import Queue.
Namespace
Drupal\acquia_contenthub\FormCode
public function buildForm(array $form, FormStateInterface $form_state) {
$config = $this->configFactory
->get('acquia_contenthub.entity_config');
$form['description'] = [
'#markup' => $this
->t('Instruct the content hub module to manage content syndication with a queue.'),
];
$form['import_with_queue'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Import via queue'),
'#description' => $this
->t('Enable content import queuing for this site'),
'#default_value' => $config
->get('import_with_queue'),
];
$form['import_queue_configuration'] = [
'#type' => 'details',
'#title' => $this
->t('Queue Settings'),
'#states' => [
'invisible' => [
':input[name="import_with_queue"]' => [
'checked' => FALSE,
],
],
],
'#open' => TRUE,
];
$number_of_items = [
1,
5,
10,
20,
50,
100,
200,
500,
1000,
];
$number_of_items = array_combine($number_of_items, $number_of_items);
$form['import_queue_configuration']['batch_size'] = [
'#type' => 'select',
'#options' => [
'all' => $this
->t('- All -'),
] + $number_of_items,
'#title' => $this
->t('Queue batch size'),
'#description' => $this
->t('Number of queue items that will be processed in the same batch queue process. This has an impact on the importing site, the higher the number the more time spent in a single batch process. Set to "1" by default.'),
'#default_value' => $config
->get('import_queue_batch_size'),
];
$wait_time = [
3,
5,
10,
15,
30,
];
$wait_time = array_combine($wait_time, $wait_time);
// @todo remove import_queue_wait_time, not used anywhere.
$form['import_queue_configuration']['wait_time'] = [
'#type' => 'select',
'#options' => $wait_time,
'#title' => $this
->t('Queue waiting time between items'),
'#description' => $this
->t('Waiting time in seconds between queue items being processed. This can be used to prevent stampeding and can be used with cron settings to control frequency.'),
'#default_value' => $config
->get('import_queue_wait_time'),
];
$form['run_import_queue'] = [
'#type' => 'details',
'#title' => $this
->t('Run the import queue'),
'#description' => $this
->t('Manually process the remaining items in the queue.'),
'#states' => [
'invisible' => [
':input[name="import_with_queue"]' => [
'checked' => FALSE,
],
],
],
];
$form['run_import_queue']['actions'] = [
'#type' => 'actions',
];
$queue_count = $this->queueFactory
->get('acquia_contenthub_import_queue')
->numberOfItems();
$form['run_import_queue']['queue_list'] = [
'#type' => 'item',
'#title' => $this
->t('Number of items in the import queue'),
'#description' => $this
->t('%num @items', [
'%num' => $queue_count,
'@items' => $queue_count == 1 ? 'item' : 'items',
]),
];
$form['run_import_queue']['actions']['run'] = [
'#type' => 'submit',
'#name' => 'run_import_queue',
'#value' => $this
->t('Run import queue'),
'#op' => 'run',
];
$form['actions'] = [
'#type' => 'actions',
];
$form['actions']['save'] = [
'#type' => 'submit',
'#name' => 'import_queue_configuraiton',
'#value' => $this
->t('Save configuration'),
'#op' => 'save',
];
return $form;
}