dépôts
/
lhc
/
web
/
wiklou.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
resourceloader: Drop support for low Suhosin 'max_value_length' values
[lhc/web/wiklou.git]
/
includes
/
api
/
ApiQueryPrefixSearch.php
diff --git
a/includes/api/ApiQueryPrefixSearch.php
b/includes/api/ApiQueryPrefixSearch.php
index
2fbc518
..
e5f611f
100644
(file)
--- a/
includes/api/ApiQueryPrefixSearch.php
+++ b/
includes/api/ApiQueryPrefixSearch.php
@@
-51,7
+51,12
@@
class ApiQueryPrefixSearch extends ApiQueryGeneratorBase {
$offset = $params['offset'];
$searchEngine = $this->buildSearchEngine( $params );
$offset = $params['offset'];
$searchEngine = $this->buildSearchEngine( $params );
- $titles = $searchEngine->extractTitles( $searchEngine->completionSearchWithVariants( $search ) );
+ $suggestions = $searchEngine->completionSearchWithVariants( $search );
+ $titles = $searchEngine->extractTitles( $suggestions );
+
+ if ( $suggestions->hasMoreResults() ) {
+ $this->setContinueEnumParameter( 'offset', $offset + $limit );
+ }
if ( $resultPageSet ) {
$resultPageSet->setRedirectMergePolicy( function ( array $current, array $new ) {
if ( $resultPageSet ) {
$resultPageSet->setRedirectMergePolicy( function ( array $current, array $new ) {
@@
-60,10
+65,6
@@
class ApiQueryPrefixSearch extends ApiQueryGeneratorBase {
}
return $current;
} );
}
return $current;
} );
- if ( count( $titles ) > $limit ) {
- $this->setContinueEnumParameter( 'offset', $offset + $limit );
- array_pop( $titles );
- }
$resultPageSet->populateFromTitles( $titles );
foreach ( $titles as $index => $title ) {
$resultPageSet->setGeneratorData( $title, [ 'index' => $index + $offset + 1 ] );
$resultPageSet->populateFromTitles( $titles );
foreach ( $titles as $index => $title ) {
$resultPageSet->setGeneratorData( $title, [ 'index' => $index + $offset + 1 ] );
@@
-72,22
+73,19
@@
class ApiQueryPrefixSearch extends ApiQueryGeneratorBase {
$result = $this->getResult();
$count = 0;
foreach ( $titles as $title ) {
$result = $this->getResult();
$count = 0;
foreach ( $titles as $title ) {
- if ( ++$count > $limit ) {
- $this->setContinueEnumParameter( 'offset', $offset + $limit );
- break;
- }
$vals = [
$vals = [
- 'ns' =>
intval( $title->getNamespace()
),
+ 'ns' =>
(int)$title->getNamespace(
),
'title' => $title->getPrefixedText(),
];
if ( $title->isSpecialPage() ) {
$vals['special'] = true;
} else {
'title' => $title->getPrefixedText(),
];
if ( $title->isSpecialPage() ) {
$vals['special'] = true;
} else {
- $vals['pageid'] =
intval( $title->getArticleID()
);
+ $vals['pageid'] =
(int)$title->getArticleID(
);
}
$fit = $result->addValue( [ 'query', $this->getModuleName() ], null, $vals );
}
$fit = $result->addValue( [ 'query', $this->getModuleName() ], null, $vals );
+ ++$count;
if ( !$fit ) {
if ( !$fit ) {
- $this->setContinueEnumParameter( 'offset', $offset + $count
- 1
);
+ $this->setContinueEnumParameter( 'offset', $offset + $count );
break;
}
}
break;
}
}