MediaWiki  1.23.12
ApiQuery Class Reference

This is the main query class. More...

Inheritance diagram for ApiQuery:
Collaboration diagram for ApiQuery:

Public Member Functions

 __construct ( $main, $action)
 
 execute ()
 Query execution happens in the following steps: #1 Create a PageSet object with any pages requested by the user #2 If using a generator, execute it to get a new ApiPageSet object #3 Instantiate all requested modules. More...
 
 getAllowedParams ( $flags=0)
 
 getCustomPrinter ()
 
 getDescription ()
 Returns the description string for this module. More...
 
 getExamples ()
 Returns usage examples for this module. More...
 
 getGenerators ()
 Get the generators array mapping module names to class names. More...
 
 getHelpUrls ()
 
 getModuleManager ()
 Overrides to return this instance's module manager. More...
 
 getModules ()
 Get the array mapping module names to class names. More...
 
 getModuleType ( $moduleName)
 Get whether the specified module is a prop, list or a meta query module. More...
 
 getNamedDB ( $name, $db, $groups)
 Get the query database connection with the given name. More...
 
 getPageSet ()
 Gets the set of pages the user has requested (or generated) More...
 
 getParamDescription ()
 Returns an array of parameter descriptions. More...
 
 getPossibleErrors ()
 Returns a list of all possible errors returned by the module. More...
 
 makeHelpMsg ()
 Override the parent to generate help messages for all available query modules. More...
 
 setGeneratorContinue ( $module, $paramName, $paramValue)
 This method is called by the generator base when generator in the smart-continue mode tries to set 'query-continue' value. More...
 
 shouldCheckMaxlag ()
 Indicates if this module needs maxlag to be checked. More...
 
