function views_handler_filter_nid in Views PHP Filter 5
1 string reference to 'views_handler_filter_nid'
- viewsphpfilter_views_tables_alter in ./
viewsphpfilter.module - Implementation of hook_views_tables_alter() from Views API
File
- ./
viewsphpfilter.module, line 50
Code
function views_handler_filter_nid($op, $filter, $filterinfo, &$query) {
//as with filter_nid_process_form below -- the first if should NOT be necessary - 5.x only
if (is_array($filter['value'])) {
$filter['value'] = implode(',', $filter['value']);
}
if (isset($filter['value'])) {
if ($filter['options'] == 'php') {
$result = eval($filter['value']);
//can't use drupal_eval(), because it only returns strings -- what good is that?
if ($result === FALSE) {
watchdog('viewsphpfilter', "Parse error in PHP: {$filter['value']}; filter ignored", WATCHDOG_ERROR);
return;
}
}
else {
$result = $filter['value'];
}
if ($result == NULL) {
watchdog('viewsphpfilter', "PHP returned null; filter ignored", WATCHDOG_NOTICE);
return;
}
if (!is_array($result)) {
$result = explode(',', $result);
}
if (empty($result) || count($result) == 1 && $result[0] == NULL) {
if ($filter['operator'] == 'OR') {
$query
->add_where("node.nid IS NULL");
}
return;
}
foreach ($result as $i => $val) {
$result[$i] = trim($val, " \t\n\r\0\v,");
}
//error_log('result: ' . print_r($nids,TRUE));
$allints = true;
foreach ($result as $retval) {
if ((string) (int) $retval != $retval) {
$allints = false;
}
}
if ($allints) {
if ($filter['operator'] == 'OR') {
$query
->add_where("node.nid IN (%s)", implode(",", $result));
}
else {
// $filter['operator'] == 'NOR'
$query
->add_where("node.nid NOT IN (%s)", implode(",", $result));
}
}
else {
watchdog('viewsphpfilter', "Invalid return value in PHP: " . implode(",", $result) . "; filter ignored", WATCHDOG_ERROR);
}
}
}