X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fapi%2FApiQueryAllPages.php;h=315def049ba3422b0fbab7006f74af56f517daa9;hb=64b83bdb3afd0ee4f8fc1893a865409c198e601e;hp=7460bd537759fca4d84dec2ff766fbc5898d6901;hpb=41f1ce0d35b929d480ce87605a3234c187e44fd2;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiQueryAllPages.php b/includes/api/ApiQueryAllPages.php index 7460bd5377..315def049b 100644 --- a/includes/api/ApiQueryAllPages.php +++ b/includes/api/ApiQueryAllPages.php @@ -76,10 +76,13 @@ class ApiQueryAllPages extends ApiQueryGeneratorBase { $this->addWhere( "page_title $op= $cont_from" ); } - if ( $params['filterredir'] == 'redirects' ) { - $this->addWhereFld( 'page_is_redirect', 1 ); - } elseif ( $params['filterredir'] == 'nonredirects' ) { - $this->addWhereFld( 'page_is_redirect', 0 ); + $miserMode = $this->getConfig()->get( 'MiserMode' ); + if ( !$miserMode ) { + if ( $params['filterredir'] == 'redirects' ) { + $this->addWhereFld( 'page_is_redirect', 1 ); + } elseif ( $params['filterredir'] == 'nonredirects' ) { + $this->addWhereFld( 'page_is_redirect', 0 ); + } } $this->addWhereFld( 'page_namespace', $params['namespace'] ); @@ -108,6 +111,18 @@ class ApiQueryAllPages extends ApiQueryGeneratorBase { $selectFields = $resultPageSet->getPageTableFields(); } + $miserModeFilterRedirValue = null; + $miserModeFilterRedir = $miserMode && $params['filterredir'] !== 'all'; + if ( $miserModeFilterRedir ) { + $selectFields[] = 'page_is_redirect'; + + if ( $params['filterredir'] == 'redirects' ) { + $miserModeFilterRedirValue = 1; + } elseif ( $params['filterredir'] == 'nonredirects' ) { + $miserModeFilterRedirValue = 0; + } + } + $this->addFields( $selectFields ); $forceNameTitleIndex = true; if ( isset( $params['minsize'] ) ) { @@ -219,6 +234,11 @@ class ApiQueryAllPages extends ApiQueryGeneratorBase { break; } + if ( $miserModeFilterRedir && (int)$row->page_is_redirect !== $miserModeFilterRedirValue ) { + // Filter implemented in PHP due to being in Miser Mode + continue; + } + if ( is_null( $resultPageSet ) ) { $title = Title::makeTitle( $row->page_namespace, $row->page_title ); $vals = [ @@ -242,7 +262,7 @@ class ApiQueryAllPages extends ApiQueryGeneratorBase { } public function getAllowedParams() { - return [ + $ret = [ 'from' => null, 'continue' => [ ApiBase::PARAM_HELP_MSG => 'api-help-param-continue', @@ -314,6 +334,12 @@ class ApiQueryAllPages extends ApiQueryGeneratorBase { ApiBase::PARAM_DFLT => 'all' ], ]; + + if ( $this->getConfig()->get( 'MiserMode' ) ) { + $ret['filterredir'][ApiBase::PARAM_HELP_MSG_APPEND] = [ 'api-help-param-limited-in-miser-mode' ]; + } + + return $ret; } protected function getExamplesMessages() { @@ -329,6 +355,6 @@ class ApiQueryAllPages extends ApiQueryGeneratorBase { } public function getHelpUrls() { - return 'https://www.mediawiki.org/wiki/API:Allpages'; + return 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Allpages'; } }