You are here

public function ContentHubImportQueue::process in Acquia Content Hub 8

Handle the route to create a batch process.

1 string reference to 'ContentHubImportQueue::process'
acquia_contenthub.routing.yml in ./acquia_contenthub.routing.yml
acquia_contenthub.routing.yml

File

src/Controller/ContentHubImportQueue.php, line 55

Class

ContentHubImportQueue
Implements an Import Queue for entities.

Namespace

Drupal\acquia_contenthub\Controller

Code

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');
}