- Public Member Functions inherited from ApiBase
 __construct ( $mainModule, $moduleName, $modulePrefix='')
 Constructor. More...
 
 createContext ()
 Create a new RequestContext object to use e.g. More...
 
 dieReadOnly ()
 Helper function for readonly errors. More...
 
 dieStatus ( $status)
 Throw a UsageException based on the errors in the Status object. More...
 
 dieUsage ( $description, $errorCode, $httpRespCode=0, $extradata=null)
 Throw a UsageException, which will (if uncaught) call the main module's error handler and die with an error message. More...
 
 dieUsageMsg ( $error)
 Output the error message related to a certain array. More...
 
 dieUsageMsgOrDebug ( $error)
 Will only set a warning instead of failing if the global $wgDebugAPI is set to true. More...
 
 encodeParamName ( $paramName)
 This method mangles parameter name based on the prefix supplied to the constructor. More...
 
 extractRequestParams ( $parseLimit=true)
 Using getAllowedParams(), this function makes an array of the values provided by the user, with key being the name of the variable, and value - validated value from user or default. More...
 
 getErrorFromStatus ( $status)
 Get error (as code, string) from a Status object. More...
 
 getFinalDescription ()
 Get final module description, after hooks have had a chance to tweak it as needed. More...
 
 getFinalParamDescription ()
 Get final parameter descriptions, after hooks have had a chance to tweak it as needed. More...
 
 getFinalParams ( $flags=0)
 Get final list of parameters, after hooks have had a chance to tweak it as needed. More...
 
 getFinalPossibleErrors ()
 Get final list of possible errors, after hooks have had a chance to tweak it as needed. More...
 
 getFinalResultProperties ()
 Get final possible result properties, after hooks have had a chance to tweak it as needed. More...
 
 getMain ()
 Get the main module. More...
 
 getModuleName ()
 Get the name of the module being executed by this instance. More...
 
 getModulePrefix ()
 Get parameter prefix (usually two letters or an empty string). More...
 
 getModuleProfileName ( $db=false)
 Get the name of the module as shown in the profiler log. More...
 
 getProfileDBTime ()
 Total time the module used the database. More...
 
 getProfileTime ()
 Total time the module was executed. More...
 
 getRequireAtLeastOneParameterErrorMessages ( $params)
 Generates the possible errors requireAtLeastOneParameter() can die with. More...
 
 getRequireMaxOneParameterErrorMessages ( $params)
 Generates the possible error requireMaxOneParameter() can die with. More...
 
 getRequireOnlyOneParameterErrorMessages ( $params)
 Generates the possible errors requireOnlyOneParameter() can die with. More...
 
 getResult ()
 Get the result object. More...
 
 getResultData ()
 Get the result data array (read-only) More...
 
 getTitleOrPageId ( $params, $load=false)
 
 getTitleOrPageIdErrorMessage ()
 
 getTokenSalt ()
 Returns the token salt if there is one, '' if the module doesn't require a salt, else false if the module doesn't need a token You have also to override needsToken() Value is passed to User::getEditToken. More...
 
 getVersion ()
 Returns a string that identifies the version of the extending class. More...
 
 getWatchlistUser ( $params)
 Gets the user for whom to get the watchlist. More...
 
 isMain ()
 Returns true if this module is the main module ($this === $this->mMainModule), false otherwise. More...
 
 isReadMode ()
 Indicates whether this module requires read rights. More...
 
 isWriteMode ()
 Indicates whether this module requires write mode. More...
 
 makeHelpMsgParameters ()
 Generates the parameter descriptions for this module, to be displayed in the module's help. More...
 
 mustBePosted ()
 Indicates whether this module must be called with a POST request. More...
 
 needsToken ()
 Returns whether this module requires a token to execute It is used to show possible errors in action=paraminfo see bug 25248. More...
 
 parseErrors ( $errors)
 Parses a list of errors into a standardised format. More...
 
 parseMsg ( $error)
 Return the error message related to a certain array. More...
 
 profileDBIn ()
 Start module profiling. More...
 
 profileDBOut ()
 End database profiling. More...
 
 profileIn ()
 Start module profiling. More...
 
 profileOut ()
 End module profiling. More...
 
 requireAtLeastOneParameter ( $params)
 Die if none of a certain set of parameters is set and not false. More...
 
 requireMaxOneParameter ( $params)
 Die if more than one of a certain set of parameters is set and not false. More...
 
 requireOnlyOneParameter ( $params)
 Die if none or more than one of a certain set of parameters is set and not false. More...
 
 safeProfileOut ()
 When modules crash, sometimes it is needed to do a profileOut() regardless of the profiling state the module was in. More...
 
 setWarning ( $warning)
 Set warning section for this module. More...
 
 validateLimit ( $paramName, &$value, $min, $max, $botMax=null, $enforceLimits=false)
 Validate the value against the minimum and user/bot maximum limits. More...
 
 validateTimestamp ( $value, $encParamName)
 Validate and normalize of parameters of type 'timestamp'. More...
 
- Public Member Functions inherited from ContextSource
 canUseWikiPage ()
 Check whether a WikiPage object can be get with getWikiPage(). More...
 
 exportSession ()
 Export the resolved user IP, HTTP headers, user ID, and session ID. More...
 
 getConfig ()
 Get the Config object. More...
 
 getContext ()
 Get the RequestContext object. More...
 
 getLang ()
 Get the Language object. More...
 
 getLanguage ()
 Get the Language object. More...
 
 getOutput ()
 Get the OutputPage object. More...
 
 getRequest ()
 Get the WebRequest object. More...
 
 getSkin ()
 Get the Skin object. More...
 
 getTitle ()
 Get the Title object. More...
 
 getUser ()
 Get the User object. More...
 
 getWikiPage ()
 Get the WikiPage object. More...
 
 msg ()
 Get a Message object with context set Parameters are the same as wfMessage() More...
 
 setContext (IContextSource $context)
 Set the IContextSource object. More...
 

Protected Member Functions

 mergeCacheMode ( $cacheMode, $modCacheMode)
 Update a cache mode string, applying the cache mode of a new module to it. More...
 
