? sites/all/modules
? sites/default/files
? sites/default/settings.php
Index: modules/book/book.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/book/book.module,v
retrieving revision 1.467
diff -u -p -r1.467 book.module
--- modules/book/book.module	16 Jul 2008 21:59:26 -0000	1.467
+++ modules/book/book.module	31 Aug 2008 11:23:13 -0000
@@ -210,7 +210,9 @@ function book_block($op = 'list', $delta
       }
       elseif ($current_bid) {
         // Only display this block when the user is browsing a book.
-        $title = db_result(db_query(db_rewrite_sql('SELECT n.title FROM {node} n WHERE n.nid = %d'), $node->book['bid']));
+        $title = db_query(db_rewrite_sql('SELECT n.title FROM {node} n WHERE n.nid = :nid'), array(
+          ':nid' => $node->book['bid'],
+        ))->fetchField();
         // Only show the block if the user has view access for the top-level node.
         if ($title) {
           $tree = menu_tree_all_data($node->book['menu_name'], $node->book);
@@ -268,13 +270,13 @@ function book_get_books() {
     $all_books = array();
     $result = db_query("SELECT DISTINCT(bid) FROM {book}");
     $nids = array();
-    while ($book = db_fetch_array($result)) {
-      $nids[] = $book['bid'];
+    foreach ($result as $book) {
+      $nids[] = $book->bid;
     }
 
     if ($nids) {
-      $result2 = db_query(db_rewrite_sql("SELECT n.type, n.title, b.*, ml.* FROM {book} b INNER JOIN {node} n on b.nid = n.nid INNER JOIN {menu_links} ml ON b.mlid = ml.mlid WHERE n.nid IN (" . implode(',', $nids) . ") AND n.status = 1 ORDER BY ml.weight, ml.link_title"));
-      while ($link = db_fetch_array($result2)) {
+      $result2 = db_query(db_rewrite_sql("SELECT n.type, n.title, b.*, ml.* FROM {book} b INNER JOIN {node} n on b.nid = n.nid INNER JOIN {menu_links} ml ON b.mlid = ml.mlid WHERE n.nid IN (" . implode(',', $nids) . ") AND n.status = 1 ORDER BY ml.weight, ml.link_title"), array(), array('fetch' => PDO::FETCH_ASSOC));
+      foreach ($result2 as $link) {
         $link['href'] = $link['link_path'];
         $link['options'] = unserialize($link['options']);
         $all_books[$link['bid']] = $link;
@@ -466,10 +468,14 @@ function _book_update_outline(&$node) {
   else {
     // Check in case the parent is not is this book; the book takes precedence.
     if (!empty($node->book['plid'])) {
-      $parent = db_fetch_array(db_query("SELECT * FROM {book} WHERE mlid = %d", $node->book['plid']));
+      $parent = db_query("SELECT * FROM {book} WHERE mlid = :mlid", array(
+        ':mlid' => $node->book['plid'],
+      ), array('fetch' => PDO::FETCH_ASSOC))->fetch();
     }
     if (empty($node->book['plid']) || !$parent || $parent['bid'] != $node->book['bid']) {
-      $node->book['plid'] = db_result(db_query("SELECT mlid FROM {book} WHERE nid = %d", $node->book['bid']));
+      $node->book['plid'] = db_query("SELECT mlid FROM {book} WHERE nid = :nid", array(
+        ':nid' => $node->book['bid'],
+      ))->fetchField();
       $node->book['parent_mismatch'] = TRUE; // Likely when JS is disabled.
     }
   }
@@ -477,10 +483,16 @@ function _book_update_outline(&$node) {
   if (menu_link_save($node->book)) {
     if ($new) {
       // Insert new.
-      db_query("INSERT INTO {book} (nid, mlid, bid) VALUES (%d, %d, %d)", $node->nid, $node->book['mlid'], $node->book['bid']);
+      db_insert('book')->values(array(
+        'nid' => $node->nid,
+        'mlid' => $node->book['mlid'],
+        'bid' => $node->book['bid'],
+      ))->execute();
     }
     else {
-      if ($node->book['bid'] != db_result(db_query("SELECT bid FROM {book} WHERE nid = %d", $node->nid))) {
+      if ($node->book['bid'] != db_query("SELECT bid FROM {book} WHERE nid = :nid", array(
+          ':nid' => $node->nid,
+        ))->fetchField()) {
         // Update the bid for this page and all children.
         book_update_bid($node->book);
       }
@@ -500,16 +512,12 @@ function _book_update_outline(&$node) {
  *   A fully loaded menu link that is part of the book hierarchy.
  */
 function book_update_bid($book_link) {
+  $query = db_select('menu_links');
+  $query->addField('menu_links', 'mlid');
   for ($i = 1; $i <= MENU_MAX_DEPTH && $book_link["p$i"]; $i++) {
-    $match[] = "p$i = %d";
-    $args[] = $book_link["p$i"];
-  }
-  $result = db_query("SELECT mlid FROM {menu_links} WHERE " . implode(' AND ', $match), $args);
-
-  $mlids = array();
-  while ($a = db_fetch_array($result)) {
-    $mlids[] = $a['mlid'];
+    $query->condition("p$i", $book_link["p$i"]);
   }
+  $mlids = $query->execute()->fetchCol();
 
   if ($mlids) {
     db_query("UPDATE {book} SET bid = %d WHERE mlid IN (" . implode(',', $mlids) . ")", $book_link['bid']);
@@ -677,7 +685,9 @@ function book_nodeapi(&$node, $op, $teas
   switch ($op) {
     case 'load':
       // Note - we cannot use book_link_load() because it will call node_load().
-      $info['book'] = db_fetch_array(db_query('SELECT * FROM {book} b INNER JOIN {menu_links} ml ON b.mlid = ml.mlid WHERE b.nid = %d', $node->nid));
+      $info['book'] = db_query('SELECT * FROM {book} b INNER JOIN {menu_links} ml ON b.mlid = ml.mlid WHERE b.nid = :nid', array(
+        ':nid' => $node->nid
+      ), array('fetch' => PDO::FETCH_ASSOC))->fetch();
 
       if ($info['book']) {
         $info['book']['href'] = $info['book']['link_path'];
@@ -732,15 +742,17 @@ function book_nodeapi(&$node, $op, $teas
       if (!empty($node->book['bid'])) {
         if ($node->nid == $node->book['bid']) {
           // Handle deletion of a top-level post.
-          $result = db_query("SELECT b.nid FROM {menu_links} ml INNER JOIN {book} b on b.mlid = ml.mlid WHERE ml.plid = %d", $node->book['mlid']);
-          while ($child = db_fetch_array($result)) {
+          $result = db_query("SELECT b.nid FROM {menu_links} ml INNER JOIN {book} b on b.mlid = ml.mlid WHERE ml.plid = :plid", array(
+            ':plid' => $node->book['mlid'],
+          ), array('fetch' => PDO::FETCH_ASSOC));
+          foreach ($result as $child) {
             $child_node = node_load($child['nid']);
             $child_node->book['bid'] = $child_node->nid;
             _book_update_outline($child_node);
           }
         }
         menu_link_delete($node->book['mlid']);
-        db_query('DELETE FROM {book} WHERE mlid = %d', $node->book['mlid']);
+        db_delete('book')->condition('mlid', $node->book['mlid'])->execute();
       }
       break;
 
@@ -1060,7 +1072,9 @@ function book_help($path, $arg) {
  * Do not call when loading a node, since this function may call node_load().
  */
 function book_link_load($mlid) {
-  if ($item = db_fetch_array(db_query("SELECT * FROM {menu_links} ml INNER JOIN {book} b ON b.mlid = ml.mlid LEFT JOIN {menu_router} m ON m.path = ml.router_path WHERE ml.mlid = %d", $mlid))) {
+  if ($item = db_query("SELECT * FROM {menu_links} ml INNER JOIN {book} b ON b.mlid = ml.mlid LEFT JOIN {menu_router} m ON m.path = ml.router_path WHERE ml.mlid = :mlid", array(
+      ':mlid' => $mlid,
+    ), array('fetch' => PDO::FETCH_ASSOC))->fetch()) {
     _menu_link_translate($item);
     return $item;
   }
Index: modules/book/book.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/book/book.pages.inc,v
retrieving revision 1.7
diff -u -p -r1.7 book.pages.inc
--- modules/book/book.pages.inc	15 May 2008 21:19:24 -0000	1.7
+++ modules/book/book.pages.inc	31 Aug 2008 11:23:13 -0000
@@ -210,7 +210,7 @@ function book_remove_form_submit($form, 
   if ($node->nid != $node->book['bid']) {
     // Only allowed when this is not a book (top-level page).
     menu_link_delete($node->book['mlid']);
-    db_query('DELETE FROM {book} WHERE nid = %d', $node->nid);
+    db_delete('book')->condition('nid', $node->nid)->execute();
     drupal_set_message(t('The post has been removed from the book.'));
   }
   $form_state['redirect'] = 'node/' . $node->nid;
