function _book_toc_recurse
Recursively processes and formats menu items for book_toc().
This helper function recursively modifies the table of contents array for each item in the menu tree, ignoring items in the exclude array or at a depth greater than the limit. Truncates titles over thirty characters and appends an indentation string incremented by depth.
Parameters
$tree: The data structure of the book's menu tree. Includes hidden links.
$indent: A string appended to each menu item title. Increments by '--' per depth level.
$toc: Reference to the table of contents array. This is modified in place, so the function does not have a return value.
$exclude: (optional) An array of menu link ID values. Any link whose menu link ID is in this array will be excluded (along with its children). Defaults to an empty array.
$depth_limit: Any link deeper than this value will be excluded (along with its children).
1 call to _book_toc_recurse()
- book_toc in modules/
book/ book.module - Returns an array of book pages in table of contents order.
File
-
modules/
book/ book.module, line 1168
Code
function _book_toc_recurse($tree, $indent, &$toc, $exclude, $depth_limit) {
foreach ($tree as $data) {
if ($data['link']['depth'] > $depth_limit) {
// Don't iterate through any links on this level.
break;
}
if (!in_array($data['link']['mlid'], $exclude)) {
$toc[$data['link']['mlid']] = $indent . ' ' . truncate_utf8($data['link']['title'], 30, TRUE, TRUE);
if ($data['below']) {
_book_toc_recurse($data['below'], $indent . '--', $toc, $exclude, $depth_limit);
}
}
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.