- Protected Member Functions inherited from ApiBase
 dieContinueUsageIf ( $condition)
 Die with the $prefix. More...
 
 getAllowedParams ()
 Returns an array of allowed parameters (parameter name) => (default value) or (parameter name) => (array with PARAM_* constants as keys) Don't call this function directly: use getFinalParams() to allow hooks to modify parameters as needed. More...
 
 getDB ()
 Gets a default slave database connection object. More...
 
 getParameter ( $paramName, $parseLimit=true)
 Get a value for the given parameter. More...
 
 getParameterFromSettings ( $paramName, $paramSettings, $parseLimit)
 Using the settings determine the value for the given parameter. More...
 
 getResultProperties ()
 Returns possible properties in the result, grouped by the value of the prop parameter that shows them. More...
 
 getWatchlistValue ( $watchlist, $titleObj, $userOption=null)
 Return true if we're to watch the page, false if not, null if no change. More...
 
 makeHelpArrayToString ( $prefix, $title, $input)
 
 parseMultiValue ( $valueName, $value, $allowMultiple, $allowedValues)
 Return an array of values that were given in a 'a|b|c' notation, after it optionally validates them against the list allowed values. More...
 
 setWatch ( $watch, $titleObj, $userOption=null)
 Set a watch (or unwatch) based the based on a watchlist parameter. More...
 

Private Member Functions

 doExport ( $pageSet, $result)
 
 initContinue (&$pagesetParams, &$completeModules)
 Parse 'continue' parameter into the list of complete modules and a list of generator parameters. More...
 
 initModules ( $allModules, $completeModules, $usePageset)
 Validate sub-modules, filter out completed ones, and do requestExtraData() More...
 
 instantiateModules (&$modules, $param)
 Create instances of all modules requested by the client. More...
 
 makeHelpMsgHelper ( $group)
 For all modules of a given group, generate help messages and join them together. More...
 
 outputGeneralPageInfo ()
 Appends an element for each page in the current pageSet with the most general information (id, title), plus any title normalizations and missing or invalid title/pageids/revids. More...
 

Private Attributes

 $mGeneratorContinue
 
 $mModuleMgr
 
 $mNamedDB = array()
 
ApiPageSet $mPageSet
 
 $mParams
 
 $mUseLegacyContinue
 

Static Private Attributes

static $QueryListModules
 
static $QueryMetaModules
 
static $QueryPropModules
 

Additional Inherited Members

- Static Public Member Functions inherited from ApiBase
static debugPrint ( $value, $name='unknown', $backtrace=false)
 Debugging function that prints a value and an optional backtrace. More...
 
static truncateArray (&$arr, $limit)
 Truncate an array to a certain length. More...
 
- Public Attributes inherited from ApiBase
 $mDBTime = 0
 
 $mModuleName
 
 $mModulePrefix
 
 $mModuleTime = 0
 
const GET_VALUES_FOR_HELP = 1
 getAllowedParams() flag: When set, the result could take longer to generate, but should be more thorough. More...
 
const LIMIT_BIG1 = 500
 
const LIMIT_BIG2 = 5000
 
const LIMIT_SML1 = 50
 
const LIMIT_SML2 = 500
 
const PARAM_ALLOW_DUPLICATES = 6
 
const PARAM_DEPRECATED = 7
 
const PARAM_DFLT = 0
 
const PARAM_ISMULTI = 1
 
const PARAM_MAX = 3
 
const PARAM_MAX2 = 4
 
const PARAM_MIN = 5
 
const PARAM_RANGE_ENFORCE = 9
 
const PARAM_REQUIRED = 8
 
const PARAM_TYPE = 2
 
const PROP_LIST = 'LIST'
 
const PROP_NULLABLE = 1
 
const PROP_ROOT = 'ROOT'
 
const PROP_TYPE = 0
 
- Static Public Attributes inherited from ApiBase
static $messageMap
 Array that maps message keys to error messages. More...
 
- Static Protected Member Functions inherited from ApiBase
static addTokenProperties (&$props, $tokenFunctions)
 Add token properties to the array used by getResultProperties, based on a token functions mapping. More...
 
static dieDebug ( $method, $message)
 Internal code errors should be reported with this method. More...
 

Detailed Description

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 object), instantiate and execute various property/list/meta modules, and assemble all resulting data into a single ApiResult object.

