<?php/**
* @file
* Contains \Drupal\node\Plugin\Type\selection\NodeSelection.
*/namespaceDrupal\node\Plugin\entity_reference\selection;
useDrupal\Component\Annotation\Plugin;
useDrupal\Core\Annotation\Translation;
useDrupal\Core\Database\Query\SelectInterface;
useDrupal\entity_reference\Plugin\entity_reference\selection\SelectionBase;
/**
* Provides specific access control for the node entity type.
*
* @Plugin(
* id = "node_default",
* module = "node",
* label = @Translation("Node selection"),
* entity_types = {"node"},
* group = "default",
* weight = 1
* )
*/class NodeSelectionextends SelectionBase {
/**
* Overrides SelectionBase::buildEntityQuery().
*/
public functionbuildEntityQuery($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;
}
}