You are here

function salesforce_push_enqueue_async in Salesforce Suite 8.4

Same name and namespace in other branches
  1. 8.3 modules/salesforce_push/salesforce_push.module \salesforce_push_enqueue_async()
  2. 5.0.x modules/salesforce_push/salesforce_push.module \salesforce_push_enqueue_async()

Insert a new queue item into the async push queue for the given mapping.

Parameters

\Drupal\Core\Entity\EntityInterface $entity: The entity.

\Drupal\salesforce_mapping\Entity\SalesforceMappingInterface $mapping: The mapping.

string $op: The operation.

1 call to salesforce_push_enqueue_async()
salesforce_push_entity_crud_mapping in modules/salesforce_push/salesforce_push.module
Helper method for salesforce_push_entity_crud()

File

modules/salesforce_push/salesforce_push.module, line 216
Push updates to Salesforce when a Drupal entity is updated.

Code

function salesforce_push_enqueue_async(EntityInterface $entity, SalesforceMappingInterface $mapping, MappedObjectInterface $mapped_object = NULL, $op) {

  // Each mapping has its own queue, so that like entries can be easily grouped
  // for batching. Each queue item is a unique array of entity ids to be
  // pushed. The async queue worker loads the queue item and works through as
  // many entities as possible, up to the async limit for this mapping.
  $props = [
    'name' => $mapping
      ->id(),
    'entity_id' => $entity
      ->id(),
    'op' => $op,
  ];
  if ($mapped_object) {
    $props['mapped_object_id'] = $mapped_object
      ->id();
  }
  \Drupal::service('queue.salesforce_push')
    ->createItem($props);
}