You are here

private function ActivitySendEmailJobType::prepareBatch in Open Social 10.3.x

Same name and namespace in other branches
  1. 10.1.x modules/custom/activity_send/modules/activity_send_email/src/Plugin/AdvancedQueue/JobType/ActivitySendEmailJobType.php \Drupal\activity_send_email\Plugin\AdvancedQueue\JobType\ActivitySendEmailJobType::prepareBatch()
  2. 10.2.x modules/custom/activity_send/modules/activity_send_email/src/Plugin/AdvancedQueue/JobType/ActivitySendEmailJobType.php \Drupal\activity_send_email\Plugin\AdvancedQueue\JobType\ActivitySendEmailJobType::prepareBatch()

Prepares the batch processing for this queue item.

Parameters

array $data: Array of batch data.

array $user_ids_per_language: Array of user IDs.

string|null $langcode: Language code.

1 call to ActivitySendEmailJobType::prepareBatch()
ActivitySendEmailJobType::process in modules/custom/activity_send/modules/activity_send_email/src/Plugin/AdvancedQueue/JobType/ActivitySendEmailJobType.php

File

modules/custom/activity_send/modules/activity_send_email/src/Plugin/AdvancedQueue/JobType/ActivitySendEmailJobType.php, line 328

Class

ActivitySendEmailJobType
Advanced Queue Job to process email workers and send them to SendGrid.

Namespace

Drupal\activity_send_email\Plugin\AdvancedQueue\JobType

Code

private function prepareBatch(array $data, array $user_ids_per_language, $langcode = NULL) {

  // Split up by 50.
  $batches = array_chunk($user_ids_per_language, 50);

  // Create items for this queue again for further processing.
  foreach ($batches as $key => $batch_recipients) {

    // Create same queue item, but with IDs of just 50 users.
    $batch_data = [
      'entity_id' => $data['entity_id'],
      'recipients' => $batch_recipients,
      'langcode' => $langcode,
    ];

    // Instead of creating a Queue item we use Advanced Queue.
    $job = Job::create('activity_send_email_worker', $batch_data);
    if ($job instanceof Job) {
      $queue = Queue::load('default');
      $queue
        ->enqueueJob($job);
    }
  }
}