MediaWiki
1.33.0
|
This is the main query class. More...
Public Member Functions | |
__construct (ApiMain $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 () | |
getHelpUrls () | |
Return links to more detailed help pages about the module. More... | |
getModuleManager () | |
Overrides to return this instance's module manager. 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... | |
isReadMode () | |
Indicates whether this module requires read rights. More... | |
Public Member Functions inherited from ApiBase | |
__construct (ApiMain $mainModule, $moduleName, $modulePrefix='') | |
shouldCheckMaxlag () | |
Indicates if this module needs maxlag to be checked. More... | |
isWriteMode () | |
Indicates whether this module requires write mode. More... | |
mustBePosted () | |
Indicates whether this module must be called with a POST request. More... | |
isDeprecated () | |
Indicates whether this module is deprecated. More... | |
isInternal () | |
Indicates whether this module is "internal" Internal API modules are not (yet) intended for 3rd party use and may be unstable. More... | |
needsToken () | |
Returns the token type this module requires in order to execute. More... | |
getConditionalRequestData ( $condition) | |
Returns data for HTTP conditional request mechanisms. 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... | |
getMain () | |
Get the main module. More... | |
isMain () | |
Returns true if this module is the main module ($this === $this->mMainModule), false otherwise. More... | |
getParent () | |
Get the parent of this module. More... | |
lacksSameOriginSecurity () | |
Returns true if the current request breaks the same-origin policy. More... | |
getModulePath () | |
Get the path to this module. More... | |
getModuleFromPath ( $path) | |
Get a module from its module path. More... | |
getResult () | |
Get the result object. More... | |
getErrorFormatter () | |
Get the error formatter. More... | |
getContinuationManager () | |
Get the continuation manager. More... | |
setContinuationManager (ApiContinuationManager $manager=null) | |
Set the continuation manager. More... | |
dynamicParameterDocumentation () | |
Indicate if the module supports dynamically-determined parameters that cannot be included in self::getAllowedParams(). More... | |
encodeParamName ( $paramName) | |
This method mangles parameter name based on the prefix supplied to the constructor. More... | |
extractRequestParams ( $options=[]) | |
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... | |
requireOnlyOneParameter ( $params, $required) | |
Die if none or more than one of a certain set of parameters is set and not false. More... | |
requireMaxOneParameter ( $params, $required) | |
Die if more than one of a certain set of parameters is set and not false. More... | |
requireAtLeastOneParameter ( $params, $required) | |
Die if none of a certain set of parameters is set and not false. More... | |
requirePostedParameters ( $params, $prefix='prefix') | |
Die if any of the specified parameters were found in the query part of the URL rather than the post body. More... | |
getTitleOrPageId ( $params, $load=false) | |
Get a WikiPage object from a title or pageid param, if possible. More... | |
getTitleFromTitleOrPageId ( $params) | |
Get a Title object from a title or pageid param, if possible. More... | |
validateToken ( $token, array $params) | |
Validate the supplied token. More... | |
getWatchlistUser ( $params) | |
Gets the user for whom to get the watchlist. More... | |
errorArrayToStatus (array $errors, User $user=null) | |
Turn an array of message keys or key+param arrays into a Status. More... | |
addBlockInfoToStatus (StatusValue $status, User $user=null) | |
Add block info to block messages in a Status. More... | |
addWarning ( $msg, $code=null, $data=null) | |
Add a warning for this module. More... | |
addDeprecation ( $msg, $feature, $data=[]) | |
Add a deprecation warning for this module. More... | |
addError ( $msg, $code=null, $data=null) | |
Add an error for this module without aborting. More... | |
addMessagesFromStatus (StatusValue $status, $types=[ 'warning', 'error'], array $filter=[]) | |
Add warnings and/or errors from a Status. More... | |
dieWithError ( $msg, $code=null, $data=null, $httpCode=null) | |
Abort execution with an error. More... | |
dieWithException ( $exception, array $options=[]) | |
Abort execution with an error derived from an exception. More... | |
dieBlocked (Block $block) | |
Throw an ApiUsageException, which will (if uncaught) call the main module's error handler and die with an error message including block info. More... | |
dieStatus (StatusValue $status) | |
Throw an ApiUsageException based on the Status object. More... | |
dieReadOnly () | |
Helper function for readonly errors. More... | |
checkUserRightsAny ( $rights, $user=null) | |
Helper function for permission-denied errors. More... | |
checkTitleUserPermissions (Title $title, $actions, $options=[]) | |
Helper function for permission-denied errors. More... | |
dieWithErrorOrDebug ( $msg, $code=null, $data=null, $httpCode=null) | |
Will only set a warning instead of failing if the global $wgDebugAPI is set to true. More... | |
logFeatureUsage ( $feature) | |
Write logging information for API features to a debug log, for usage analysis. More... | |
getFinalSummary () | |
Get final module summary. More... | |
getFinalDescription () | |
Get final module description, 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... | |
getFinalParamDescription () | |
Get final parameter descriptions, after hooks have had a chance to tweak it as needed. More... | |
modifyHelp (array &$help, array $options, array &$tocData) | |
Called from ApiHelp before the pieces are joined together and returned. 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 () | |
getContext () | |
Get the base IContextSource object. More... | |
getLanguage () | |
getOutput () | |
getRequest () | |
getSkin () | |
getStats () | |
getTiming () | |
getTitle () | |
getUser () | |
getWikiPage () | |
Get the WikiPage object. More... | |
msg ( $key) | |
Get a Message object with context set Parameters are the same as wfMessage() More... | |
setContext (IContextSource $context) | |
Protected Member Functions | |
getExamplesMessages () | |
Returns usage examples for this module. More... | |
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 | |
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... | |
getWebUITokenSalt (array $params) | |
Fetch the salt used in the Web UI corresponding to this module. More... | |
getDB () | |
Gets a default replica DB connection object. More... | |
getParameter ( $paramName, $parseLimit=true) | |
Get a value for the given parameter. More... | |
getWatchlistValue ( $watchlist, $titleObj, $userOption=null) | |
Return true if we're to watch the page, false if not, null if no change. More... | |
getParameterFromSettings ( $paramName, $paramSettings, $parseLimit) | |
Using the settings determine the value for the given parameter. More... | |
handleParamNormalization ( $paramName, $value, $rawValue) | |
Handle when a parameter was Unicode-normalized. More... | |
explodeMultiValue ( $value, $limit) | |
Split a multi-valued parameter string, like explode() More... | |
parseMultiValue ( $valueName, $value, $allowMultiple, $allowedValues, $allSpecifier=null, $limit1=null, $limit2=null) | |
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... | |
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 parameters of type 'timestamp'. More... | |
setWatch ( $watch, $titleObj, $userOption=null) | |
Set a watch (or unwatch) based the based on a watchlist parameter. More... | |
useTransactionalTimeLimit () | |
Call wfTransactionalTimeLimit() if this request was POSTed. More... | |
filterIDs ( $fields, array $ids) | |
Filter out-of-range values from a list of positive integer IDs. More... | |
dieContinueUsageIf ( $condition) | |
Die with the 'badcontinue' error. More... | |
getSummaryMessage () | |
Return the summary message. More... | |
getExtendedDescription () | |
Return the extended help text message. More... | |
getHelpFlags () | |
Generates the list of flags for the help screen and for action=paraminfo. More... | |
getModuleSourceInfo () | |
Returns information about the source of this module, if known. More... | |
getDescription () | |
Returns the description string for this module. More... | |
getParamDescription () | |
Returns an array of parameter descriptions. More... | |
getExamples () | |
Returns usage examples for this module. More... | |
getDescriptionMessage () | |
Return the description message. More... | |
Private Member Functions | |
doExport ( $pageSet, $result) | |
instantiateModules (&$modules, $param) | |
Create instances of all modules requested by the client. 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 | |
$mModuleMgr | |
$mNamedDB = [] | |
ApiPageSet | $mPageSet |
$mParams | |
Static Private Attributes | |
static array | $QueryListModules |
List of Api Query list modules. More... | |
static array | $QueryMetaModules |
List of Api Query meta modules. More... | |
static array | $QueryPropModules |
List of Api Query prop modules. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from ApiBase | |
static | makeMessage ( $msg, IContextSource $context, array $params=null) |
Create a Message from a string or array. More... | |
static | truncateArray (&$arr, $limit) |
Truncate an array to a certain length. More... | |
Public Attributes inherited from ApiBase | |
string | $mModulePrefix |
const | ALL_DEFAULT_STRING = '*' |
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 |
Fast query, standard limit. More... | |
const | LIMIT_BIG2 = 5000 |
Fast query, apihighlimits limit. More... | |
const | LIMIT_SML1 = 50 |
Slow query, standard limit. More... | |
const | LIMIT_SML2 = 500 |
Slow query, apihighlimits limit. More... | |
const | PARAM_DFLT = 0 |
(null|boolean|integer|string) Default value of the parameter. More... | |
const | PARAM_ISMULTI = 1 |
(boolean) Accept multiple pipe-separated values for this parameter (e.g. More... | |
const | PARAM_TYPE = 2 |
(string|string[]) Either an array of allowed value strings, or a string type as described below. More... | |
const | PARAM_MAX = 3 |
(integer) Max value allowed for the parameter, for PARAM_TYPE 'integer' and 'limit'. More... | |
const | PARAM_MAX2 = 4 |
(integer) Max value allowed for the parameter for users with the apihighlimits right, for PARAM_TYPE 'limit'. More... | |
const | PARAM_MIN = 5 |
(integer) Lowest value allowed for the parameter, for PARAM_TYPE 'integer' and 'limit'. More... | |
const | PARAM_ALLOW_DUPLICATES = 6 |
(boolean) Allow the same value to be set more than once when PARAM_ISMULTI is true? More... | |
const | PARAM_DEPRECATED = 7 |
(boolean) Is the parameter deprecated (will show a warning)? More... | |
const | PARAM_REQUIRED = 8 |
(boolean) Is the parameter required? More... | |
const | PARAM_RANGE_ENFORCE = 9 |
(boolean) For PARAM_TYPE 'integer', enforce PARAM_MIN and PARAM_MAX? More... | |
const | PARAM_HELP_MSG = 10 |
(string|array|Message) Specify an alternative i18n documentation message for this parameter. More... | |
const | PARAM_HELP_MSG_APPEND = 11 |
((string|array|Message)[]) Specify additional i18n messages to append to the normal message for this parameter. More... | |
const | PARAM_HELP_MSG_INFO = 12 |
(array) Specify additional information tags for the parameter. More... | |
const | PARAM_VALUE_LINKS = 13 |
(string[]) When PARAM_TYPE is an array, this may be an array mapping those values to page titles which will be linked in the help. More... | |
const | PARAM_HELP_MSG_PER_VALUE = 14 |
((string|array|Message)[]) When PARAM_TYPE is an array, this is an array mapping those values to $msg for ApiBase::makeMessage(). More... | |
const | PARAM_SUBMODULE_MAP = 15 |
(string[]) When PARAM_TYPE is 'submodule', map parameter values to submodule paths. More... | |
const | PARAM_SUBMODULE_PARAM_PREFIX = 16 |
(string) When PARAM_TYPE is 'submodule', used to indicate the 'g' prefix added by ApiQueryGeneratorBase (and similar if anything else ever does that). More... | |
const | PARAM_ALL = 17 |
(boolean|string) When PARAM_TYPE has a defined set of values and PARAM_ISMULTI is true, this allows for an asterisk ('*') to be passed in place of a pipe-separated list of every possible value. More... | |
const | PARAM_EXTRA_NAMESPACES = 18 |
(int[]) When PARAM_TYPE is 'namespace', include these as additional possible values. More... | |
const | PARAM_SENSITIVE = 19 |
(boolean) Is the parameter sensitive? Note 'password'-type fields are always sensitive regardless of the value of this field. More... | |
const | PARAM_DEPRECATED_VALUES = 20 |
(array) When PARAM_TYPE is an array, this indicates which of the values are deprecated. More... | |
const | PARAM_ISMULTI_LIMIT1 = 21 |
(integer) Maximum number of values, for normal users. More... | |
const | PARAM_ISMULTI_LIMIT2 = 22 |
(integer) Maximum number of values, for users with the apihighimits right. More... | |
const | PARAM_MAX_BYTES = 23 |
(integer) Maximum length of a string in bytes (in UTF-8 encoding). More... | |
const | PARAM_MAX_CHARS = 24 |
(integer) Maximum length of a string in characters (unicode codepoints). More... | |
const | PARAM_TEMPLATE_VARS = 25 |
(array) Indicate that this is a templated parameter, and specify replacements. More... | |
Static Protected Member Functions inherited from ApiBase | |
static | dieDebug ( $method, $message) |
Internal code errors should be reported with this method. More... | |
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 36 of file ApiQuery.php.
ApiQuery::__construct | ( | ApiMain | $main, |
$action | |||
) |
ApiMain | $main | |
string | $action |
Definition at line 133 of file ApiQuery.php.
References ContextSource\getConfig(), and Hooks\run().
|
private |
ApiPageSet | $pageSet | Pages to be exported |
ApiResult | $result | Result to output to |
Definition at line 428 of file ApiQuery.php.
References $title, $titles, $user, as, captcha-old\count, ApiBase\getDB(), ContextSource\getUser(), ApiResult\META_BC_SUBELEMENTS, and ApiResult\NO_SIZE_CHECK.
Referenced by outputGeneralPageInfo().
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 212 of file ApiQuery.php.
References $data, $modules, $params, ApiResult\ADD_ON_TOP, as, ApiBase\extractRequestParams(), ApiBase\getMain(), ApiBase\getResult(), instantiateModules(), mergeCacheMode(), ApiResult\NO_SIZE_CHECK, outputGeneralPageInfo(), Hooks\run(), and ApiBase\setContinuationManager().
ApiQuery::getAllowedParams | ( | $flags = 0 | ) |
Definition at line 465 of file ApiQuery.php.
References getPageSet(), ApiBase\PARAM_HELP_MSG, ApiBase\PARAM_ISMULTI, and ApiBase\PARAM_TYPE.
ApiQuery::getCustomPrinter | ( | ) |
Reimplemented from ApiBase.
Definition at line 190 of file ApiQuery.php.
References ApiBase\getMain(), and ApiBase\getParameter().
|
protected |
Returns usage examples for this module.
Return value has query strings as keys, with values being either strings (message key), arrays (message key + parameter), or Message objects.
Do not call this base class implementation when overriding this method.
Reimplemented from ApiBase.
Definition at line 526 of file ApiQuery.php.
ApiQuery::getHelpUrls | ( | ) |
Return links to more detailed help pages about the module.
Reimplemented from ApiBase.
Definition at line 536 of file ApiQuery.php.
ApiQuery::getModuleManager | ( | ) |
Overrides to return this instance's module manager.
Reimplemented from ApiBase.
Definition at line 157 of file ApiQuery.php.
References $mModuleMgr.
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
string | $name | Name to assign to the database connection |
int | $db | One of the DB_* constants |
string | string[] | $groups | Query groups |
Definition at line 171 of file ApiQuery.php.
ApiQuery::getPageSet | ( | ) |
Gets the set of pages the user has requested (or generated)
Definition at line 183 of file ApiQuery.php.
References $mPageSet.
Referenced by getAllowedParams(), isReadMode(), and outputGeneralPageInfo().
|
private |
Create instances of all modules requested by the client.
array | $modules | To append instantiated modules to |
string | $param | Parameter name to read modules from |
Definition at line 302 of file ApiQuery.php.
References $modules, as, ApiBase\dieDebug(), ApiBase\dieWithErrorOrDebug(), and ContextSource\getRequest().
Referenced by execute(), and isReadMode().
ApiQuery::isReadMode | ( | ) |
Indicates whether this module requires read rights.
Reimplemented from ApiBase.
Definition at line 495 of file ApiQuery.php.
References $modules, $params, as, ApiBase\extractRequestParams(), getPageSet(), and instantiateModules().
|
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.
string | $cacheMode | |
string | $modCacheMode |
Definition at line 283 of file ApiQuery.php.
Referenced by execute().
|
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 326 of file ApiQuery.php.
References $data, $title, ApiQueryBase\addTitleInfo(), as, captcha-old\count, ApiBase\dieWithError(), doExport(), getPageSet(), ApiBase\getResult(), ApiResult\setArrayType(), ApiResult\setIndexedTagName(), ApiResult\stripMetadataNonRecursive(), and true.
Referenced by execute().
|
private |
Definition at line 127 of file ApiQuery.php.
Referenced by getModuleManager().
|
private |
Definition at line 126 of file ApiQuery.php.
|
private |
Definition at line 123 of file ApiQuery.php.
Referenced by getPageSet().
|
private |
Definition at line 125 of file ApiQuery.php.
|
staticprivate |
List of Api Query list modules.
Definition at line 69 of file ApiQuery.php.
|
staticprivate |
List of Api Query meta modules.
Definition at line 111 of file ApiQuery.php.
|
staticprivate |
List of Api Query prop modules.
Definition at line 42 of file ApiQuery.php.