Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 21 |
| Query | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
90 | |
0.00% |
0 / 21 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| execute | |
0.00% |
0 / 1 |
42 | |
0.00% |
0 / 5 |
|||
| anonymous function | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 2 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\Core\Entity\KeyValueStore\Query\Query. | |
| */ | |
| namespace Drupal\Core\Entity\KeyValueStore\Query; | |
| use Drupal\Core\Entity\EntityTypeInterface; | |
| use Drupal\Core\Entity\Query\QueryBase; | |
| use Drupal\Core\KeyValueStore\KeyValueFactoryInterface; | |
| /** | |
| * Defines the entity query for entities stored in a key value backend. | |
| */ | |
| class Query extends QueryBase { | |
| /** | |
| * The key value factory. | |
| * | |
| * @var \Drupal\Core\KeyValueStore\KeyValueFactoryInterface | |
| */ | |
| protected $keyValueFactory; | |
| /** | |
| * Constructs a new Query. | |
| * | |
| * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type | |
| * The entity type. | |
| * @param string $conjunction | |
| * - AND: all of the conditions on the query need to match. | |
| * - OR: at least one of the conditions on the query need to match. | |
| * @param array $namespaces | |
| * List of potential namespaces of the classes belonging to this query. | |
| * @param \Drupal\Core\KeyValueStore\KeyValueFactoryInterface $key_value_factory | |
| * The key value factory. | |
| */ | |
| public function __construct(EntityTypeInterface $entity_type, $conjunction, array $namespaces, KeyValueFactoryInterface $key_value_factory) { | |
| parent::__construct($entity_type, $conjunction, $namespaces); | |
| $this->keyValueFactory = $key_value_factory; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function execute() { | |
| // Load the relevant records. | |
| $records = $this->keyValueFactory->get('entity_storage__' . $this->entityTypeId)->getAll(); | |
| // Apply conditions. | |
| $result = $this->condition->compile($records); | |
| // Apply sort settings. | |
| foreach ($this->sort as $sort) { | |
| $direction = $sort['direction'] == 'ASC' ? -1 : 1; | |
| $field = $sort['field']; | |
| uasort($result, function($a, $b) use ($field, $direction) { | |
| return ($a[$field] <= $b[$field]) ? $direction : -$direction; | |
| }); | |
| } | |
| // Let the pager do its work. | |
| $this->initializePager(); | |
| if ($this->range) { | |
| $result = array_slice($result, $this->range['start'], $this->range['length'], TRUE); | |
| } | |
| if ($this->count) { | |
| return count($result); | |
| } | |
| // Create the expected structure of entity_id => entity_id. | |
| $entity_ids = array_keys($result); | |
| return array_combine($entity_ids, $entity_ids); | |
| } | |
| } |