Index: contrib/apachesolr_nodeaccess/apachesolr_nodeaccess.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/apachesolr/contrib/apachesolr_nodeaccess/apachesolr_nodeaccess.module,v
retrieving revision 1.1.2.11
diff -u -p -r1.1.2.11 apachesolr_nodeaccess.module
--- contrib/apachesolr_nodeaccess/apachesolr_nodeaccess.module	5 Jun 2009 18:05:06 -0000	1.1.2.11
+++ contrib/apachesolr_nodeaccess/apachesolr_nodeaccess.module	16 Dec 2009 16:08:32 -0000
@@ -5,76 +5,38 @@
  * Implementation of apachesolr_update_index
  */
 function apachesolr_nodeaccess_apachesolr_update_index(&$document, $node) {
-  static $account;
-
-  if (!isset($account)) {
-    // Load the anonymous user.
-    $account = drupal_anonymous_user();
-  }
-
-  if (!node_access('view', $node, $account)) {
-    // Get node access grants.
-    $result = db_query('SELECT * FROM {node_access} WHERE (nid = 0 OR nid = %d) AND grant_view = 1', $node->nid);
-    while ($grant = db_fetch_object($result)) {
-      $key = 'nodeaccess_' . apachesolr_site_hash() . '_' . $grant->realm;
-      $document->setMultiValue($key, $grant->gid);
-    }
-  }
-  else {
-    // Add the generic view grant if we are not using
-    // node access or the node is viewable by anonymous users.
-    $document->setMultiValue('nodeaccess_all', 0);
-  }
-}
-
-/**
- * Creates a Solr query for a given user
- *
- * @param $account an account to get grants for and build a solr query
- */
-function _apachesolr_nodeaccess_build_subquery($account) {
-  if (!user_access('access content', $account)) {
-    throw new Exception('No access');
-  }
-  $node_access_query = apachesolr_drupal_query();
-  if (empty($node_access_query)) {
-    throw new Exception('No query object in apachesolr_nodeaccess');
-  }
-  if (user_access('administer nodes', $account)) {
-    // Access all content from the current site, or public content.
-    $node_access_query->add_filter('nodeaccess_all', 0);
-    $node_access_query->add_filter('hash', apachesolr_site_hash());
-  }
-  else {
-    // Get node access grants.
-    $grants = node_access_grants('view', $account);
-    foreach ($grants as $realm => $gids) {
-      foreach ($gids as $gid) {
-        $node_access_query->add_filter('nodeaccess_' . apachesolr_site_hash() . '_' . $realm, $gid);
-      }
-    }
-    $node_access_query->add_filter('nodeaccess_all', 0);
+  // Get node access grants.
+  $result = db_query('SELECT * FROM {node_access} WHERE (nid = 0 OR nid = %d) AND grant_view = 1', $node->nid);
+  while ($grant = db_fetch_object($result)) {
+    $key = 'nodeaccess_' . apachesolr_site_hash() . '_' . $grant->realm;
+    $document->setMultiValue($key, $grant->gid);
   }
-  return $node_access_query;
 }
 
 /**
  * Implementation of hook_apachesolr_modify_query().
  */
 function apachesolr_nodeaccess_apachesolr_modify_query(&$query, &$params) {
-  global $user;
-  try {
-    $subquery = _apachesolr_nodeaccess_build_subquery($user);
+  if (user_access('administer nodes')) {
+    return;
   }
-  catch (Exception $e) {
+
+  // If the user can't access content then we destroy the query.
+  if (!user_access('access content')) {
     $query = NULL;
-    watchdog("apachesolr_nodeaccess", 'User %name (UID:!uid) cannot search: @message', array('%name' => $user->name, '!uid' => $user->uid, '@message' => $e->getMessage()));
     return;
   }
-
-  if (!empty($subquery)) {
-    $query->add_subquery($subquery, 'OR');
+ 
+  $subquery = apachesolr_drupal_query();
+  $hash = apachesolr_site_hash();
+  // Get node access grants.
+  $grants = node_access_grants('view');
+  foreach ($grants as $realm => $gids) {
+    foreach ($gids as $gid) {
+      $subquery->add_filter('nodeaccess_' . $hash . '_' . $realm, $gid);
+    }
   }
+  $query->add_subquery($subquery);
 }
 
 /**
