You are here

function views_handler_filter_node_access_level::query in Views Node Access Level 7

See _node_access_where_sql() for a non-views query based implementation.

Overrides views_handler_filter::query

File

views/views_handler_filter_node_access_level.inc, line 40
Definition of views_handler_filter_node_access.

Class

views_handler_filter_node_access_level
Filter by node_access records.

Code

function query() {
  if (!user_access('administer nodes') && module_implements('node_grants')) {
    $access = !empty($this->value) ? $this->value : 'view';
    $table = $this
      ->ensure_my_table();
    $grants = db_or();
    foreach (node_access_grants($access) as $realm => $gids) {
      foreach ($gids as $gid) {
        $grants
          ->condition(db_and()
          ->condition($table . '.gid', $gid)
          ->condition($table . '.realm', $realm));
      }
    }
    $this->query
      ->add_where('AND', $grants);
    $this->query
      ->add_where('AND', $table . '.grant_' . $access, 1, '>=');
  }
}