From: Max Semenik Date: Sat, 9 Jan 2010 14:30:55 +0000 (+0000) Subject: Severely refactored the SearchResultSet descendants system, consolidating most od... X-Git-Tag: 1.31.0-rc.0~38346 X-Git-Url: http://git.cyclocoop.org/%24image?a=commitdiff_plain;h=4b0299a765776c31a097e3377cd8510ddbb73a69;p=lhc%2Fweb%2Fwiklou.git Severely refactored the SearchResultSet descendants system, consolidating most od the code into one class. Ping r58322. --- diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index 547ad7d5c9..c282a789dd 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -466,9 +466,7 @@ $wgAutoloadLocalClasses = array( 'MWTidy' => 'includes/parser/Tidy.php', # includes/search - 'IBM_DB2SearchResultSet' => 'includes/search/SearchIBM_DB2.php', 'MySQLSearchResultSet' => 'includes/search/SearchMySQL.php', - 'OracleSearchResultSet' => 'includes/search/SearchOracle.php', 'PostgresSearchResult' => 'includes/search/SearchPostgres.php', 'PostgresSearchResultSet' => 'includes/search/SearchPostgres.php', 'SearchEngineDummy' => 'includes/search/SearchEngine.php', @@ -486,6 +484,7 @@ $wgAutoloadLocalClasses = array( 'SearchUpdate' => 'includes/search/SearchUpdate.php', 'SearchUpdateMyISAM' => 'includes/search/SearchUpdate.php', 'SqliteSearchResultSet' => 'includes/search/SearchSqlite.php', + 'SqlSearchResultSet' => 'includes/search/SearchEngine.php', # includes/specials 'SpecialAllmessages' => 'includes/specials/SpecialAllmessages.php', diff --git a/includes/search/SearchEngine.php b/includes/search/SearchEngine.php index 952e9b22ec..44e7733967 100644 --- a/includes/search/SearchEngine.php +++ b/includes/search/SearchEngine.php @@ -512,6 +512,37 @@ class SearchResultSet { } } +/** + * This class is used for different SQL-based search engines shipped with MediaWiki + */ +class SqlSearchResultSet 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() { + if ($this->mResultSet === false ) + return false; + + $row = $this->mResultSet->fetchObject(); + if ($row === false) + return false; + return new SearchResult($row); + } + + function free() { + $this->mResultSet->free(); + } +} /** * @ingroup Search diff --git a/includes/search/SearchIBM_DB2.php b/includes/search/SearchIBM_DB2.php index b94a478236..7f8dfece34 100644 --- a/includes/search/SearchIBM_DB2.php +++ b/includes/search/SearchIBM_DB2.php @@ -35,22 +35,22 @@ class SearchIBM_DB2 extends SearchEngine { * Perform a full text search query and return a result set. * * @param $term String: raw search term - * @return IBM_DB2SearchResultSet + * @return SqlSearchResultSet */ function searchText( $term ) { $resultSet = $this->db->resultObject($this->db->query($this->getQuery($this->filter($term), true))); - return new IBM_DB2SearchResultSet($resultSet, $this->searchTerms); + return new SqlSearchResultSet($resultSet, $this->searchTerms); } /** * Perform a title-only search query and return a result set. * * @param $term String: taw search term - * @return IBM_DB2SearchResultSet + * @return SqlSearchResultSet */ function searchTitle($term) { $resultSet = $this->db->resultObject($this->db->query($this->getQuery($this->filter($term), false))); - return new MySQLSearchResultSet($resultSet, $this->searchTerms); + return new SqlSearchResultSet($resultSet, $this->searchTerms); } @@ -222,28 +222,3 @@ class SearchIBM_DB2 extends SearchEngine { array()); } } - -/** - * @ingroup Search - */ -class IBM_DB2SearchResultSet 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); - } -} diff --git a/includes/search/SearchMySQL.php b/includes/search/SearchMySQL.php index a0ec92711a..5eaf972cdb 100644 --- a/includes/search/SearchMySQL.php +++ b/includes/search/SearchMySQL.php @@ -318,35 +318,12 @@ class SearchMySQL extends SearchEngine { /** * @ingroup Search */ -class MySQLSearchResultSet extends SearchResultSet { +class MySQLSearchResultSet extends SqlSearchResultSet { function MySQLSearchResultSet( $resultSet, $terms, $totalHits=null ) { - $this->mResultSet = $resultSet; - $this->mTerms = $terms; + parent::__construct( $resultSet, $terms ); $this->mTotalHits = $totalHits; } - function termMatches() { - return $this->mTerms; - } - - function numRows() { - return $this->mResultSet->numRows(); - } - - function next() { - $row = $this->mResultSet->fetchObject(); - if( $row === false ) { - return false; - } else { - return new SearchResult( $row ); - } - } - - function free() { - $this->mResultSet->free(); - } - - function getTotalHits() { return $this->mTotalHits; } diff --git a/includes/search/SearchOracle.php b/includes/search/SearchOracle.php index a7b6dbfb46..0c6cf379b8 100644 --- a/includes/search/SearchOracle.php +++ b/includes/search/SearchOracle.php @@ -63,25 +63,25 @@ class SearchOracle extends SearchEngine { * Perform a full text search query and return a result set. * * @param $term String: raw search term - * @return OracleSearchResultSet + * @return SqlSearchResultSet */ function searchText( $term ) { if ($term == '') - return new OracleSearchResultSet(false, ''); + return new SqlSearchResultSet(false, ''); $resultSet = $this->db->resultObject($this->db->query($this->getQuery($this->filter($term), true))); - return new OracleSearchResultSet($resultSet, $this->searchTerms); + return new SqlSearchResultSet($resultSet, $this->searchTerms); } /** * Perform a title-only search query and return a result set. * * @param $term String: raw search term - * @return ORacleSearchResultSet + * @return SqlSearchResultSet */ function searchTitle($term) { if ($term == '') - return new OracleSearchResultSet(false, ''); + return new SqlSearchResultSet(false, ''); $resultSet = $this->db->resultObject($this->db->query($this->getQuery($this->filter($term), false))); return new MySQLSearchResultSet($resultSet, $this->searchTerms); @@ -267,35 +267,3 @@ class SearchOracle extends SearchEngine { return "\"" . parent::legalSearchChars(); } } - -/** - * @ingroup Search - */ -class OracleSearchResultSet extends SearchResultSet { - - function __construct($resultSet, $terms) { - $this->mResultSet = $resultSet; - $this->mTerms = $terms; - } - - function termMatches() { - return $this->mTerms; - } - - function numRows() { - if ($this->mResultSet === false ) - return 0; - else - return $this->mResultSet->numRows(); - } - - function next() { - if ($this->mResultSet === false ) - return false; - - $row = $this->mResultSet->fetchObject(); - if ($row === false) - return false; - return new SearchResult($row); - } -} diff --git a/includes/search/SearchPostgres.php b/includes/search/SearchPostgres.php index 81e9e65ca5..0006fa82af 100644 --- a/includes/search/SearchPostgres.php +++ b/includes/search/SearchPostgres.php @@ -230,18 +230,9 @@ class PostgresSearchResult extends SearchResult { /** * @ingroup Search */ -class PostgresSearchResultSet extends SearchResultSet { +class PostgresSearchResultSet extends SqlSearchResultSet { function __construct( $resultSet, $terms ) { - $this->mResultSet = $resultSet; - $this->mTerms = $terms; - } - - function termMatches() { - return $this->mTerms; - } - - function numRows() { - return $this->mResultSet->numRows(); + parent::__construct( $resultSet, $terms ); } function next() { diff --git a/includes/search/SearchSqlite.php b/includes/search/SearchSqlite.php index a3e83d9e7b..404b4a4dae 100644 --- a/includes/search/SearchSqlite.php +++ b/includes/search/SearchSqlite.php @@ -350,35 +350,12 @@ class SearchSqlite extends SearchEngine { /** * @ingroup Search */ -class SqliteSearchResultSet extends SearchResultSet { +class SqliteSearchResultSet extends SqlSearchResultSet { function SqliteSearchResultSet( $resultSet, $terms, $totalHits=null ) { - $this->mResultSet = $resultSet; - $this->mTerms = $terms; + parent::__construct( $resultSet, $terms ); $this->mTotalHits = $totalHits; } - function termMatches() { - return $this->mTerms; - } - - function numRows() { - return $this->mResultSet->numRows(); - } - - function next() { - $row = $this->mResultSet->fetchObject(); - if( $row === false ) { - return false; - } else { - return new SearchResult( $row ); - } - } - - function free() { - $this->mResultSet->free(); - } - - function getTotalHits() { return $this->mTotalHits; }