* @ingroup Search
*/
class SearchResultSet {
+
+ /**
+ * Types of interwiki results
+ */
+ /**
+ * Results that are displayed only together with existing main wiki results
+ * @var int
+ */
+ const SECONDARY_RESULTS = 0;
+ /**
+ * Results that can displayed even if no existing main wiki results exist
+ * @var int
+ */
+ const INLINE_RESULTS = 1;
+
protected $containedSyntax = false;
public function __construct( $containedSyntax = false ) {
}
/**
- * @return string Suggested query, null if none
+ * @return string|null Suggested query, null if none
*/
function getSuggestionQuery() {
return null;
*
* @return SearchResultSet
*/
- function getInterwikiResults() {
+ function getInterwikiResults( $type = self::SECONDARY_RESULTS ) {
return null;
}
*
* @return bool
*/
- function hasInterwikiResults() {
- return $this->getInterwikiResults() != null;
+ function hasInterwikiResults( $type = self::SECONDARY_RESULTS ) {
+ return false;
}
/**
return $this->containedSyntax;
}
}
-
-/**
- * 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( $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 )
- );
- }
-
- 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();
- }
- }
-}
-
-/**
- * A SearchResultSet wrapper for SearchEngine::getNearMatch
- */
-class SearchNearMatchResultSet extends SearchResultSet {
- private $fetched = false;
-
- /**
- * @param Title|null $match Title if matched, else null
- */
- public function __construct( $match ) {
- $this->result = $match;
- }
-
- public function numRows() {
- return $this->result ? 1 : 0;
- }
-
- public function next() {
- if ( $this->fetched || !$this->result ) {
- return false;
- }
- $this->fetched = true;
- return SearchResult::newFromTitle( $this->result );
- }
-}