You are here

public function QueueSettings::cron_alter in Ultimate Cron 8.2

Implements hook_cron_alter().

File

src/QueueSettings.php, line 157

Class

QueueSettings
Queue settings plugin class.

Namespace

Drupal\ultimate_cron

Code

public function cron_alter(&$jobs) {
  $new_jobs = array();
  foreach ($jobs as $job) {
    if (!$this
      ->isValid($job)) {
      continue;
    }
    $settings = $job
      ->getSettings();
    if (isset($settings['settings']['queue']['name'])) {
      if ($settings['settings']['queue']['throttle']) {
        for ($i = 2; $i <= $settings['settings']['queue']['threads']; $i++) {
          $name = $job
            ->id() . '_' . $i;
          $hook = $job->hook;
          $hook['settings']['queue']['master'] = $job
            ->id();
          $hook['settings']['queue']['thread'] = $i;
          $hook['name'] = $name;
          $hook['title'] .= " (#{$i})";
          $hook['immutable'] = TRUE;
          $new_jobs[$name] = ultimate_cron_prepare_job($name, $hook);
          $new_jobs[$name]->settings = $settings + $new_jobs[$name]->settings;
          $new_jobs[$name]->title = $job->title . " (#{$i})";
        }
      }
    }
  }
  $jobs += $new_jobs;
}