function views_handler_filter_default in Views (for Drupal 7) 5
1 call to views_handler_filter_default()
- views_handler_filter_role_custom in modules/
views_user.inc
1 string reference to 'views_handler_filter_default'
File
- ./
views_query.inc, line 134
Code
function views_handler_filter_default($op, $filter, $filterinfo, &$query) {
$table = $filterinfo['table'];
$field = $filterinfo['field'];
if (is_array($filter['value']) && count($filter['value'])) {
if ($filter['operator'] == 'OR' || $filter['operator'] == 'NOR') {
$query
->ensure_table($table);
$where_args = array_merge(array(
$query->use_alias_prefix . $table,
$field,
), $filter['value']);
$placeholder = array_fill(0, count($filter['value']), '%s');
if ($filter['operator'] == 'OR') {
$query
->add_where("%s.%s IN ('" . implode("','", $placeholder) . "')", $where_args);
}
else {
$where_args[] = $where_args[0];
$where_args[] = $where_args[1];
$query
->add_where("(%s.%s NOT IN ('" . implode("','", $placeholder) . "') OR %s.%s IS NULL)", $where_args);
}
}
else {
$howmany = count($filter['value']);
$high_table = $query
->add_table($table, true, $howmany);
if (!$high_table) {
// couldn't add the table
return;
}
$table_num = $high_table - $howmany;
foreach ($filter['value'] as $item) {
$table_num++;
$tn = $query
->get_table_name($table, $table_num);
$query
->add_where("%s.%s = '%s'", $tn, $field, $item);
}
}
}
else {
$query
->ensure_table("{$table}");
$query
->add_where("%s.%s %s '%s'", $query->use_alias_prefix . $table, $field, $filter['operator'], $filter['value']);
}
}