You are here

function adserve_cache_id in Advertisement 6.3

Same name and namespace in other branches
  1. 5.2 adcache.inc \adserve_cache_id()
  2. 6.2 adcache.inc \adserve_cache_id()
  3. 7 adcache.inc \adserve_cache_id()

Default function for retrieving list of ids.

File

./adcache.inc, line 215

Code

function adserve_cache_id($type, $id) {
  _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})");
      break;
    case 'tids':
      $result = db_query("SELECT a.aid FROM {ads} a INNER JOIN {node} n ON a.aid = n.nid INNER JOIN {term_node} tn ON n.vid = tn.vid WHERE a.adstatus = 'active' AND tn.tid IN(%s)", $id);
      _debug_echo("adserve_cache_id: SELECT a.aid FROM {ads} a INNER JOIN {node} n ON a.aid = n.nid INNER JOIN {term_node} tn ON n.vid = tn.vid WHERE a.adstatus = 'active' AND tn.tid IN({$id})");
      break;
    case 'default':
      $result = db_query("SELECT a.aid FROM {ads} a INNER JOIN {node} n ON a.aid = n.nid LEFT JOIN {term_node} tn ON n.vid = tn.vid WHERE a.adstatus = 'active' AND tn.tid IS NULL");
      _debug_echo("SELECT a.aid FROM {ads} a INNER JOIN {node} n ON a.aid = n.nid LEFT JOIN {term_node} tn ON n.vid = tn.vid WHERE a.adstatus = 'active' AND tn.tid IS NULL");
      break;
    default:
      _debug_echo("adserve_cache_id: unsupported type '{$type}'.");
  }
  $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.");
      }
    }
  }
  return $ids;
}