In generator mode, a generator will be executed first to populate a second ApiPageSet object, and that object will be used for all subsequent modules.

Definition at line 38 of file ApiQuery.php.

Constructor & Destructor Documentation

◆ __construct()

ApiQuery::__construct (   $main,
  $action 
)
Parameters
$mainApiMain
$actionstring

Definition at line 127 of file ApiQuery.php.

References global.

Member Function Documentation

◆ doExport()

ApiQuery::doExport (   $pageSet,
  $result 
)
private
Parameters
$pageSetApiPageSet Pages to be exported
$resultApiResult Result to output to

Definition at line 587 of file ApiQuery.php.

References $title, $titles, $user, array(), as, ApiBase\getDB(), ContextSource\getUser(), and ApiResult\setContent().

Referenced by outputGeneralPageInfo().

◆ execute()

ApiQuery::execute ( )

Query execution happens in the following steps: #1 Create a PageSet object with any pages requested by the user #2 If using a generator, execute it to get a new ApiPageSet object #3 Instantiate all requested modules.

This way the PageSet object will know what shared data is required, and minimize DB calls. #4 Output all normalization and redirect resolution information #5 Execute all requested modules

Reimplemented from ApiBase.

Definition at line 244 of file ApiQuery.php.

References $mGeneratorContinue, $params, array(), as, ApiBase\extractRequestParams(), ApiBase\getMain(), ApiBase\getResult(), initContinue(), initModules(), instantiateModules(), mergeCacheMode(), outputGeneralPageInfo(), and wfRunHooks().

◆ getAllowedParams()

ApiQuery::getAllowedParams (   $flags = 0)

Definition at line 629 of file ApiQuery.php.

References $flags, array(), getPageSet(), ApiBase\PARAM_ISMULTI, and ApiBase\PARAM_TYPE.

◆ getCustomPrinter()

ApiQuery::getCustomPrinter ( )
Returns
ApiFormatRaw|null

Reimplemented from ApiBase.

Definition at line 222 of file ApiQuery.php.

References ApiBase\getMain(), and ApiBase\getParameter().

◆ getDescription()

ApiQuery::getDescription ( )

Returns the description string for this module.

Returns
mixed string or array of strings

Reimplemented from ApiBase.

Definition at line 733 of file ApiQuery.php.

References array().

◆ getExamples()

ApiQuery::getExamples ( )

Returns usage examples for this module.

Return false if no examples are available.

Returns
bool|string|array

Reimplemented from ApiBase.

Definition at line 750 of file ApiQuery.php.

References array().

◆ getGenerators()

ApiQuery::getGenerators ( )

Get the generators array mapping module names to class names.

Deprecated:
since 1.21, list of generators is maintained by ApiPageSet
Returns
array array(modulename => classname)

Definition at line 197 of file ApiQuery.php.

References $name, array(), as, and wfDeprecated().

◆ getHelpUrls()

ApiQuery::getHelpUrls ( )
Returns
bool|string|array Returns a false if the module has no help URL, else returns a (array of) string

Reimplemented from ApiBase.

Definition at line 758 of file ApiQuery.php.

References array().

◆ getModuleManager()

ApiQuery::getModuleManager ( )

Overrides to return this instance's module manager.

Returns
ApiModuleManager

Reimplemented from ApiBase.

Definition at line 149 of file ApiQuery.php.

References $mModuleMgr.

Referenced by getModules(), and getModuleType().

◆ getModules()

ApiQuery::getModules ( )

Get the array mapping module names to class names.

Deprecated:
since 1.21, use getModuleManager()'s methods instead
Returns
array array(modulename => classname)

Definition at line 186 of file ApiQuery.php.

References getModuleManager(), and wfDeprecated().

◆ getModuleType()

ApiQuery::getModuleType (   $moduleName)

Get whether the specified module is a prop, list or a meta query module.

Deprecated:
since 1.21, use getModuleManager()->getModuleGroup()
Parameters
string$moduleNameName of the module to find type for
Returns
mixed string or null

Definition at line 215 of file ApiQuery.php.

