function book_helper_init in Book helper 7
Implements hook_init().
File
- ./
book_helper.module, line 34 - Improves Drupal's core book module's functionality.
Code
function book_helper_init() {
// Set main book page in menu tree path.
if (variable_get('book_helper_menu_tree_set_path', 0) && function_exists('menu_tree_set_path')) {
$node = menu_get_object();
// Skip setting the menu tree path if we are on the main page of the book.
if (isset($node->book) && $node->book['nid'] != $node->book['bid']) {
// Get active menu names for this node.
$active_menu_names = db_select('menu_links')
->distinct()
->fields('menu_links', array(
'menu_name',
))
->condition('module', 'menu')
->condition('link_path', 'node/' . $node->nid)
->execute()
->fetchCol();
// Only set path for core's 'menu' module.
$menu_names = db_select('menu_links')
->distinct()
->fields('menu_links', array(
'menu_name',
))
->condition('module', 'menu')
->orderBy('menu_name')
->execute()
->fetchCol();
$path = 'node/' . $node->book['bid'];
foreach ($menu_names as $menu_name) {
// Make sure we don't reset the menu tree path if this node (aka page)
// is already active in this menu.
if (!in_array($menu_name, $active_menu_names)) {
menu_tree_set_path($menu_name, $path);
}
}
}
}
}