Version 1
[yaffs-website] / web / core / modules / node / src / Plugin / views / filter / UidRevision.php
diff --git a/web/core/modules/node/src/Plugin/views/filter/UidRevision.php b/web/core/modules/node/src/Plugin/views/filter/UidRevision.php
new file mode 100644 (file)
index 0000000..0968480
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+
+namespace Drupal\node\Plugin\views\filter;
+
+use Drupal\user\Plugin\views\filter\Name;
+
+/**
+ * Filter handler to check for revisions a certain user has created.
+ *
+ * @ingroup views_filter_handlers
+ *
+ * @ViewsFilter("node_uid_revision")
+ */
+class UidRevision extends Name {
+
+  public function query($group_by = FALSE) {
+    $this->ensureMyTable();
+
+    $placeholder = $this->placeholder() . '[]';
+
+    $args = array_values($this->value);
+
+    $this->query->addWhereExpression($this->options['group'], "$this->tableAlias.uid IN($placeholder) OR
+      ((SELECT COUNT(DISTINCT vid) FROM {node_revision} nr WHERE nr.revision_uid IN ($placeholder) AND nr.nid = $this->tableAlias.nid) > 0)", [$placeholder => $args],
+      $args);
+  }
+
+}