<?php
/**
- *
- *
- * Created on Sep 7, 2006
- *
* Copyright © 2006 Yuri Astrakhan "<Firstname><Lastname>@gmail.com"
*
* This program is free software; you can redistribute it and/or modify
* @file
*/
+use Wikimedia\Rdbms\IDatabase;
+
/**
* This is the main query class. It behaves similar to ApiMain: based on the
* parameters given, it will create a list of titles to work on (an ApiPageSet
* @var array
*/
private static $QueryPropModules = [
- 'categories' => 'ApiQueryCategories',
- 'categoryinfo' => 'ApiQueryCategoryInfo',
- 'contributors' => 'ApiQueryContributors',
- 'deletedrevisions' => 'ApiQueryDeletedRevisions',
- 'duplicatefiles' => 'ApiQueryDuplicateFiles',
- 'extlinks' => 'ApiQueryExternalLinks',
- 'fileusage' => 'ApiQueryBacklinksprop',
- 'images' => 'ApiQueryImages',
- 'imageinfo' => 'ApiQueryImageInfo',
- 'info' => 'ApiQueryInfo',
- 'links' => 'ApiQueryLinks',
- 'linkshere' => 'ApiQueryBacklinksprop',
- 'iwlinks' => 'ApiQueryIWLinks',
- 'langlinks' => 'ApiQueryLangLinks',
- 'pageprops' => 'ApiQueryPageProps',
- 'redirects' => 'ApiQueryBacklinksprop',
- 'revisions' => 'ApiQueryRevisions',
- 'stashimageinfo' => 'ApiQueryStashImageInfo',
- 'templates' => 'ApiQueryLinks',
- 'transcludedin' => 'ApiQueryBacklinksprop',
+ 'categories' => ApiQueryCategories::class,
+ 'categoryinfo' => ApiQueryCategoryInfo::class,
+ 'contributors' => ApiQueryContributors::class,
+ 'deletedrevisions' => ApiQueryDeletedRevisions::class,
+ 'duplicatefiles' => ApiQueryDuplicateFiles::class,
+ 'extlinks' => ApiQueryExternalLinks::class,
+ 'fileusage' => ApiQueryBacklinksprop::class,
+ 'images' => ApiQueryImages::class,
+ 'imageinfo' => ApiQueryImageInfo::class,
+ 'info' => ApiQueryInfo::class,
+ 'links' => ApiQueryLinks::class,
+ 'linkshere' => ApiQueryBacklinksprop::class,
+ 'iwlinks' => ApiQueryIWLinks::class,
+ 'langlinks' => ApiQueryLangLinks::class,
+ 'pageprops' => ApiQueryPageProps::class,
+ 'redirects' => ApiQueryBacklinksprop::class,
+ 'revisions' => ApiQueryRevisions::class,
+ 'stashimageinfo' => ApiQueryStashImageInfo::class,
+ 'templates' => ApiQueryLinks::class,
+ 'transcludedin' => ApiQueryBacklinksprop::class,
];
/**
* @var array
*/
private static $QueryListModules = [
- 'allcategories' => 'ApiQueryAllCategories',
- 'alldeletedrevisions' => 'ApiQueryAllDeletedRevisions',
- 'allfileusages' => 'ApiQueryAllLinks',
- 'allimages' => 'ApiQueryAllImages',
- 'alllinks' => 'ApiQueryAllLinks',
- 'allpages' => 'ApiQueryAllPages',
- 'allredirects' => 'ApiQueryAllLinks',
- 'allrevisions' => 'ApiQueryAllRevisions',
- 'mystashedfiles' => 'ApiQueryMyStashedFiles',
- 'alltransclusions' => 'ApiQueryAllLinks',
- 'allusers' => 'ApiQueryAllUsers',
- 'backlinks' => 'ApiQueryBacklinks',
- 'blocks' => 'ApiQueryBlocks',
- 'categorymembers' => 'ApiQueryCategoryMembers',
- 'deletedrevs' => 'ApiQueryDeletedrevs',
- 'embeddedin' => 'ApiQueryBacklinks',
- 'exturlusage' => 'ApiQueryExtLinksUsage',
- 'filearchive' => 'ApiQueryFilearchive',
- 'imageusage' => 'ApiQueryBacklinks',
- 'iwbacklinks' => 'ApiQueryIWBacklinks',
- 'langbacklinks' => 'ApiQueryLangBacklinks',
- 'logevents' => 'ApiQueryLogEvents',
- 'pageswithprop' => 'ApiQueryPagesWithProp',
- 'pagepropnames' => 'ApiQueryPagePropNames',
- 'prefixsearch' => 'ApiQueryPrefixSearch',
- 'protectedtitles' => 'ApiQueryProtectedTitles',
- 'querypage' => 'ApiQueryQueryPage',
- 'random' => 'ApiQueryRandom',
- 'recentchanges' => 'ApiQueryRecentChanges',
- 'search' => 'ApiQuerySearch',
- 'tags' => 'ApiQueryTags',
- 'usercontribs' => 'ApiQueryContributions',
- 'users' => 'ApiQueryUsers',
- 'watchlist' => 'ApiQueryWatchlist',
- 'watchlistraw' => 'ApiQueryWatchlistRaw',
+ 'allcategories' => ApiQueryAllCategories::class,
+ 'alldeletedrevisions' => ApiQueryAllDeletedRevisions::class,
+ 'allfileusages' => ApiQueryAllLinks::class,
+ 'allimages' => ApiQueryAllImages::class,
+ 'alllinks' => ApiQueryAllLinks::class,
+ 'allpages' => ApiQueryAllPages::class,
+ 'allredirects' => ApiQueryAllLinks::class,
+ 'allrevisions' => ApiQueryAllRevisions::class,
+ 'mystashedfiles' => ApiQueryMyStashedFiles::class,
+ 'alltransclusions' => ApiQueryAllLinks::class,
+ 'allusers' => ApiQueryAllUsers::class,
+ 'backlinks' => ApiQueryBacklinks::class,
+ 'blocks' => ApiQueryBlocks::class,
+ 'categorymembers' => ApiQueryCategoryMembers::class,
+ 'deletedrevs' => ApiQueryDeletedrevs::class,
+ 'embeddedin' => ApiQueryBacklinks::class,
+ 'exturlusage' => ApiQueryExtLinksUsage::class,
+ 'filearchive' => ApiQueryFilearchive::class,
+ 'imageusage' => ApiQueryBacklinks::class,
+ 'iwbacklinks' => ApiQueryIWBacklinks::class,
+ 'langbacklinks' => ApiQueryLangBacklinks::class,
+ 'logevents' => ApiQueryLogEvents::class,
+ 'pageswithprop' => ApiQueryPagesWithProp::class,
+ 'pagepropnames' => ApiQueryPagePropNames::class,
+ 'prefixsearch' => ApiQueryPrefixSearch::class,
+ 'protectedtitles' => ApiQueryProtectedTitles::class,
+ 'querypage' => ApiQueryQueryPage::class,
+ 'random' => ApiQueryRandom::class,
+ 'recentchanges' => ApiQueryRecentChanges::class,
+ 'search' => ApiQuerySearch::class,
+ 'tags' => ApiQueryTags::class,
+ 'usercontribs' => ApiQueryContributions::class,
+ 'users' => ApiQueryUsers::class,
+ 'watchlist' => ApiQueryWatchlist::class,
+ 'watchlistraw' => ApiQueryWatchlistRaw::class,
];
/**
* @var array
*/
private static $QueryMetaModules = [
- 'allmessages' => 'ApiQueryAllMessages',
- 'authmanagerinfo' => 'ApiQueryAuthManagerInfo',
- 'siteinfo' => 'ApiQuerySiteinfo',
- 'userinfo' => 'ApiQueryUserInfo',
- 'filerepoinfo' => 'ApiQueryFileRepoInfo',
- 'tokens' => 'ApiQueryTokens',
+ 'allmessages' => ApiQueryAllMessages::class,
+ 'authmanagerinfo' => ApiQueryAuthManagerInfo::class,
+ 'siteinfo' => ApiQuerySiteinfo::class,
+ 'userinfo' => ApiQueryUserInfo::class,
+ 'filerepoinfo' => ApiQueryFileRepoInfo::class,
+ 'tokens' => ApiQueryTokens::class,
];
/**
* as the first, regardless of the values of $db and $groups
* @param string $name Name to assign to the database connection
* @param int $db One of the DB_* constants
- * @param array $groups Query groups
- * @return Database
+ * @param string|string[] $groups Query groups
+ * @return IDatabase
*/
public function getNamedDB( $name, $db, $groups ) {
if ( !array_key_exists( $name, $this->mNamedDB ) ) {
$cacheMode = $this->mPageSet->getCacheMode();
// Execute all unfinished modules
- /** @var $module ApiQueryBase */
+ /** @var ApiQueryBase $module */
foreach ( $modules as $module ) {
$params = $module->extractRequestParams();
$cacheMode = $this->mergeCacheMode(
];
}
// Report special pages
- /** @var $title Title */
+ /** @var Title $title */
foreach ( $pageSet->getSpecialTitles() as $fakeId => $title ) {
$vals = [];
ApiQueryBase::addTitleInfo( $vals, $title );
$titles = $pageSet->getGoodTitles();
if ( count( $titles ) ) {
$user = $this->getUser();
- /** @var $title Title */
+ /** @var Title $title */
foreach ( $titles as $title ) {
if ( $title->userCan( 'read', $user ) ) {
$exportTitles[] = $title;
// Raw formatter will handle this
$result->addValue( null, 'text', $sink, ApiResult::NO_SIZE_CHECK );
$result->addValue( null, 'mime', 'text/xml', ApiResult::NO_SIZE_CHECK );
+ $result->addValue( null, 'filename', 'export.xml', ApiResult::NO_SIZE_CHECK );
} else {
$result->addValue( 'query', 'export', $sink, ApiResult::NO_SIZE_CHECK );
$result->addValue( 'query', ApiResult::META_BC_SUBELEMENTS, [ 'export' ] );
public function getHelpUrls() {
return [
- 'https://www.mediawiki.org/wiki/API:Query',
- 'https://www.mediawiki.org/wiki/API:Meta',
- 'https://www.mediawiki.org/wiki/API:Properties',
- 'https://www.mediawiki.org/wiki/API:Lists',
+ 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Query',
+ 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Meta',
+ 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Properties',
+ 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Lists',
];
}
}