References getModuleManager().

◆ getNamedDB()

ApiQuery::getNamedDB (   $name,
  $db,
  $groups 
)

Get the query database connection with the given name.

If no such connection has been requested before, it will be created. Subsequent calls with the same $name will return the same connection as the first, regardless of the values of $db and $groups

Parameters
string$nameName to assign to the database connection
int$dbOne of the DB_* constants
array$groupsQuery groups
Returns
DatabaseBase

Definition at line 163 of file ApiQuery.php.

References $name, ApiBase\profileDBIn(), ApiBase\profileDBOut(), and wfGetDB().

◆ getPageSet()

ApiQuery::getPageSet ( )

Gets the set of pages the user has requested (or generated)

Returns
ApiPageSet

Definition at line 177 of file ApiQuery.php.

References $mPageSet.

Referenced by getAllowedParams(), getParamDescription(), getPossibleErrors(), and outputGeneralPageInfo().

◆ getParamDescription()

ApiQuery::getParamDescription ( )

Returns an array of parameter descriptions.

Don't call this function directly: use getFinalParamDescription() to allow hooks to modify descriptions as needed.

Returns
array|bool False on no parameter descriptions

Reimplemented from ApiBase.

Definition at line 712 of file ApiQuery.php.

References array(), and getPageSet().

◆ getPossibleErrors()

ApiQuery::getPossibleErrors ( )

Returns a list of all possible errors returned by the module.

Don't call this function directly: use getFinalPossibleErrors() to allow hooks to modify parameters as needed.

Returns
array in the format of array( key, param1, param2, ... ) or array( 'code' => ..., 'info' => ... )

Reimplemented from ApiBase.

Definition at line 743 of file ApiQuery.php.

References ApiBase\getFinalPossibleErrors(), and getPageSet().

◆ initContinue()

ApiQuery::initContinue ( $pagesetParams,
$completeModules 
)
private

Parse 'continue' parameter into the list of complete modules and a list of generator parameters.

Parameters
array | null$pagesetParamsreturns list of generator params or null if pageset is done
array | null$completeModulesreturns list of finished modules (as keys), or null if legacy

Definition at line 353 of file ApiQuery.php.

References array(), and ApiBase\dieContinueUsageIf().

Referenced by execute().

◆ initModules()

ApiQuery::initModules (   $allModules,
  $completeModules,
  $usePageset 
)
private

Validate sub-modules, filter out completed ones, and do requestExtraData()

Parameters
array$allModulesAn dict of name=>instance of all modules requested by the client
array | null$completeModuleslist of finished modules, or null if legacy continue
bool$usePagesetTrue if pageset will be executed
Returns
array of modules to be processed during this execution

Definition at line 389 of file ApiQuery.php.

References array(), as, ApiBase\dieContinueUsageIf(), ApiBase\dieUsageMsgOrDebug(), and ContextSource\getRequest().

Referenced by execute().

◆ instantiateModules()

ApiQuery::instantiateModules ( $modules,
  $param 
)
private

Create instances of all modules requested by the client.

Parameters
array$modulesto append instantiated modules to
string$paramParameter name to read modules from

Definition at line 448 of file ApiQuery.php.

References as, and ApiBase\dieDebug().

Referenced by execute().

◆ makeHelpMsg()

ApiQuery::makeHelpMsg ( )

Override the parent to generate help messages for all available query modules.

Returns
string

Reimplemented from ApiBase.

Definition at line 660 of file ApiQuery.php.

References makeHelpMsgHelper().

◆ makeHelpMsgHelper()

ApiQuery::makeHelpMsgHelper (   $group)
private

For all modules of a given group, generate help messages and join them together.

Parameters
string$groupModule group
Returns
string

Definition at line 683 of file ApiQuery.php.

References $name, array(), as, and ApiMain\makeHelpMsgHeader().

Referenced by makeHelpMsg().

◆ mergeCacheMode()

ApiQuery::mergeCacheMode (   $cacheMode,
  $modCacheMode 
)
protected

Update a cache mode string, applying the cache mode of a new module to it.

