function ad_build_filter_query in Advertisement 6.2
Same name and namespace in other branches
- 5.2 ad.module \ad_build_filter_query()
- 5 ad.module \ad_build_filter_query()
- 6.3 ad.admin.inc \ad_build_filter_query()
- 6 ad.admin.inc \ad_build_filter_query()
- 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,
);
}