Merge "api: Replace deprecated ApiPageSet::getGoodPages in action=query"

This commit is contained in:
jenkins-bot 2023-06-26 20:52:31 +00:00 committed by Gerrit Code Review
commit 3ae994553e
2 changed files with 29 additions and 8 deletions

View file

@ -127,6 +127,8 @@ class ApiMain extends ApiBase {
'services' => [
'ObjectFactory',
'WikiExporterFactory',
'TitleFormatter',
'TitleFactory',
]
],
'expandtemplates' => [

View file

@ -23,6 +23,7 @@
use MediaWiki\Export\WikiExporterFactory;
use MediaWiki\MainConfigNames;
use MediaWiki\Title\Title;
use MediaWiki\Title\TitleFactory;
use Wikimedia\ObjectFactory\ObjectFactory;
use Wikimedia\ParamValidator\ParamValidator;
@ -557,17 +558,27 @@ class ApiQuery extends ApiBase {
/** @var WikiExporterFactory */
private $wikiExporterFactory;
/** @var TitleFormatter */
private $titleFormatter;
/** @var TitleFactory */
private $titleFactory;
/**
* @param ApiMain $main
* @param string $action
* @param ObjectFactory $objectFactory
* @param WikiExporterFactory $wikiExporterFactory
* @param TitleFormatter $titleFormatter
* @param TitleFactory $titleFactory
*/
public function __construct(
ApiMain $main,
$action,
ObjectFactory $objectFactory,
WikiExporterFactory $wikiExporterFactory
WikiExporterFactory $wikiExporterFactory,
TitleFormatter $titleFormatter,
TitleFactory $titleFactory
) {
parent::__construct( $main, $action );
@ -590,6 +601,8 @@ class ApiQuery extends ApiBase {
// Create PageSet that will process titles/pageids/revids/generator
$this->mPageSet = new ApiPageSet( $this );
$this->wikiExporterFactory = $wikiExporterFactory;
$this->titleFormatter = $titleFormatter;
$this->titleFactory = $titleFactory;
}
/**
@ -779,13 +792,16 @@ class ApiQuery extends ApiBase {
}
// Page elements
// Cannot use ApiPageSet::getInvalidTitlesAndRevisions, it does not set $fakeId
$pages = [];
// Report any missing titles
foreach ( $pageSet->getMissingTitles() as $fakeId => $title ) {
foreach ( $pageSet->getMissingPages() as $fakeId => $page ) {
$vals = [];
ApiQueryBase::addTitleInfo( $vals, $title );
$vals['ns'] = $page->getNamespace();
$vals['title'] = $this->titleFormatter->getPrefixedText( $page );
$vals['missing'] = true;
$title = $this->titleFactory->newFromPageIdentity( $page );
if ( $title->isKnown() ) {
$vals['known'] = true;
}
@ -803,11 +819,13 @@ class ApiQuery extends ApiBase {
];
}
// Report special pages
/** @var Title $title */
foreach ( $pageSet->getSpecialTitles() as $fakeId => $title ) {
/** @var \MediaWiki\Page\PageReference $page */
foreach ( $pageSet->getSpecialPages() as $fakeId => $page ) {
$vals = [];
ApiQueryBase::addTitleInfo( $vals, $title );
$vals['ns'] = $page->getNamespace();
$vals['title'] = $this->titleFormatter->getPrefixedText( $page );
$vals['special'] = true;
$title = $this->titleFactory->newFromPageReference( $page );
if ( !$title->isKnown() ) {
$vals['missing'] = true;
}
@ -815,10 +833,11 @@ class ApiQuery extends ApiBase {
}
// Output general page information for found titles
foreach ( $pageSet->getGoodTitles() as $pageid => $title ) {
foreach ( $pageSet->getGoodPages() as $pageid => $page ) {
$vals = [];
$vals['pageid'] = $pageid;
ApiQueryBase::addTitleInfo( $vals, $title );
$vals['ns'] = $page->getNamespace();
$vals['title'] = $this->titleFormatter->getPrefixedText( $page );
$pages[$pageid] = $vals;
}