PrevnextService.php in Prevnext 8
File
src/PrevnextService.php
View source
<?php
namespace Drupal\prevnext;
use Drupal\Core\Entity\Query\QueryFactory;
use Drupal\node\Entity\Node;
class PrevnextService implements PrevnextServiceInterface {
protected $queryFactory;
public $prevnext;
public function __construct(QueryFactory $query) {
$this->queryFactory = $query;
}
public function getPreviousNext(Node $node) {
$nodes = $this
->getNodesOfType($node);
$current_nid = $node
->id();
$current_key = array_search($current_nid, $nodes);
$this->prevnext['prev'] = $current_key == 0 ? '' : $nodes[$current_key - 1];
$this->prevnext['next'] = $current_key == count($nodes) - 1 ? '' : $nodes[$current_key + 1];
return $this->prevnext;
}
protected function getNodesOfType(Node $node) {
$query = $this->queryFactory
->get('node');
$bundle = $node
->bundle();
$langcode = $node
->language()
->getId();
$nodes = $query
->condition('status', NODE_PUBLISHED)
->condition('type', $bundle)
->condition('langcode', $langcode)
->addMetaData('type', $bundle)
->addMetaData('langcode', $langcode)
->addTag('prev_next_nodes_type')
->execute();
return array_values($nodes);
}
}