1 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

core/modules/node/views/views_handler_filter_history_user_timestamp.inc, line 46
Definition of views_handler_filter_history_user_timestamp.

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;
  }

  // Backdrop kills old history, so nodes that haven't been updated since
  // NODE_NEW_LIMIT are filtered out.
  $limit = REQUEST_TIME - NODE_NEW_LIMIT;

  $this->ensure_my_table();
  $field = "$this->table_alias.$this->real_field";
  $node = $this->query->ensure_table('node', $this->relationship);

  $clause = '';
  $clause2 = '';
  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_expression($this->options['group'], "($field IS NULL AND ($node.changed > (***CURRENT_TIME*** - $limit) $clause)) OR $field < $node.changed $clause2");
}