* @ingroup Search
*/
class SqlSearchResultSet extends SearchResultSet {
+ /** @var ResultWrapper Result object from database */
protected $resultSet;
+ /** @var string Requested search query */
protected $terms;
+ /** @var int|null Total number of hits for $terms */
protected $totalHits;
function __construct( ResultWrapper $resultSet, $terms, $total = null ) {
return $this->resultSet->numRows();
}
- function next() {
+ public function extractResults() {
if ( $this->resultSet === false ) {
- return false;
- }
-
- $row = $this->resultSet->fetchObject();
- if ( $row === false ) {
- return false;
+ return [];
}
- return SearchResult::newFromTitle(
- Title::makeTitle( $row->page_namespace, $row->page_title ), $this
- );
- }
-
- function rewind() {
- if ( $this->resultSet ) {
+ if ( $this->results === null ) {
+ $this->results = [];
$this->resultSet->rewind();
+ while ( ( $row = $this->resultSet->fetchObject() ) !== false ) {
+ $this->results[] = SearchResult::newFromTitle(
+ Title::makeTitle( $row->page_namespace, $row->page_title ), $this
+ );
+ }
}
+ return $this->results;
}
function free() {