class ContentHubImportQueue in Acquia Content Hub 8
Same name in this branch
- 8 src/Controller/ContentHubImportQueue.php \Drupal\acquia_contenthub\Controller\ContentHubImportQueue
- 8 src/Plugin/QueueWorker/ContentHubImportQueue.php \Drupal\acquia_contenthub\Plugin\QueueWorker\ContentHubImportQueue
Implements an Import Queue for entities.
@package Drupal\acquia_contenthub\Controller
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\acquia_contenthub\Controller\ContentHubImportQueue
Expanded class hierarchy of ContentHubImportQueue
File
- src/
Controller/ ContentHubImportQueue.php, line 18
Namespace
Drupal\acquia_contenthub\ControllerView source
class ContentHubImportQueue extends ControllerBase {
/**
* Queue Factory.
*
* @var \Drupal\Core\Queue\QueueFactory
*/
protected $queueFactory;
/**
* Config Factory Interface.
*
* @var \Drupal\Core\Config\ConfigFactoryInterface
*/
protected $config;
/**
* {@inheritdoc}
*/
public function __construct(ConfigFactoryInterface $config_factory, QueueFactory $queue_factory) {
$this->config = $config_factory;
$this->queueFactory = $queue_factory;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('config.factory'), $container
->get('queue'));
}
/**
* Handle the route to create a batch process.
*/
public function process() {
$config = $this
->config('acquia_contenthub.entity_config');
$queue = $this->queueFactory
->get('acquia_contenthub_import_queue');
if ($queue
->numberOfItems() < 1) {
$this
->messenger()
->addStatus('No items to process.');
$this
->redirect('acquia_contenthub.import_queue');
}
$batch = [
'title' => $this
->t('Process all remaining entities'),
'operations' => [],
'finished' => [
self::class,
'batchFinished',
],
];
// Define a default value for batch_size in case it is not defined.
$batch_size = $config
->get('import_queue_batch_size');
$batch_size = !empty($batch_size) && is_numeric($batch_size) ? $batch_size : 1;
// Batch operations.
for ($i = 0; ceil($i < $queue
->numberOfItems() / $batch_size); $i++) {
$batch['operations'][] = [
[
self::class,
'batchProcess',
],
[
$config,
],
];
}
batch_set($batch);
return batch_process('/admin/config/services/acquia-contenthub/import-queue');
}
/**
* Process the batch.
*
* The batch worker will run through the queued items and process them
* according to their queue method.
*
* @param \Drupal\Core\Config\ImmutableConfig $config
* The import configuration.
* @param mixed $context
* The batch context.
*/
public static function batchProcess(ImmutableConfig $config, &$context) {
/** @var \Drupal\Core\Queue\QueueFactory $queue_factory */
$queue_factory = \Drupal::service('queue');
/** @var \Drupal\Core\Queue\QueueWorkerManagerInterface $queue_manager */
$queue_manager = \Drupal::service('plugin.manager.queue_worker');
$queue = $queue_factory
->get('acquia_contenthub_import_queue');
$worker = $queue_manager
->createInstance('acquia_contenthub_import_queue');
$queue_batch_size = $config
->get('import_queue_batch_size');
$batch_size = $queue_batch_size === 'all' || $queue
->numberOfItems() < $queue_batch_size ? $queue
->numberOfItems() : $queue_batch_size;
for ($i = 0; $i < $batch_size; $i++) {
if ($item = $queue
->claimItem()) {
try {
$worker
->processItem($item->data);
$queue
->deleteItem($item);
} catch (SuspendQueueException $exception) {
$context['errors'][] = $exception
->getMessage();
$context['success'] = FALSE;
$queue
->releaseItem($item);
break;
} catch (EntityStorageException $exception) {
$context['errors'][] = $exception
->getMessage();
$context['success'] = FALSE;
$queue
->releaseItem($item);
break;
}
}
}
}
/**
* Batch finish callback.
*
* This will inspect the results of the batch and will display a message to
* indicate how the batch process ended.
*
* @param bool $success
* The result of batch process.
* @param array $result
* The result of $context.
* @param array $operations
* The operations that were run.
*/
public static function batchFinished($success, array $result, array $operations) {
if ($success) {
\Drupal::messenger()
->addStatus(t("Processed all Content Hub entities."));
return;
}
$error_operation = reset($operations);
\Drupal::messenger()
->addStatus(t('An error occurred while processing @operation with arguments : @args', [
'@operation' => $error_operation[0],
'@args' => print_r($error_operation[0], TRUE),
]));
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ContentHubImportQueue:: |
protected | property | Config Factory Interface. | |
ContentHubImportQueue:: |
protected | property | Queue Factory. | |
ContentHubImportQueue:: |
public static | function | Batch finish callback. | |
ContentHubImportQueue:: |
public static | function | Process the batch. | |
ContentHubImportQueue:: |
public static | function |
Instantiates a new instance of this class. Overrides ControllerBase:: |
|
ContentHubImportQueue:: |
public | function | Handle the route to create a batch process. | |
ContentHubImportQueue:: |
public | function | ||
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity manager. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
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. |