public function LatestRevision::query in Workbench Moderation 8
Same name and namespace in other branches
- 8.2 src/Plugin/views/filter/LatestRevision.php \Drupal\workbench_moderation\Plugin\views\filter\LatestRevision::query()
Add this filter to the query.
Due to the nature of fapi, the value and the operator have an unintended level of indirection. You will find them in $this->operator and $this->value respectively.
Overrides FilterPluginBase::query
File
- src/
Plugin/ views/ filter/ LatestRevision.php, line 98
Class
- LatestRevision
- Filter to show only the latest revision of an entity.
Namespace
Drupal\workbench_moderation\Plugin\views\filterCode
public function query() {
// The table doesn't exist until a moderated node has been saved at least
// once. Just in case, disable this filter until then. Note that this means
// the view will still show all revisions, not just latest, but this is
// sufficiently edge-case-y that it's probably not worth the time to
// handle more robustly.
if (!$this->connection
->schema()
->tableExists('workbench_revision_tracker')) {
return;
}
$table = $this
->ensureMyTable();
/** @var \Drupal\views\Plugin\views\query\Sql $query */
$query = $this->query;
$definition = $this->entityTypeManager
->getDefinition($this
->getEntityType());
$keys = $definition
->getKeys();
$definition = [
'table' => 'workbench_revision_tracker',
'type' => 'INNER',
'field' => 'entity_id',
'left_table' => $table,
'left_field' => $keys['id'],
'extra' => [
[
'left_field' => $keys['langcode'],
'field' => 'langcode',
],
[
'left_field' => $keys['revision'],
'field' => 'revision_id',
],
[
'field' => 'entity_type',
'value' => $this
->getEntityType(),
],
],
];
$join = $this->joinHandler
->createInstance('standard', $definition);
$query
->ensureTable('workbench_revision_tracker', $this->relationship, $join);
}