diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2014-12-27 15:41:37 +0100 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2014-12-31 11:43:28 +0100 |
commit | c1f9b1f7b1b77776192048005dcc66dcf3df2bfb (patch) | |
tree | 2b38796e738dd74cb42ecd9bfd151803108386bc /includes/search/SearchMssql.php | |
parent | b88ab0086858470dd1f644e64cb4e4f62bb2be9b (diff) |
Update to MediaWiki 1.24.1
Diffstat (limited to 'includes/search/SearchMssql.php')
-rw-r--r-- | includes/search/SearchMssql.php | 110 |
1 files changed, 32 insertions, 78 deletions
diff --git a/includes/search/SearchMssql.php b/includes/search/SearchMssql.php index cbc1a7a7..0d7970de 100644 --- a/includes/search/SearchMssql.php +++ b/includes/search/SearchMssql.php @@ -25,58 +25,35 @@ * Search engine hook base class for Mssql (ConText). * @ingroup Search */ -class SearchMssql extends SearchEngine { - - /** - * Creates an instance of this class - * @param $db DatabaseMssql: database object - */ - function __construct( $db ) { - parent::__construct( $db ); - } - +class SearchMssql extends SearchDatabase { /** * Perform a full text search query and return a result set. * - * @param string $term raw search term - * @return MssqlSearchResultSet + * @param string $term Raw search term + * @return SqlSearchResultSet * @access public */ function searchText( $term ) { - $resultSet = $this->db->resultObject( $this->db->query( $this->getQuery( $this->filter( $term ), true ) ) ); - return new MssqlSearchResultSet( $resultSet, $this->searchTerms ); + $resultSet = $this->db->query( $this->getQuery( $this->filter( $term ), true ) ); + return new SqlSearchResultSet( $resultSet, $this->searchTerms ); } /** * Perform a title-only search query and return a result set. * - * @param string $term raw search term - * @return MssqlSearchResultSet + * @param string $term Raw search term + * @return SqlSearchResultSet * @access public */ function searchTitle( $term ) { - $resultSet = $this->db->resultObject( $this->db->query( $this->getQuery( $this->filter( $term ), false ) ) ); - return new MssqlSearchResultSet( $resultSet, $this->searchTerms ); - } - - /** - * Return a partial WHERE clause to exclude redirects, if so set - * - * @return String - * @private - */ - function queryRedirect() { - if ( $this->showRedirects ) { - return ''; - } else { - return 'AND page_is_redirect=0'; - } + $resultSet = $this->db->query( $this->getQuery( $this->filter( $term ), false ) ); + return new SqlSearchResultSet( $resultSet, $this->searchTerms ); } /** * Return a partial WHERE clause to limit the search to the given namespaces * - * @return String + * @return string * @private */ function queryNamespaces() { @@ -90,9 +67,9 @@ class SearchMssql extends SearchEngine { /** * Return a LIMIT clause to limit results on the query. * - * @param $sql string + * @param string $sql * - * @return String + * @return string */ function queryLimit( $sql ) { return $this->db->limitResult( $sql, $this->limit, $this->offset ); @@ -102,7 +79,9 @@ class SearchMssql extends SearchEngine { * Does not do anything for generic search engine * subclasses may define this though * - * @return String + * @param string $filteredTerm + * @param bool $fulltext + * @return string */ function queryRanking( $filteredTerm, $fulltext ) { return ' ORDER BY ftindex.[RANK] DESC'; // return ' ORDER BY score(1)'; @@ -112,13 +91,12 @@ class SearchMssql extends SearchEngine { * Construct the full SQL query to do the search. * The guts shoulds be constructed in queryMain() * - * @param $filteredTerm String - * @param $fulltext Boolean - * @return String + * @param string $filteredTerm + * @param bool $fulltext + * @return string */ function getQuery( $filteredTerm, $fulltext ) { return $this->queryLimit( $this->queryMain( $filteredTerm, $fulltext ) . ' ' . - $this->queryRedirect() . ' ' . $this->queryNamespaces() . ' ' . $this->queryRanking( $filteredTerm, $fulltext ) . ' ' ); } @@ -126,7 +104,7 @@ class SearchMssql extends SearchEngine { /** * Picks which field to index on, depending on what type of query. * - * @param $fulltext Boolean + * @param bool $fulltext * @return string */ function getIndexField( $fulltext ) { @@ -136,9 +114,9 @@ class SearchMssql extends SearchEngine { /** * Get the base part of the search query. * - * @param $filteredTerm String - * @param $fulltext Boolean - * @return String + * @param string $filteredTerm + * @param bool $fulltext + * @return string * @private */ function queryMain( $filteredTerm, $fulltext ) { @@ -152,11 +130,13 @@ class SearchMssql extends SearchEngine { } /** @todo document + * @param string $filteredText + * @param bool $fulltext * @return string */ function parseQuery( $filteredText, $fulltext ) { global $wgContLang; - $lc = SearchEngine::legalSearchChars(); + $lc = $this->legalSearchChars(); $this->searchTerms = array(); # @todo FIXME: This doesn't handle parenthetical expressions. @@ -180,18 +160,18 @@ class SearchMssql extends SearchEngine { } } - $searchon = $this->db->strencode( join( ',', $q ) ); + $searchon = $this->db->addQuotes( join( ',', $q ) ); $field = $this->getIndexField( $fulltext ); - return "$field, '$searchon'"; + return "$field, $searchon"; } /** * Create or update the search index record for the given page. * Title and text should be pre-processed. * - * @param $id Integer - * @param $title String - * @param $text String + * @param int $id + * @param string $title + * @param string $text * @return bool|ResultWrapper */ function update( $id, $title, $text ) { @@ -213,8 +193,8 @@ class SearchMssql extends SearchEngine { * Update a search index record's title only. * Title should be pre-processed. * - * @param $id Integer - * @param $title String + * @param int $id + * @param string $title * @return bool|ResultWrapper */ function updateTitle( $id, $title ) { @@ -228,29 +208,3 @@ class SearchMssql extends SearchEngine { return $this->db->query( $sql, 'SearchMssql::updateTitle' ); } } - -/** - * @ingroup Search - */ -class MssqlSearchResultSet extends SearchResultSet { - function __construct( $resultSet, $terms ) { - $this->mResultSet = $resultSet; - $this->mTerms = $terms; - } - - function termMatches() { - return $this->mTerms; - } - - function numRows() { - return $this->mResultSet->numRows(); - } - - function next() { - $row = $this->mResultSet->fetchObject(); - if ( $row === false ) { - return false; - } - return new SearchResult( $row ); - } -} |