public function NodeSelection::buildEntityQuery

Overrides SelectionBase::buildEntityQuery().

Overrides SelectionBase::buildEntityQuery

File

drupal/core/modules/node/lib/Drupal/node/Plugin/entity_reference/selection/NodeSelection.php, line 32
Contains \Drupal\node\Plugin\Type\selection\NodeSelection.

Class

NodeSelection
Provides specific access control for the node entity type.

Namespace

Drupal\node\Plugin\entity_reference\selection

Code

public function buildEntityQuery($match = NULL, $match_operator = 'CONTAINS') {
  $query = parent::buildEntityQuery($match, $match_operator);

  // Adding the 'node_access' tag is sadly insufficient for nodes: core
  // requires us to also know about the concept of 'published' and
  // 'unpublished'. We need to do that as long as there are no access control
  // modules in use on the site. As long as one access control module is there,
  // it is supposed to handle this check.
  if (!user_access('bypass node access') && !count(module_implements('node_grants'))) {
    $query
      ->condition('status', NODE_PUBLISHED);
  }
  return $query;
}