function NodeSelection::buildEntityQuery

Same name in other branches
  1. 8.9.x core/modules/node/src/Plugin/EntityReferenceSelection/NodeSelection.php \Drupal\node\Plugin\EntityReferenceSelection\NodeSelection::buildEntityQuery()
  2. 10 core/modules/node/src/Plugin/EntityReferenceSelection/NodeSelection.php \Drupal\node\Plugin\EntityReferenceSelection\NodeSelection::buildEntityQuery()
  3. 11.x core/modules/node/src/Plugin/EntityReferenceSelection/NodeSelection.php \Drupal\node\Plugin\EntityReferenceSelection\NodeSelection::buildEntityQuery()

Overrides DefaultSelection::buildEntityQuery

File

core/modules/node/src/Plugin/EntityReferenceSelection/NodeSelection.php, line 24

Class

NodeSelection
Provides specific access control for the node entity type.

Namespace

Drupal\node\Plugin\EntityReferenceSelection

Code

protected 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 (!$this->currentUser
        ->hasPermission('bypass node access') && !$this->moduleHandler
        ->hasImplementations('node_grants')) {
        $query->condition('status', NodeInterface::PUBLISHED);
    }
    return $query;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.