Index: drupal/modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.783
diff -u -p -r1.783 node.module
--- drupal/modules/node/node.module	15 Feb 2007 11:40:18 -0000	1.783
+++ drupal/modules/node/node.module	24 Feb 2007 04:26:31 -0000
@@ -2648,6 +2648,18 @@ function node_access($op, $node) {
     return $access;
   }
 
+  // Now allow other modules to have their say on access to this node
+  $results = node_invoke_nodeapi($node, 'access', $op);
+  // The first module that actually returns a value takes precidence over
+  // all the others.
+  foreach ($results as $access) {
+    // node_invoke_nodeapi shouldn't even put NULL in it's results, but
+    // we should check because it's pretty important to get this right
+    if (!is_null($access)) {
+      return $access;
+    }
+  }
+
   // If the module did not override the access rights, use those set in the
   // node_access table.
   if ($op != 'create' && $node->nid && $node->status) {
