ContentHubImportQueueByFilter.php in Acquia Content Hub 8.2
File
modules/acquia_contenthub_subscriber/src/ContentHubImportQueueByFilter.php
View source
<?php
namespace Drupal\acquia_contenthub_subscriber;
use Drupal\Core\DependencyInjection\DependencySerializationTrait;
use Drupal\Core\Queue\QueueFactory;
use Drupal\Core\Queue\QueueWorkerManagerInterface;
use Drupal\Core\Queue\SuspendQueueException;
use Drupal\Core\StringTranslation\StringTranslationTrait;
class ContentHubImportQueueByFilter {
use StringTranslationTrait;
use DependencySerializationTrait;
protected $queueWorkerManager;
protected $filterQueue;
public function __construct(QueueFactory $queue_factory, QueueWorkerManagerInterface $queue_worker_manager) {
$this->queueWorkerManager = $queue_worker_manager;
$this->filterQueue = $queue_factory
->get('acquia_contenthub_import_from_filters');
}
public function process(array $filter_uuids) {
$batch = [
'title' => $this
->t('Process all entities to be queued for import'),
'operations' => [],
'finished' => [
[
$this,
'batchFinished',
],
[],
],
];
foreach ($filter_uuids as $filter_uuid) {
$data = new \stdClass();
$data->filter_uuid = $filter_uuid;
$this->filterQueue
->createItem($data);
$batch['operations'][] = [
[
$this,
'batchProcess',
],
[],
];
}
batch_set($batch);
}
public function batchProcess() {
$filter_queue_worker = $this->queueWorkerManager
->createInstance('acquia_contenthub_import_from_filters');
if ($item = $this->filterQueue
->claimItem()) {
try {
$filter_queue_worker
->processItem($item->data);
$this->filterQueue
->deleteItem($item);
} catch (SuspendQueueException $exception) {
$context['errors'][] = $exception
->getMessage();
$context['success'] = FALSE;
$this->filterQueue
->releaseItem($item);
}
}
}
public static function batchFinished($success, array $result, array $operations) {
if ($success) {
\Drupal::messenger()
->addMessage('Processed cloud filters.');
return;
}
$error_operation = reset($operations);
\Drupal::messenger()
->addMessage(t('An error occurred while processing @operation with arguments : @args', [
'@operation' => $error_operation[0],
'@args' => print_r($error_operation[0], TRUE),
]));
}
}