Index: adcache.inc
===================================================================
--- adcache.inc	(revision 868)
+++ adcache.inc	(working copy)
@@ -216,16 +216,16 @@
   _debug_echo("adserve_cache_id: type($type) id($id)");
   switch ($type) {
     case 'nids':
-      $result = db_query("SELECT aid FROM {ads} WHERE adstatus = 'active' AND aid IN(%s)", $id);
-      _debug_echo("adserve_cache_id: SELECT aid FROM {ads} WHERE adstatus = 'active' AND aid IN($id)");
+      db_query(db_rewrite_sql("SELECT n.nid FROM {node} n INNER JOIN {ads} a ON a.aid = n.nid WHERE adstatus = 'active' AND aid IN(%s)"), $id);
+      _debug_echo("adserve_cache_id: SELECT n.nid FROM {node} n INNER JOIN {ads} a ON a.aid = n.nid WHERE adstatus = 'active' AND aid IN($id)");
       break;
     case 'tids':
-      $result = db_query("SELECT a.aid FROM {ads} a INNER JOIN {term_node} n ON a.aid = n.nid WHERE a.adstatus = 'active' AND n.tid IN(%s)", $id);
-      _debug_echo("adserve_cache_id: SELECT a.aid FROM {ads} a INNER JOIN {term_node} n ON a.aid = n.nid WHERE a.adstatus = 'active' AND n.tid IN($id)");
+      $result = db_query(db_rewrite_sql("SELECT n.nid FROM {node} n INNER JOIN {ads} a ON a.aid = n.nid INNER JOIN {term_node} tn ON a.aid = tn.nid WHERE a.adstatus = 'active' AND tn.tid IN(%s)"), $id);
+      _debug_echo("adserve_cache_id: SELECT n.nid FROM {node} n INNER JOIN {ads} a ON a.aid = n.nid INNER JOIN {term_node} tn ON a.aid = tn.nid WHERE a.adstatus = 'active' AND tn.tid IN($id)");
       break;
     case 'default':
-      $result = db_query("SELECT a.aid FROM {ads} a LEFT JOIN {term_node} n ON a.aid = n.nid WHERE a.adstatus = 'active' AND n.tid IS NULL");
-      _debug_echo("adserve_cache_id: SELECT a.aid FROM {ads} a LEFT JOIN {term_node} n ON a.aid = n.nid WHERE a.adstatus = 'active' AND n.tid IS NULL");
+      $result = db_query(db_rewrite_sql("SELECT n.nid FROM {node} n INNER JOIN {ads} a ON a.aid = n.nid LEFT JOIN {term_node} tn ON a.aid = tn.nid WHERE a.adstatus = 'active' AND tn.tid IS NULL"));
+      _debug_echo("adserve_cache_id: SELECT n.nid FROM {node} n INNER JOIN {ads} a ON a.aid = n.nid LEFT JOIN {term_node} tn ON a.aid = tn.nid WHERE a.adstatus = 'active' AND tn.tid IS NULL");
       break;
     default:
       _debug_echo("adserve_cache_id: unsupported type '$type'.");
@@ -234,14 +234,7 @@
   $ids = array();
   if (isset($result)) {
     while ($ad = db_fetch_object($result)) {
-      // perform node access check
-      $node = node_load($ad->aid);
-      if (node_access('view', $node) !== FALSE) {
-        $ids[$ad->aid] = $ad->aid;
-      }
-      else {
-        _debug_echo("adserve_cache_id: Ad '$ad->aid' failed access check.");
-      }
+      $ids[$ad->aid] = $ad->nid;
     }
   }
   return $ids;
