? 000-seven-form-css-sanity.patch
? 823428-url-entity.patch
? 920614-node-access-tests.patch
? 934790-theme-node.patch
? 963656-view-all-nodes.patch
? 965514-bad-test.patch
? ajax_second_call_939860_06.patch
? file_download_access6.patch
? test.patch
? sites/default/files
? sites/default/private
Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.1316
diff -u -p -r1.1316 node.module
--- modules/node/node.module	6 Nov 2010 23:24:33 -0000	1.1316
+++ modules/node/node.module	8 Nov 2010 22:35:43 -0000
@@ -3006,6 +3006,12 @@ function node_access_grants($op, $accoun
 
 /**
  * Determine whether the user has a global viewing grant for all nodes.
+ *
+ * By design, this function checks to see whether any module grants
+ * 'view' for node id 0. Node module provides this record if no node
+ * access modules are present. This function allows other modules to
+ * replicate this core behavior by providing their own conditional grant
+ * for nid 0.
  */
 function node_access_view_all_nodes() {
   $access = &drupal_static(__FUNCTION__);
@@ -3099,6 +3105,10 @@ function _node_query_node_access_alter($
   if (!count(module_implements('node_grants'))) {
     return;
   }
+  // If viewing nodes, make sure access rules should be enforced.
+  if ($op == 'view' && node_access_view_all_nodes()) {
+    return;
+  }
 
   // Prevent duplicate records.
   $query->distinct();
Index: modules/node/node.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.test,v
retrieving revision 1.98
diff -u -p -r1.98 node.test
--- modules/node/node.test	7 Oct 2010 17:31:39 -0000	1.98
+++ modules/node/node.test	8 Nov 2010 22:35:46 -0000
@@ -854,6 +854,7 @@ class NodeAccessRecordsUnitTest extends 
     // hook_node_access_records(), hook_node_grants_alter() and
     // hook_node_access_records_alter().
     parent::setUp('node_test');
+    node_access_rebuild();
   }
 
   /**
@@ -917,6 +918,24 @@ class NodeAccessRecordsUnitTest extends 
     $node6 = $this->drupalCreateNode(array('status' => 0, 'disable_node_access' => TRUE));
     $records = db_query('SELECT realm, gid FROM {node_access} WHERE nid = :nid', array(':nid' => $node6->nid))->fetchAll();
     $this->assertEqual(count($records), 0, t('Returned no records for unpublished node.'));
+
+    // Check that node_access_view_all_nodes() allows node access modules
+    // to override their own access rules on the 'view' operation.
+    drupal_static_reset('node_access_view_all_nodes');
+    $this->assertFalse(node_access_view_all_nodes(), t('Node access returned false for node_access_view_all_nodes().'));
+    $record = array(
+      'nid' => 0,
+      'gid' => 0,
+      'realm' => 'node_access_all',
+      'grant_view' => 1,
+      'grant_update' => 0,
+      'grant_delete' => 0,
+    );
+    drupal_write_record('node_access', $record);
+    variable_set('node_test_node_access_all', 1);
+    drupal_static_reset('node_access_view_all_nodes');
+    $this->assertTrue(node_access_view_all_nodes(), t('Node access returned true for node_access_view_all_nodes().'));
+    variable_set('node_test_node_access_all', 0);
   }
 }
 
Index: modules/node/tests/node_test.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/tests/node_test.module,v
retrieving revision 1.12
diff -u -p -r1.12 node_test.module
--- modules/node/tests/node_test.module	29 Sep 2010 14:08:54 -0000	1.12
+++ modules/node/tests/node_test.module	8 Nov 2010 22:35:46 -0000
@@ -38,6 +38,10 @@ function node_test_node_view($node, $vie
  * Implements hook_node_grants().
  */
 function node_test_node_grants($account, $op) {
+  // Test for node access override.
+  if ($op == 'view' && variable_get('node_test_node_access_all', 0)) {
+    return array('node_access_all' => array(0));
+  }
   // Give everyone full grants so we don't break other node tests.
   // Our node access tests asserts three realms of access.
   // See testGrantAlter().
@@ -101,6 +105,10 @@ function node_test_node_access_records_a
  * Implements hook_node_grants_alter().
  */
 function node_test_node_grants_alter(&$grants, $account, $op) {
+  // Ignore if testing for override functionality.
+  if (variable_get('node_test_node_access_all', 0)) {
+    return;
+  }
   // Return an empty array of grants to prove that we can alter by reference.
   $grants = array();
 }
