function views_handler_filter_history_user_timestamp::query in Views (for Drupal 7) 6.3
Same name and namespace in other branches
- 6.2 modules/node/views_handler_filter_history_user_timestamp.inc \views_handler_filter_history_user_timestamp::query()
- 7.3 modules/node/views_handler_filter_history_user_timestamp.inc \views_handler_filter_history_user_timestamp::query()
Add this filter to the query.
Due to the nature of fapi, the value and the operator have an unintended level of indirection. You will find them in $this->operator and $this->value respectively.
Overrides views_handler_filter::query
File
- modules/
node/ views_handler_filter_history_user_timestamp.inc, line 34
Class
- views_handler_filter_history_user_timestamp
- Filter for new content
Code
function query() {
global $user;
// This can only work if we're logged in.
if (!$user || !$user->uid) {
return;
}
// Don't filter if we're exposed and the checkbox isn't selected.
if (!empty($this->options['exposed']) && empty($this->value)) {
return;
}
// Hey, Drupal kills old history, so nodes that haven't been updated
// since NODE_NEW_LIMIT are bzzzzzzzt outta here!
$limit = time() - NODE_NEW_LIMIT;
$this
->ensure_my_table();
$field = "{$this->table_alias}.{$this->real_field}";
$node = $this->query
->ensure_table('node', $this->relationship);
if (module_exists('comment')) {
$ncs = $this->query
->ensure_table('node_comment_statistics', $this->relationship);
$clause = "OR {$ncs}.last_comment_timestamp > (***CURRENT_TIME*** - {$limit})";
$clause2 = "OR {$field} < {$ncs}.last_comment_timestamp";
}
// NULL means a history record doesn't exist. That's clearly new content.
// Unless it's very very old content. Everything in the query is already
// type safe cause none of it is coming from outside here.
$this->query
->add_where($this->options['group'], "({$field} IS NULL AND ({$node}.changed > (***CURRENT_TIME*** - {$limit}) {$clause})) OR {$field} < {$node}.changed {$clause2}");
}