API: Properly handle limit and continuation for generator=prefixsearch
authorBrad Jorsch <bjorsch@wikimedia.org>
Wed, 4 Mar 2015 14:30:14 +0000 (09:30 -0500)
committerBrad Jorsch <bjorsch@wikimedia.org>
Wed, 4 Mar 2015 14:30:14 +0000 (09:30 -0500)
The search engine is queried for limit+1 titles, so we know whether to
output a continuation value. Actually do this for generator mode,
instead of just returning the limit+1 titles.

Bug: T91503
Change-Id: Ib80c6d3fa9e8b52ae1f5c58fbe74c8e909329e59

includes/api/ApiQueryPrefixSearch.php

index 069e30b..7a31c48 100644 (file)
@@ -48,6 +48,10 @@ class ApiQueryPrefixSearch extends ApiQueryGeneratorBase {
                $searcher = new TitlePrefixSearch;
                $titles = $searcher->searchWithVariants( $search, $limit + 1, $namespaces, $offset );
                if ( $resultPageSet ) {
+                       if ( count( $titles ) > $limit ) {
+                               $this->setContinueEnumParameter( 'offset', $offset + $params['limit'] );
+                               array_pop( $titles );
+                       }
                        $resultPageSet->populateFromTitles( $titles );
                        foreach ( $titles as $index => $title ) {
                                $resultPageSet->setGeneratorData( $title, array( 'index' => $index + $offset + 1 ) );