The cache mode may increase in the level of privacy, but public modules added to private data do not decrease the level of privacy.

Parameters
$cacheModestring
$modCacheModestring
Returns
string

Definition at line 429 of file ApiQuery.php.

Referenced by execute().

◆ outputGeneralPageInfo()

ApiQuery::outputGeneralPageInfo ( )
private

Appends an element for each page in the current pageSet with the most general information (id, title), plus any title normalizations and missing or invalid title/pageids/revids.

Definition at line 468 of file ApiQuery.php.

References $title, ApiQueryBase\addTitleInfo(), array(), as, doExport(), SpecialPageFactory\exists(), getPageSet(), ApiBase\getResult(), NS_MEDIA, and wfFindFile().

Referenced by execute().

◆ setGeneratorContinue()

ApiQuery::setGeneratorContinue (   $module,
  $paramName,
  $paramValue 
)

This method is called by the generator base when generator in the smart-continue mode tries to set 'query-continue' value.

ApiQuery stores those values separately until the post-processing when it is known if the generation should continue or repeat.

Parameters
ApiQueryGeneratorBase$modulegenerator module
string$paramName
mixed$paramValue
Returns
bool true if processed, false if this is a legacy continue

Definition at line 570 of file ApiQuery.php.

References array().

◆ shouldCheckMaxlag()

ApiQuery::shouldCheckMaxlag ( )

Indicates if this module needs maxlag to be checked.

Returns
bool

Reimplemented from ApiBase.

Definition at line 708 of file ApiQuery.php.

Member Data Documentation

◆ $mGeneratorContinue

ApiQuery::$mGeneratorContinue
private

Definition at line 120 of file ApiQuery.php.

Referenced by execute().

◆ $mModuleMgr

ApiQuery::$mModuleMgr
private

Definition at line 119 of file ApiQuery.php.

Referenced by getModuleManager().

◆ $mNamedDB

ApiQuery::$mNamedDB = array()
private

Definition at line 118 of file ApiQuery.php.

◆ $mPageSet

ApiPageSet ApiQuery::$mPageSet
private

Definition at line 115 of file ApiQuery.php.

Referenced by getPageSet().

◆ $mParams

ApiQuery::$mParams
private

Definition at line 117 of file ApiQuery.php.

◆ $mUseLegacyContinue

ApiQuery::$mUseLegacyContinue
private

Definition at line 121 of file ApiQuery.php.

◆ $QueryListModules

ApiQuery::$QueryListModules
staticprivate

Definition at line 67 of file ApiQuery.php.

◆ $QueryMetaModules

ApiQuery::$QueryMetaModules
staticprivate
Initial value:
'allmessages' => 'ApiQueryAllMessages',
'siteinfo' => 'ApiQuerySiteinfo',
'userinfo' => 'ApiQueryUserInfo',
'filerepoinfo' => 'ApiQueryFileRepoInfo',
)

Definition at line 106 of file ApiQuery.php.

◆ $QueryPropModules

ApiQuery::$QueryPropModules
staticprivate
Initial value:
'categories' => 'ApiQueryCategories',
'categoryinfo' => 'ApiQueryCategoryInfo',
'contributors' => 'ApiQueryContributors',
'duplicatefiles' => 'ApiQueryDuplicateFiles',
'extlinks' => 'ApiQueryExternalLinks',
'images' => 'ApiQueryImages',
'imageinfo' => 'ApiQueryImageInfo',
'info' => 'ApiQueryInfo',
'links' => 'ApiQueryLinks',
'iwlinks' => 'ApiQueryIWLinks',
'langlinks' => 'ApiQueryLangLinks',
'pageprops' => 'ApiQueryPageProps',
'redirects' => 'ApiQueryRedirects',
'revisions' => 'ApiQueryRevisions',
'stashimageinfo' => 'ApiQueryStashImageInfo',
'templates' => 'ApiQueryLinks',
)

Definition at line 44 of file ApiQuery.php.


The documentation for this class was generated from the following file:
array
the array() calling protocol came about after MediaWiki 1.4rc1.
List of Api Query prop modules.