contacts_events-8.x-1.x-dev/commerce_advancedqueue/commerce_advancedqueue.module

commerce_advancedqueue/commerce_advancedqueue.module
<?php

/**
 * @file
 * Module file for Commerce Advanced Queue.
 */

use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Url;

/**
 * Implements hook_entity_operation().
 */
function commerce_advancedqueue_entity_operation(EntityInterface $entity) {
  $operations = [];

  if ($entity->getEntityTypeId() == 'advancedqueue_queue') {
    /** @var \Drupal\advancedqueue\Entity\QueueInterface $entity */
    if ($entity->getBackendId() == 'database_commerce_order_job') {
      $operations['jobs'] = [
        'title' => t('List jobs'),
        'weight' => -20,
        'url' => Url::fromRoute('view.advancedqueue_commerce_order_jobs.page_1', ['arg_0' => $entity->id()]),
      ];
    }
  }

  return $operations;
}

/**
 * Implements hook_ENTITY_TYPE_storage_load().
 */
function commerce_advancedqueue_commerce_order_storage_load(array $entities) {
  /** @var \Drupal\advancedqueue\Entity\QueueInterface $queue */
  $queue = \Drupal::entityTypeManager()
    ->getStorage('advancedqueue_queue')
    ->load('commerce_order');
  /** @var \Drupal\commerce_advancedqueue\Plugin\AdvancedQueue\Backend\CommerceOrderJobBackendInterface $queue_backend */
  $queue_backend = $queue->getBackend();

  /** @var \Drupal\advancedqueue\ProcessorInterface $processor */
  $processor = \Drupal::service('advancedqueue.processor');
  foreach ($entities as $id => $entity) {
    $job_count = $queue_backend->countJobsForOrder($id);
    if (empty($job_count['queued'])) {
      continue;
    }

    // If there are jobs to be processed, process them now.
    while ($job = $queue_backend->claimJobForOrder($id)) {
      $processor->processJob($job, $queue);
    }
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc