Which type is used depends on the ApiModuleManager responsible for
the API module. There are two managers, one in ApiMain and one in
ApiQuery. Both contain a list of API modules they instantiate.
Both use $this as the first parameter in the constructors of the
individual modules. There is no other regular way to instantiate the
modules, so we know the type must either be ApiMain or ApiQuery.
The lists don't intersect.
I would have prefered the naming scheme $mainModule for ApiMain
modules and $queryModule for ApiQuery modules but since this
doesn't add much I left the shorter variable names untouched.
Change-Id: Ie6bf19150f1c9b619655a06a8e051412665e54db
57 files changed:
private $mBufferResult = false, $mBuffer, $mDisabled = false;
/**
private $mBufferResult = false, $mBuffer, $mDisabled = false;
/**
* If $format ends with 'fm', pretty-print the output in HTML.
* @param ApiMain $main
* @param string $format Format name
*/
* If $format ends with 'fm', pretty-print the output in HTML.
* @param ApiMain $main
* @param string $format Format name
*/
- public function __construct( $main, $format ) {
+ public function __construct( ApiMain $main, $format ) {
parent::__construct( $main, $format );
$this->mIsHtml = ( substr( $format, -2, 2 ) === 'fm' ); // ends with 'fm'
parent::__construct( $main, $format );
$this->mIsHtml = ( substr( $format, -2, 2 ) === 'fm' ); // ends with 'fm'
*/
class ApiFormatFeedWrapper extends ApiFormatBase {
*/
class ApiFormatFeedWrapper extends ApiFormatBase {
- public function __construct( $main ) {
+ public function __construct( ApiMain $main ) {
parent::__construct( $main, 'feed' );
}
parent::__construct( $main, 'feed' );
}
- public function __construct( $main, $format ) {
+ public function __construct( ApiMain $main, $format ) {
parent::__construct( $main, $format );
$this->mIsRaw = ( $format === 'rawfm' );
}
parent::__construct( $main, $format );
$this->mIsRaw = ( $format === 'rawfm' );
}
class ApiFormatRaw extends ApiFormatBase {
/**
class ApiFormatRaw extends ApiFormatBase {
/**
- * @param ApiFormatBase $errorFallback ApiFormatBase object to fall back on for errors
+ * @param ApiFormatBase $errorFallback Object to fall back on for errors
- public function __construct( $main, $errorFallback ) {
+ public function __construct( ApiMain $main, ApiFormatBase $errorFallback ) {
parent::__construct( $main, 'raw' );
$this->mErrorFallback = $errorFallback;
}
parent::__construct( $main, 'raw' );
$this->mErrorFallback = $errorFallback;
}
*/
class ApiLogin extends ApiBase {
*/
class ApiLogin extends ApiBase {
- public function __construct( $main, $action ) {
+ public function __construct( ApiMain $main, $action ) {
parent::__construct( $main, $action, 'lg' );
}
parent::__construct( $main, $action, 'lg' );
}
*/
class ApiModuleManager extends ContextSource {
*/
class ApiModuleManager extends ContextSource {
+ /**
+ * @var ApiBase
+ */
+ /**
+ * @var ApiBase[]
+ */
private $mInstances = array();
private $mInstances = array();
+ /**
+ * @var null[]
+ */
private $mGroups = array();
private $mGroups = array();
+ /**
+ * @var array[]
+ */
private $mModules = array();
/**
private $mModules = array();
/**
* @param ApiBase $dbSource Module implementing getDB().
* Allows PageSet to reuse existing db connection from the shared state like ApiQuery.
* @param int $flags Zero or more flags like DISABLE_GENERATORS
* @param ApiBase $dbSource Module implementing getDB().
* Allows PageSet to reuse existing db connection from the shared state like ApiQuery.
* @param int $flags Zero or more flags like DISABLE_GENERATORS
- public function __construct( $main, $action ) {
+ public function __construct( ApiMain $main, $action ) {
parent::__construct( $main, $action );
$this->queryObj = new ApiQuery( $this->getMain(), 'query' );
}
parent::__construct( $main, $action );
$this->queryObj = new ApiQuery( $this->getMain(), 'query' );
}
* @param ApiMain $main
* @param string $action
*/
* @param ApiMain $main
* @param string $action
*/
- public function __construct( $main, $action ) {
+ public function __construct( ApiMain $main, $action ) {
parent::__construct( $main, $action );
$this->mModuleMgr = new ApiModuleManager( $this );
parent::__construct( $main, $action );
$this->mModuleMgr = new ApiModuleManager( $this );
*/
class ApiQueryAllCategories extends ApiQueryGeneratorBase {
*/
class ApiQueryAllCategories extends ApiQueryGeneratorBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'ac' );
}
parent::__construct( $query, $moduleName, 'ac' );
}
class ApiQueryAllImages extends ApiQueryGeneratorBase {
protected $mRepo;
class ApiQueryAllImages extends ApiQueryGeneratorBase {
protected $mRepo;
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'ai' );
$this->mRepo = RepoGroup::singleton()->getLocalRepo();
}
parent::__construct( $query, $moduleName, 'ai' );
$this->mRepo = RepoGroup::singleton()->getLocalRepo();
}
private $useIndex = null;
private $props = array(), $propHelp = array();
private $useIndex = null;
private $props = array(), $propHelp = array();
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
switch ( $moduleName ) {
case 'alllinks':
$prefix = 'al';
switch ( $moduleName ) {
case 'alllinks':
$prefix = 'al';
*/
class ApiQueryAllMessages extends ApiQueryBase {
*/
class ApiQueryAllMessages extends ApiQueryBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'am' );
}
parent::__construct( $query, $moduleName, 'am' );
}
*/
class ApiQueryAllPages extends ApiQueryGeneratorBase {
*/
class ApiQueryAllPages extends ApiQueryGeneratorBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'ap' );
}
parent::__construct( $query, $moduleName, 'ap' );
}
* @ingroup API
*/
class ApiQueryAllUsers extends ApiQueryBase {
* @ingroup API
*/
class ApiQueryAllUsers extends ApiQueryBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'au' );
}
parent::__construct( $query, $moduleName, 'au' );
}
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
$settings = $this->backlinksSettings[$moduleName];
$prefix = $settings['prefix'];
$code = $settings['code'];
$settings = $this->backlinksSettings[$moduleName];
$prefix = $settings['prefix'];
$code = $settings['code'];
private $mQueryModule, $mDb, $tables, $where, $fields, $options, $join_conds;
/**
private $mQueryModule, $mDb, $tables, $where, $fields, $options, $join_conds;
/**
- * @param ApiBase $query
+ * @param ApiQuery $queryModule
* @param string $moduleName
* @param string $paramPrefix
*/
* @param string $moduleName
* @param string $paramPrefix
*/
- public function __construct( ApiBase $query, $moduleName, $paramPrefix = '' ) {
- parent::__construct( $query->getMain(), $moduleName, $paramPrefix );
- $this->mQueryModule = $query;
+ public function __construct( ApiQuery $queryModule, $moduleName, $paramPrefix = '' ) {
+ parent::__construct( $queryModule->getMain(), $moduleName, $paramPrefix );
+ $this->mQueryModule = $queryModule;
$this->mDb = null;
$this->resetQueryParams();
}
$this->mDb = null;
$this->resetQueryParams();
}
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'bk' );
}
parent::__construct( $query, $moduleName, 'bk' );
}
*/
class ApiQueryCategories extends ApiQueryGeneratorBase {
*/
class ApiQueryCategories extends ApiQueryGeneratorBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'cl' );
}
parent::__construct( $query, $moduleName, 'cl' );
}
*/
class ApiQueryCategoryInfo extends ApiQueryBase {
*/
class ApiQueryCategoryInfo extends ApiQueryBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'ci' );
}
parent::__construct( $query, $moduleName, 'ci' );
}
*/
class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
*/
class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'cm' );
}
parent::__construct( $query, $moduleName, 'cm' );
}
*/
const MAX_PAGES = 100;
*/
const MAX_PAGES = 100;
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
// "pc" is short for "page contributors", "co" was already taken by the
// GeoData extension's prop=coordinates.
parent::__construct( $query, $moduleName, 'pc' );
// "pc" is short for "page contributors", "co" was already taken by the
// GeoData extension's prop=coordinates.
parent::__construct( $query, $moduleName, 'pc' );
*/
class ApiQueryDeletedrevs extends ApiQueryBase {
*/
class ApiQueryDeletedrevs extends ApiQueryBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'dr' );
}
parent::__construct( $query, $moduleName, 'dr' );
}
*/
class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase {
*/
class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'df' );
}
parent::__construct( $query, $moduleName, 'df' );
}
*/
class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
*/
class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'eu' );
}
parent::__construct( $query, $moduleName, 'eu' );
}
*/
class ApiQueryExternalLinks extends ApiQueryBase {
*/
class ApiQueryExternalLinks extends ApiQueryBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'el' );
}
parent::__construct( $query, $moduleName, 'el' );
}
*/
class ApiQueryFileRepoInfo extends ApiQueryBase {
*/
class ApiQueryFileRepoInfo extends ApiQueryBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'fri' );
}
parent::__construct( $query, $moduleName, 'fri' );
}
*/
class ApiQueryFilearchive extends ApiQueryBase {
*/
class ApiQueryFilearchive extends ApiQueryBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'fa' );
}
parent::__construct( $query, $moduleName, 'fa' );
}
*/
class ApiQueryIWBacklinks extends ApiQueryGeneratorBase {
*/
class ApiQueryIWBacklinks extends ApiQueryGeneratorBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'iwbl' );
}
parent::__construct( $query, $moduleName, 'iwbl' );
}
*/
class ApiQueryIWLinks extends ApiQueryBase {
*/
class ApiQueryIWLinks extends ApiQueryBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'iw' );
}
parent::__construct( $query, $moduleName, 'iw' );
}
const TRANSFORM_LIMIT = 50;
private static $transformCount = 0;
const TRANSFORM_LIMIT = 50;
private static $transformCount = 0;
- public function __construct( $query, $moduleName, $prefix = 'ii' ) {
+ public function __construct( ApiQuery $query, $moduleName, $prefix = 'ii' ) {
// We allow a subclass to override the prefix, to create a related API
// module. Some other parts of MediaWiki construct this with a null
// $prefix, which used to be ignored when this only took two arguments
// We allow a subclass to override the prefix, to create a related API
// module. Some other parts of MediaWiki construct this with a null
// $prefix, which used to be ignored when this only took two arguments
*/
class ApiQueryImages extends ApiQueryGeneratorBase {
*/
class ApiQueryImages extends ApiQueryGeneratorBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'im' );
}
parent::__construct( $query, $moduleName, 'im' );
}
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'in' );
}
parent::__construct( $query, $moduleName, 'in' );
}
*/
class ApiQueryLangBacklinks extends ApiQueryGeneratorBase {
*/
class ApiQueryLangBacklinks extends ApiQueryGeneratorBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'lbl' );
}
parent::__construct( $query, $moduleName, 'lbl' );
}
*/
class ApiQueryLangLinks extends ApiQueryBase {
*/
class ApiQueryLangLinks extends ApiQueryBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'll' );
}
parent::__construct( $query, $moduleName, 'll' );
}
private $table, $prefix, $description, $helpUrl;
private $table, $prefix, $description, $helpUrl;
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
switch ( $moduleName ) {
case self::LINKS:
$this->table = 'pagelinks';
switch ( $moduleName ) {
case self::LINKS:
$this->table = 'pagelinks';
*/
class ApiQueryLogEvents extends ApiQueryBase {
*/
class ApiQueryLogEvents extends ApiQueryBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'le' );
}
parent::__construct( $query, $moduleName, 'le' );
}
*/
class ApiQueryPagePropNames extends ApiQueryBase {
*/
class ApiQueryPagePropNames extends ApiQueryBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'ppn' );
}
parent::__construct( $query, $moduleName, 'ppn' );
}
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'pp' );
}
parent::__construct( $query, $moduleName, 'pp' );
}
*/
class ApiQueryPagesWithProp extends ApiQueryGeneratorBase {
*/
class ApiQueryPagesWithProp extends ApiQueryGeneratorBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'pwp' );
}
parent::__construct( $query, $moduleName, 'pwp' );
}
*/
class ApiQueryProtectedTitles extends ApiQueryGeneratorBase {
*/
class ApiQueryProtectedTitles extends ApiQueryGeneratorBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'pt' );
}
parent::__construct( $query, $moduleName, 'pt' );
}
class ApiQueryQueryPage extends ApiQueryGeneratorBase {
private $qpMap;
class ApiQueryQueryPage extends ApiQueryGeneratorBase {
private $qpMap;
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'qp' );
// Build mapping from special page names to QueryPage classes
global $wgAPIUselessQueryPages;
parent::__construct( $query, $moduleName, 'qp' );
// Build mapping from special page names to QueryPage classes
global $wgAPIUselessQueryPages;
class ApiQueryRandom extends ApiQueryGeneratorBase {
private $pageIDs;
class ApiQueryRandom extends ApiQueryGeneratorBase {
private $pageIDs;
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'rn' );
}
parent::__construct( $query, $moduleName, 'rn' );
}
*/
class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
*/
class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'rc' );
}
parent::__construct( $query, $moduleName, 'rc' );
}
*/
class ApiQueryRedirects extends ApiQueryGeneratorBase {
*/
class ApiQueryRedirects extends ApiQueryGeneratorBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'rd' );
}
parent::__construct( $query, $moduleName, 'rd' );
}
private $diffto, $difftotext, $expandTemplates, $generateXML, $section,
$token, $parseContent, $contentFormat;
private $diffto, $difftotext, $expandTemplates, $generateXML, $section,
$token, $parseContent, $contentFormat;
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'rv' );
}
parent::__construct( $query, $moduleName, 'rv' );
}
*/
const BACKEND_NULL_PARAM = 'database-backed';
*/
const BACKEND_NULL_PARAM = 'database-backed';
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'sr' );
}
parent::__construct( $query, $moduleName, 'sr' );
}
*/
class ApiQuerySiteinfo extends ApiQueryBase {
*/
class ApiQuerySiteinfo extends ApiQueryBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'si' );
}
parent::__construct( $query, $moduleName, 'si' );
}
*/
class ApiQueryStashImageInfo extends ApiQueryImageInfo {
*/
class ApiQueryStashImageInfo extends ApiQueryImageInfo {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'sii' );
}
parent::__construct( $query, $moduleName, 'sii' );
}
private $fld_displayname = false, $fld_description = false,
$fld_hitcount = false;
private $fld_displayname = false, $fld_description = false,
$fld_hitcount = false;
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'tg' );
}
parent::__construct( $query, $moduleName, 'tg' );
}
*/
class ApiQueryContributions extends ApiQueryBase {
*/
class ApiQueryContributions extends ApiQueryBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'uc' );
}
parent::__construct( $query, $moduleName, 'uc' );
}
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'ui' );
}
parent::__construct( $query, $moduleName, 'ui' );
}
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'us' );
}
parent::__construct( $query, $moduleName, 'us' );
}
*/
class ApiQueryWatchlist extends ApiQueryGeneratorBase {
*/
class ApiQueryWatchlist extends ApiQueryGeneratorBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'wl' );
}
parent::__construct( $query, $moduleName, 'wl' );
}
*/
class ApiQueryWatchlistRaw extends ApiQueryGeneratorBase {
*/
class ApiQueryWatchlistRaw extends ApiQueryGeneratorBase {
- public function __construct( $query, $moduleName ) {
+ public function __construct( ApiQuery $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'wr' );
}
parent::__construct( $query, $moduleName, 'wr' );
}
private $mData, $mIsRawMode, $mSize, $mCheckingSize;
/**
private $mData, $mIsRawMode, $mSize, $mCheckingSize;
/**
* @param ApiMain $main
*/
* @param ApiMain $main
*/
- public function __construct( $main ) {
+ public function __construct( ApiMain $main ) {
parent::__construct( $main, 'result' );
$this->mIsRawMode = false;
$this->mCheckingSize = true;
parent::__construct( $main, 'result' );
$this->mIsRawMode = false;
$this->mCheckingSize = true;
}
class ApiFormatXmlRsd extends ApiFormatXml {
}
class ApiFormatXmlRsd extends ApiFormatXml {
- public function __construct( $main, $format ) {
+ public function __construct( ApiMain $main, $format ) {
parent::__construct( $main, $format );
$this->setRootElement( 'rsd' );
}
parent::__construct( $main, $format );
$this->setRootElement( 'rsd' );
}
$prefixes = array();
foreach ( $modules as $name => $class ) {
$prefixes = array();
foreach ( $modules as $name => $class ) {
- /** @var ApiMain $module */
- $module = new $class( $main, $name );
+ /** @var ApiQueryBase $module */
+ $module = new $class( $query, $name );
$prefix = $module->getModulePrefix();
if ( isset( $prefixes[$prefix] ) ) {
$this->fail( "Module prefix '{$prefix}' is shared between {$class} and {$prefixes[$prefix]}" );
$prefix = $module->getModulePrefix();
if ( isset( $prefixes[$prefix] ) ) {
$this->fail( "Module prefix '{$prefix}' is shared between {$class} and {$prefixes[$prefix]}" );