class ContentHubImportQueueForm in Acquia Content Hub 8.2
The form for content hub import queues.
@package Drupal\acquia_contenthub\Form
Hierarchy
- class \Drupal\Core\Form\FormBase implements ContainerInjectionInterface, FormInterface uses DependencySerializationTrait, LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\acquia_contenthub_subscriber\Form\ContentHubImportQueueForm
Expanded class hierarchy of ContentHubImportQueueForm
1 string reference to 'ContentHubImportQueueForm'
- acquia_contenthub_subscriber.routing.yml in modules/
acquia_contenthub_subscriber/ acquia_contenthub_subscriber.routing.yml - modules/acquia_contenthub_subscriber/acquia_contenthub_subscriber.routing.yml
File
- modules/
acquia_contenthub_subscriber/ src/ Form/ ContentHubImportQueueForm.php, line 17
Namespace
Drupal\acquia_contenthub_subscriber\FormView source
class ContentHubImportQueueForm extends FormBase {
/**
* The Import Queue Service.
*
* @var \Drupal\acquia_contenthub_subscriber\ContentHubImportQueue
*/
protected $contentHubImportQueue;
/**
* Acquia Content Hub Client factory.
*
* @var \Drupal\acquia_contenthub\Client\ClientFactory
*/
protected $clientFactory;
/**
* Content Hub import queue by filter service.
*
* @var \Drupal\acquia_contenthub_subscriber\ContentHubImportQueueByFilter
*/
protected $importByFilter;
/**
* ContentHubImportQueueForm constructor.
*
* @param \Drupal\acquia_contenthub_subscriber\ContentHubImportQueue $import_queue
* The Import Queue Service.
* @param \Drupal\acquia_contenthub\Client\ClientFactory $client_factory
* Acquia Content Hub Client factory.
* @param \Drupal\acquia_contenthub_subscriber\ContentHubImportQueueByFilter $import_by_filter
* Content Hub import queue by filter service.
*/
public function __construct(ContentHubImportQueue $import_queue, ClientFactory $client_factory, ContentHubImportQueueByFilter $import_by_filter) {
$this->contentHubImportQueue = $import_queue;
$this->clientFactory = $client_factory;
$this->importByFilter = $import_by_filter;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('acquia_contenthub_subscriber.acquia_contenthub_import_queue'), $container
->get('acquia_contenthub.client.factory'), $container
->get('acquia_contenthub_subscriber.acquia_contenthub_import_queue_by_filter'));
}
/**
* {@inheritdoc}
*/
public function getFormId() {
return 'acquia_contenthub.import_queue_settings';
}
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state) {
$form['description'] = [
'#markup' => $this
->t('Instruct the content hub module to manage content syndication with a queue.'),
];
$form['run_import_queue'] = [
'#type' => 'details',
'#title' => $this
->t('Run the import queue'),
'#description' => '<strong>For development & testing use only!</strong><br /> Running the import 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_import_queue']['actions'] = [
'#type' => 'actions',
];
$queue_count = $this->contentHubImportQueue
->getQueueCount();
$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',
];
$title = $this
->t('Queue from filters');
$form['queue_from_filters'] = [
'#type' => 'details',
'#title' => $title,
'#description' => 'Queue entities for import based on your custom filters',
'#open' => TRUE,
];
$form['queue_from_filters']['actions'] = [
'#type' => 'actions',
];
$form['queue_from_filters']['actions']['import'] = [
'#type' => 'submit',
'#name' => 'queue_from_filters',
'#value' => $title,
];
return $form;
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
$queue_count = intval($this->contentHubImportQueue
->getQueueCount());
$trigger = $form_state
->getTriggeringElement();
$messenger = $this
->messenger();
switch ($trigger['#name']) {
case 'queue_from_filters':
$filter_uuids = $this
->getFilterUuids();
if (!$filter_uuids) {
$messenger
->addMessage('No filters found!', 'warning');
break;
}
$this->importByFilter
->process($filter_uuids);
$messenger
->addMessage('Entities got queued for import.', 'status');
break;
case 'run_import_queue':
if (!empty($queue_count)) {
$this->contentHubImportQueue
->process();
}
else {
$messenger
->addMessage('You cannot run the import queue because it is empty.', 'warning');
}
break;
}
}
/**
* Return the cloud filters UUIDs.
*
* @return array
* Array contains UUIDs of cloud filters.
*
* @throws \Exception
*/
protected function getFilterUuids() : array {
$client = $this->clientFactory
->getClient();
$settings = $client
->getSettings();
$webhook_uuid = $settings
->getWebhook('uuid');
if (!$webhook_uuid) {
return [];
}
$filters = $client
->listFiltersForWebhook($webhook_uuid);
return $filters['data'] ?? [];
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ContentHubImportQueueForm:: |
protected | property | Acquia Content Hub Client factory. | |
ContentHubImportQueueForm:: |
protected | property | The Import Queue Service. | |
ContentHubImportQueueForm:: |
protected | property | Content Hub import queue by filter service. | |
ContentHubImportQueueForm:: |
public | function |
Form constructor. Overrides FormInterface:: |
|
ContentHubImportQueueForm:: |
public static | function |
Instantiates a new instance of this class. Overrides FormBase:: |
|
ContentHubImportQueueForm:: |
protected | function | Return the cloud filters UUIDs. | |
ContentHubImportQueueForm:: |
public | function |
Returns a unique string identifying the form. Overrides FormInterface:: |
|
ContentHubImportQueueForm:: |
public | function |
Form submission handler. Overrides FormInterface:: |
|
ContentHubImportQueueForm:: |
public | function | ContentHubImportQueueForm constructor. | |
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. | |
FormBase:: |
public | function |
Form validation handler. Overrides FormInterface:: |
62 |
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. |