function auto_entityqueue_add_entity_to_queue in Auto Entityqueue 8
Same name and namespace in other branches
- 7 auto_entityqueue.module \auto_entityqueue_add_entity_to_queue()
 
Add an entity to a queue.
Parameters
$entity:
EntityQueue $queue:
1 call to auto_entityqueue_add_entity_to_queue()
- auto_entityqueue_entity_insert in ./
auto_entityqueue.module  - Implements hook_entity_insert().
 
File
- ./
auto_entityqueue.module, line 74  - Handles automatically adding entities to entityqueues.
 
Code
function auto_entityqueue_add_entity_to_queue($entity, EntityQueue $queue) {
  // Get the entity id.
  $entity_id = $entity
    ->id();
  // Get the queue entity settings.
  $entity_settings = $queue
    ->getEntitySettings();
  $queue_settings = $queue
    ->getQueueSettings();
  // Get the subqueues.
  $query = \Drupal::entityQuery('entity_subqueue')
    ->condition('queue', $queue
    ->id());
  $result = $query
    ->execute();
  $subqueues = EntitySubqueue::loadMultiple($result);
  // Add entity to each subqueue.
  foreach ($subqueues as $subqueue) {
    $items = $subqueue
      ->get('items')
      ->getValue();
    // Deetermine if we should remove an item from the list to avoid exceeding
    // the maximum number of items.
    $remove_item = !empty($queue_settings['max_size']) && count($items) >= $queue_settings['max_size'];
    if (isset($entity_settings['handler_settings']['auto_entityqueue']['insert_front']) && $entity_settings['handler_settings']['auto_entityqueue']['insert_front']) {
      !$remove_item or array_pop($items);
      array_unshift($items, array(
        'target_id' => $entity_id,
      ));
    }
    else {
      !$remove_item or array_shift($items);
      array_push($items, array(
        'target_id' => $entity_id,
      ));
    }
    $subqueue
      ->set('items', $items);
    $subqueue
      ->save();
  }
}