]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - includes/search/SqlSearchResultSet.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / includes / search / SqlSearchResultSet.php
diff --git a/includes/search/SqlSearchResultSet.php b/includes/search/SqlSearchResultSet.php
new file mode 100644 (file)
index 0000000..53d09e8
--- /dev/null
@@ -0,0 +1,69 @@
+<?php
+
+use Wikimedia\Rdbms\ResultWrapper;
+
+/**
+ * This class is used for different SQL-based search engines shipped with MediaWiki
+ * @ingroup Search
+ */
+class SqlSearchResultSet extends SearchResultSet {
+       protected $resultSet;
+       protected $terms;
+       protected $totalHits;
+
+       function __construct( ResultWrapper $resultSet, $terms, $total = null ) {
+               $this->resultSet = $resultSet;
+               $this->terms = $terms;
+               $this->totalHits = $total;
+       }
+
+       function termMatches() {
+               return $this->terms;
+       }
+
+       function numRows() {
+               if ( $this->resultSet === false ) {
+                       return false;
+               }
+
+               return $this->resultSet->numRows();
+       }
+
+       function next() {
+               if ( $this->resultSet === false ) {
+                       return false;
+               }
+
+               $row = $this->resultSet->fetchObject();
+               if ( $row === false ) {
+                       return false;
+               }
+
+               return SearchResult::newFromTitle(
+                       Title::makeTitle( $row->page_namespace, $row->page_title ), $this
+               );
+       }
+
+       function rewind() {
+               if ( $this->resultSet ) {
+                       $this->resultSet->rewind();
+               }
+       }
+
+       function free() {
+               if ( $this->resultSet === false ) {
+                       return false;
+               }
+
+               $this->resultSet->free();
+       }
+
+       function getTotalHits() {
+               if ( !is_null( $this->totalHits ) ) {
+                       return $this->totalHits;
+               } else {
+                       // Special:Search expects a number here.
+                       return $this->numRows();
+               }
+       }
+}