X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fentityqueue%2Fsrc%2FPlugin%2Fviews%2Fsort%2FEntityQueueInQueue.php;fp=web%2Fmodules%2Fcontrib%2Fentityqueue%2Fsrc%2FPlugin%2Fviews%2Fsort%2FEntityQueueInQueue.php;h=b679675a81dfd3b23199b3df5541a52c7e95776a;hp=0000000000000000000000000000000000000000;hb=059867c3f96750652c80f39e44c442a58c2549ee;hpb=f8fc16ae6b862bef59baaad5d051dd37b7ff11b2 diff --git a/web/modules/contrib/entityqueue/src/Plugin/views/sort/EntityQueueInQueue.php b/web/modules/contrib/entityqueue/src/Plugin/views/sort/EntityQueueInQueue.php new file mode 100644 index 000000000..b679675a8 --- /dev/null +++ b/web/modules/contrib/entityqueue/src/Plugin/views/sort/EntityQueueInQueue.php @@ -0,0 +1,103 @@ +currentUser = $current_user; + $this->messenger = $messenger; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { + return new static( + $configuration, + $plugin_id, + $plugin_definition, + $container->get('current_user'), + $container->get('messenger') + ); + } + + /** + * {@inheritdoc}. + */ + public function query() { + $this->ensureMyTable(); + + // Try to find an entity queue relationship in this view, and pick the first + // one available. + $entity_queue_relationship = NULL; + foreach ($this->view->relationship as $id => $relationship) { + if ($relationship instanceof EntityQueueRelationship) { + $entity_queue_relationship = $relationship; + $this->options['relationship'] = $id; + $this->setRelationship(); + + break; + } + } + + if ($entity_queue_relationship) { + // Add the field. + $subqueue_items_table_alias = $entity_queue_relationship->first_alias; + $this->query->addOrderBy($subqueue_items_table_alias, 'bundle', $this->options['order']); + } + else { + if ($this->currentUser->hasPermission('administer views')) { + $this->messenger->addMessage($this->t('In order to sort by in queue, you need to add the Entityqueue: Queue relationship on View: @view with display: @display', + ['@view' => $this->view->storage->label(), + '@display' => $this->view->current_display] + ), Messenger::TYPE_ERROR); + } + } + } + +}