Book Manager Service.
Expanded class hierarchy of BookManager
class BookManager {
/**
* Database Service Object.
*
* @var \Drupal\Core\Database\Connection
*/
protected $database;
/**
* Entity manager Service Object.
*
* @var \Drupal\Core\Entity\EntityManager
*/
protected $entityManager;
/**
* Books Array.
*
* @var array
*/
protected $books;
/**
* Constructs a BookManager object.
*/
public function __construct(Connection $database, EntityManager $entityManager) {
$this->database = $database;
$this->entityManager = $entityManager;
}
/**
* Returns an array of all books.
*
* This list may be used for generating a list of all the books, or for building
* the options for a form select.
*
* @return
* An array of all books.
*/
public function getAllBooks() {
if (!isset($this->books)) {
$this
->loadBooks();
}
return $this->books;
}
/**
* Loads Books Array.
*/
protected function loadBooks() {
$this->books = array();
$nids = $this->database
->query("SELECT DISTINCT(bid) FROM {book}")
->fetchCol();
if ($nids) {
$query = $this->database
->select('book', 'b', array(
'fetch' => \PDO::FETCH_ASSOC,
));
$query
->join('menu_links', 'ml', 'b.mlid = ml.mlid');
$query
->fields('b');
$query
->fields('ml');
$query
->condition('b.nid', $nids);
$query
->orderBy('ml.weight');
$query
->orderBy('ml.link_title');
$query
->addTag('node_access');
$query
->addMetaData('base_table', 'book');
$book_links = $query
->execute();
$nodes = $this->entityManager
->getStorageController('node')
->load($nids);
foreach ($book_links as $link) {
$nid = $link['nid'];
if (isset($nodes[$nid]) && $nodes[$nid]->status) {
$link['href'] = $link['link_path'];
$link['options'] = unserialize($link['options']);
$link['title'] = $nodes[$nid]
->label();
$link['type'] = $nodes[$nid]
->bundle();
$this->books[$link['bid']] = $link;
}
}
}
}
}
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
BookManager:: |
protected | property | Database Service Object. | |
BookManager:: |
protected | property | Entity manager Service Object. | |
BookManager:: |
protected | property | Books Array. | |
BookManager:: |
public | function | Constructs a BookManager object. | |
BookManager:: |
public | function | Returns an array of all books. | |
BookManager:: |
protected | function | Loads Books Array. |