function node_access_view_all_nodes

node_access_view_all_nodes($account = NULL)

Determines whether the user has a global viewing grant for all nodes.

Checks to see whether any module grants global 'view' access to a user account; global 'view' access is encoded in the {node_access} table as a grant with nid=0. If no node access modules are enabled, node.module defines such a global 'view' access grant.

This function is called when a node listing query is tagged with 'node_access'; when this function returns TRUE, no node access joins are added to the query.

Parameters

$account: The user object for the user whose access is being checked. If omitted, the current user is used.

Return value

TRUE if 'view' access to all nodes is granted, FALSE otherwise.

See also

hook_node_grants()

_node_query_node_access_alter()

Related topics

File

modules/node/node.module, line 3232
The core that allows content to be submitted to the site. Modules and scripts may programmatically submit nodes using the usual form API pattern.

Code

function node_access_view_all_nodes($account = NULL) {
  global $user;
  if (!$account) {
    $account = $user;
  }

  // Statically cache results in an array keyed by $account->uid.
  $access = &drupal_static(__FUNCTION__);
  if (isset($access[$account->uid])) {
    return $access[$account->uid];
  }

  // If no modules implement the node access system, access is always TRUE.
  if (!module_implements('node_grants')) {
    $access[$account->uid] = TRUE;
  }
  else {
    $query = db_select('node_access');
    $query->addExpression('COUNT(*)');
    $query
    ->condition('nid', 0)
      ->condition('grant_view', 1, '>=');

    $grants = db_or();
    foreach (node_access_grants('view', $account) as $realm => $gids) {
      foreach ($gids as $gid) {
        $grants->condition(db_and()
          ->condition('gid', $gid)
          ->condition('realm', $realm)
          );
      }
    }
    if (count($grants) > 0) {
      $query->condition($grants);
    }
    $access[$account->uid] = $query
    ->execute()
      ->fetchField();
  }

  return $access[$account->uid];
}

© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/modules!node!node.module/function/node_access_view_all_nodes/7.x