if ($node instanceof NodeInterface && !
empty($node->book
['bid'
])) { $current_bid =
$node->book
['bid'
];
} if ($this->configuration
['block_mode'
] == 'all pages'
) { $book_menus =
[];
$pseudo_tree =
[0 =>
['below' => FALSE
]];
foreach ($this->bookManager->
getAllBooks() as $book_id =>
$book) { if ($book['bid'
] ==
$current_bid) { // If the current page is a node associated with a book, the menu
// needs to be retrieved.
$data =
$this->bookManager->
bookTreeAllData($node->book
['bid'
],
$node->book
);
$book_menus[$book_id] =
$this->bookManager->
bookTreeOutput($data);
} else { // Since we know we will only display a link to the top node, there
// is no reason to run an additional menu tree query for each book.
$book['in_active_trail'
] = FALSE;
// Check whether user can access the book link.
$book_node =
$this->nodeStorage->
load($book['nid'
]);
$book['access'
] =
$book_node->
access('view'
);
$pseudo_tree[0
]['link'
] =
$book;
$book_menus[$book_id] =
$this->bookManager->
bookTreeOutput($pseudo_tree);
}