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();
}
}