You are here

function ad_build_filter_query in Advertisement 6.3

Same name and namespace in other branches
  1. 5.2 ad.module \ad_build_filter_query()
  2. 5 ad.module \ad_build_filter_query()
  3. 6 ad.admin.inc \ad_build_filter_query()
  4. 6.2 ad.admin.inc \ad_build_filter_query()
  5. 7 ad.admin.inc \ad_build_filter_query()

Build query for ad administration filters based on session.

1 call to ad_build_filter_query()
ad_admin_ads in ./ad.admin.inc
Provide a filterable list of advertisements.

File

./ad.admin.inc, line 239
Advertisement admin pages and functions.

Code

function ad_build_filter_query() {
  $filters = ad_filters();

  // Build query
  $where = $args = array();
  $join = '';
  foreach ($_SESSION['ad_overview_filter'] as $index => $filter) {
    list($key, $value) = $filter;
    switch ($key) {
      case 'status':
        list($value, $key) = explode('-', $value, 2);
        $op = $key == 1 ? '=' : '!=';
        $where[] = "a.adstatus {$op} '%s'";
        break;
      case 'group':
        $table = "tn{$index}";
        $where[] = "{$table}.tid = %d";
        $join .= "INNER JOIN {term_node} {$table} ON n.nid = {$table}.nid ";
        break;
      case 'type':
        $where[] = "a.adtype = '%s'";
      default:
        $return = module_invoke_all('adapi', 'admin_filter_query', $filter);
        foreach ($return as $module => $funcs) {
          if (isset($funcs['where'])) {
            $where[] = $funcs['where'];
          }
          if (isset($funcs['join'])) {
            $join .= $funcs['join'];
          }
          if (isset($funcs['value'])) {
            $value = $funcs['value'];
          }
        }
        break;
    }
    $args[] = $value;
  }
  $where = count($where) ? 'WHERE ' . implode(' AND ', $where) : '';
  return array(
    'where' => $where,
    'join' => $join,
    'args' => $args,
  );
}