Index: book_access.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/book_access/book_access.module,v
retrieving revision 1.15.2.4
diff -u -r1.15.2.4 book_access.module
--- book_access.module	21 Nov 2009 19:39:12 -0000	1.15.2.4
+++ book_access.module	22 Nov 2009 23:48:56 -0000
@@ -187,27 +187,21 @@
 function book_access_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
   global $user;
 
- 	$permitted_bids = array();
-  $roles = array_keys($user->roles);
-
   switch ($op) {
     case 'alter':
       if ($user->uid == 1 || user_access('administer nodes') ){
         break; //show Add Child Page link
       }
 
-      $results = db_query(
-        "SELECT nid FROM {node_access} WHERE realm = 'book_access' AND gid IN (" ,
-          db_placeholders($roles, 'int') . ") AND grant_update > 0",
+      $roles = array_keys($user->roles);
+      $grant_update = db_result(db_query(
+        "SELECT 1 FROM {node_access} WHERE realm = 'book_access' AND nid = %d AND gid IN (" . db_placeholders($roles, 'int') . ") AND grant_update > 0",
+        $node->book['bid'],
         $roles
-      );
-
-      while ($result = db_fetch_array($results)) {
-        $permitted_bids[] = $result['nid'];
-      }
+      ));
 
       $bool = (
-        in_array($node->book['bid'], $permitted_bids) &&
+        $grant_update &&
         (
           user_access('add content to books') ||
           user_access('administer book outlines')
@@ -373,7 +367,7 @@
         db_query("SELECT 1 FROM {book_access} WHERE nid = %d AND rid = %d")
       );
 
-      drupal_write_record('book_access', $row, $bool ? array('nid', 'rid') : NULL);
+      drupal_write_record('book_access', $row, $bool ? array('nid', 'rid') : array());
     }
   }
 

