You are here

function book_next in Drupal 4

Same name and namespace in other branches
  1. 5 modules/book/book.module \book_next()
  2. 6 modules/book/book.module \book_next()
  3. 7 modules/book/book.module \book_next()

Fetches the node object of the next page of the book.

1 call to book_next()
theme_book_navigation in modules/book.module
Prepares the links to children (TOC) and forward/backward navigation for a node presented as a book page.

File

modules/book.module, line 414
Allows users to collaboratively author a book.

Code

function book_next($node) {

  // get first direct child
  $child = db_fetch_object(db_query(db_rewrite_sql('SELECT n.nid, n.title, b.weight FROM {node} n INNER JOIN {book} b ON n.vid = b.vid WHERE b.parent = %d AND n.status = 1 AND n.moderate = 0 ORDER BY b.weight ASC, n.title ASC'), $node->nid));
  if ($child) {
    return $child;
  }

  // No direct child: get next for this level or any parent in this book.
  $path = book_location($node);

  // Path to top-level node including this one.
  $path[] = $node;
  while (($leaf = array_pop($path)) && count($path)) {
    $next = db_fetch_object(db_query(db_rewrite_sql("SELECT n.nid, n.title, b.weight FROM {node} n INNER JOIN {book} b ON n.vid = b.vid WHERE b.parent = %d AND n.status = 1 AND n.moderate = 0 AND (b.weight > %d OR (b.weight = %d AND n.title > '%s')) ORDER BY b.weight ASC, n.title ASC"), $leaf->parent, $leaf->weight, $leaf->weight, $leaf->title));
    if ($next) {
      return $next;
    }
  }
}