ContentHubExportQueueForm.php in Acquia Content Hub 8.2
File
modules/acquia_contenthub_publisher/src/Form/ContentHubExportQueueForm.php
View source
<?php
namespace Drupal\acquia_contenthub_publisher\Form;
use Drupal\acquia_contenthub_publisher\ContentHubExportQueue;
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class ContentHubExportQueueForm extends FormBase {
protected $contentHubExportQueue;
public function getFormId() {
return 'acquia_contenthub.export_queue_settings';
}
public function __construct(ContentHubExportQueue $export_queue) {
$this->contentHubExportQueue = $export_queue;
}
public static function create(ContainerInterface $container) {
return new static($container
->get('acquia_contenthub_publisher.acquia_contenthub_export_queue'));
}
public function buildForm(array $form, FormStateInterface $form_state) {
$form['description'] = [
'#markup' => $this
->t('Instruct the content hub module to manage content export with a queue.'),
];
$queue_count = intval($this->contentHubExportQueue
->getQueueCount());
$form['run_export_queue'] = [
'#type' => 'details',
'#title' => $this
->t('Run Export Queue'),
'#description' => '<strong>For development & testing use only!</strong><br /> Running the export queue from the UI can cause php timeouts for large datasets.
A cronjob to run the queue should be used instead.',
'#open' => TRUE,
];
$form['run_export_queue']['queue-list'] = [
'#type' => 'item',
'#title' => $this
->t('Number of queue items in the Export Queue'),
'#description' => $this
->t('%num @items.', [
'%num' => $queue_count,
'@items' => $queue_count === 1 ? $this
->t('item') : $this
->t('items'),
]),
];
$form['run_export_queue']['submit'] = [
'#type' => 'submit',
'#value' => t('Export Items'),
'#name' => 'run_export_queue',
];
if ($queue_count > 0) {
$form['run_export_queue']['purge_queue'] = [
'#type' => 'item',
'#title' => $this
->t('Purge existing queues'),
'#description' => $this
->t('It is possible an existing queue has becomed orphaned, use this function to wipe all existing queues'),
];
$form['run_export_queue']['purge'] = [
'#type' => 'submit',
'#value' => t('Purge'),
'#name' => 'purge_export_queue',
];
}
return $form;
}
public function submitForm(array &$form, FormStateInterface $form_state) {
$queue_count = intval($this->contentHubExportQueue
->getQueueCount());
$trigger = $form_state
->getTriggeringElement();
switch ($trigger['#name']) {
case 'run_export_queue':
if (!empty($queue_count)) {
$this->contentHubExportQueue
->processQueueItems();
}
else {
$this
->messenger()
->addWarning($this
->t('You cannot run the export queue because it is empty.'));
}
break;
case 'purge_export_queue':
$this->contentHubExportQueue
->purgeQueues();
$this
->messenger()
->addMessage($this
->t('Purged all contenthub export queues.'));
break;
default:
break;
}
}
}