Version 1
[yaffs-website] / web / core / modules / search / src / Plugin / views / field / Score.php
diff --git a/web/core/modules/search/src/Plugin/views/field/Score.php b/web/core/modules/search/src/Plugin/views/field/Score.php
new file mode 100644 (file)
index 0000000..643fcc4
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+namespace Drupal\search\Plugin\views\field;
+
+use Drupal\views\Plugin\views\field\NumericField;
+use Drupal\views\ResultRow;
+
+/**
+ * Field handler for search score.
+ *
+ * @ingroup views_field_handlers
+ *
+ * @ViewsField("search_score")
+ */
+class Score extends NumericField {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function query() {
+    // Check to see if the search filter added 'score' to the table.
+    // Our filter stores it as $handler->search_score -- and we also
+    // need to check its relationship to make sure that we're using the same
+    // one or obviously this won't work.
+    foreach ($this->view->filter as $handler) {
+      if (isset($handler->search_score) && ($handler->relationship == $this->relationship)) {
+        $this->field_alias = $handler->search_score;
+        $this->tableAlias = $handler->tableAlias;
+        return;
+      }
+    }
+
+    // Hide this field if no search filter is in place.
+    $this->options['exclude'] = TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function render(ResultRow $values) {
+    // Only render if we exist.
+    if (isset($this->tableAlias)) {
+      return parent::render($values);
+    }
+  }
+
+}