MediaWiki REL1_34
|
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. | |
getAllowedParams ( $flags=0) | |
getCustomPrinter () | |
getHelpUrls () | |
Return links to more detailed help pages about the module. | |
getModuleManager () | |
Overrides to return this instance's module manager. | |
getNamedDB ( $name, $db, $groups) | |
Get the query database connection with the given name. | |
getPageSet () | |
Gets the set of pages the user has requested (or generated) | |
isReadMode () | |
Indicates whether this module requires read rights. | |
Public Member Functions inherited from ApiBase | |
__construct (ApiMain $mainModule, $moduleName, $modulePrefix='') | |
shouldCheckMaxlag () | |
Indicates if this module needs maxlag to be checked. | |
isWriteMode () | |
Indicates whether this module requires write mode. | |
mustBePosted () | |
Indicates whether this module must be called with a POST request. | |
isDeprecated () | |
Indicates whether this module is deprecated. | |
isInternal () | |
Indicates whether this module is "internal" Internal API modules are not (yet) intended for 3rd party use and may be unstable. | |
needsToken () | |
Returns the token type this module requires in order to execute. | |
getConditionalRequestData ( $condition) | |
Returns data for HTTP conditional request mechanisms. | |
getModuleName () | |
Get the name of the module being executed by this instance. | |
getModulePrefix () | |
Get parameter prefix (usually two letters or an empty string). | |
getMain () | |
Get the main module. | |
isMain () | |
Returns true if this module is the main module ($this === $this->mMainModule), false otherwise. | |
getParent () | |
Get the parent of this module. | |
lacksSameOriginSecurity () | |
Returns true if the current request breaks the same-origin policy. | |
getModulePath () | |
Get the path to this module. | |
getModuleFromPath ( $path) | |
Get a module from its module path. | |
getResult () | |
Get the result object. | |
getErrorFormatter () | |
Get the error formatter. | |
getContinuationManager () | |
Get the continuation manager. | |
setContinuationManager (ApiContinuationManager $manager=null) | |
Set the continuation manager. | |
dynamicParameterDocumentation () | |
Indicate if the module supports dynamically-determined parameters that cannot be included in self::getAllowedParams(). | |
encodeParamName ( $paramName) | |
This method mangles parameter name based on the prefix supplied to the constructor. | |
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. | |
requireOnlyOneParameter ( $params, $required) | |
Die if none or more than one of a certain set of parameters is set and not false. | |
requireMaxOneParameter ( $params, $required) | |
Die if more than one of a certain set of parameters is set and not false. | |
requireAtLeastOneParameter ( $params, $required) | |
Die if none of a certain set of parameters is set and not false. | |
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. | |
getTitleOrPageId ( $params, $load=false) | |
Get a WikiPage object from a title or pageid param, if possible. | |
getTitleFromTitleOrPageId ( $params) | |
Get a Title object from a title or pageid param, if possible. | |
validateToken ( $token, array $params) | |
Validate the supplied token. | |
getWatchlistUser ( $params) | |
Gets the user for whom to get the watchlist. | |
errorArrayToStatus (array $errors, User $user=null) | |
Turn an array of message keys or key+param arrays into a Status. | |
addBlockInfoToStatus (StatusValue $status, User $user=null) | |
Add block info to block messages in a Status. | |
addWarning ( $msg, $code=null, $data=null) | |
Add a warning for this module. | |
addDeprecation ( $msg, $feature, $data=[]) | |
Add a deprecation warning for this module. | |
addError ( $msg, $code=null, $data=null) | |
Add an error for this module without aborting. | |
addMessagesFromStatus (StatusValue $status, $types=[ 'warning', 'error'], array $filter=[]) | |
Add warnings and/or errors from a Status. | |
dieWithError ( $msg, $code=null, $data=null, $httpCode=null) | |
Abort execution with an error. | |
dieWithException ( $exception, array $options=[]) | |
Abort execution with an error derived from an exception. | |
dieBlocked (AbstractBlock $block) | |
Throw an ApiUsageException, which will (if uncaught) call the main module's error handler and die with an error message including block info. | |
dieStatus (StatusValue $status) | |
Throw an ApiUsageException based on the Status object. | |
dieReadOnly () | |
Helper function for readonly errors. | |
checkUserRightsAny ( $rights, $user=null) | |
Helper function for permission-denied errors. | |
checkTitleUserPermissions (LinkTarget $linkTarget, $actions, $options=[]) | |
Helper function for permission-denied errors. | |
dieWithErrorOrDebug ( $msg, $code=null, $data=null, $httpCode=null) | |
Will only set a warning instead of failing if the global $wgDebugAPI is set to true. | |
logFeatureUsage ( $feature) | |
Write logging information for API features to a debug log, for usage analysis. | |
getFinalSummary () | |
Get final module summary. | |
getFinalDescription () | |
Get final module description, after hooks have had a chance to tweak it as needed. | |
getFinalParams ( $flags=0) | |
Get final list of parameters, after hooks have had a chance to tweak it as needed. | |
getFinalParamDescription () | |
Get final parameter descriptions, after hooks have had a chance to tweak it as needed. | |
modifyHelp (array &$help, array $options, array &$tocData) | |
Called from ApiHelp before the pieces are joined together and returned. | |
Public Member Functions inherited from ContextSource | |
canUseWikiPage () | |
Check whether a WikiPage object can be get with getWikiPage(). | |
exportSession () | |
Export the resolved user IP, HTTP headers, user ID, and session ID. | |
getConfig () | |
getContext () | |
Get the base IContextSource object. | |
getLanguage () | |
getOutput () | |
getRequest () | |
getSkin () | |
getStats () | |
getTiming () | |
getTitle () | |
getUser () | |
getWikiPage () | |
Get the WikiPage object. | |
msg ( $key,... $params) | |
Get a Message object with context set Parameters are the same as wfMessage() | |
setContext (IContextSource $context) | |
Protected Member Functions | |
getExamplesMessages () | |
Returns usage examples for this module. | |
mergeCacheMode ( $cacheMode, $modCacheMode) | |
Update a cache mode string, applying the cache mode of a new module to it. | |
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. | |
getWebUITokenSalt (array $params) | |
Fetch the salt used in the Web UI corresponding to this module. | |
getDB () | |
Gets a default replica DB connection object. | |
getPermissionManager () | |
Obtain a PermissionManager instance that subclasses may use in their authorization checks. | |
getParameter ( $paramName, $parseLimit=true) | |
Get a value for the given parameter. | |
getWatchlistValue ( $watchlist, $titleObj, $userOption=null) | |
Return true if we're to watch the page, false if not, null if no change. | |
getParameterFromSettings ( $paramName, $paramSettings, $parseLimit) | |
Using the settings determine the value for the given parameter. | |
handleParamNormalization ( $paramName, $value, $rawValue) | |
Handle when a parameter was Unicode-normalized. | |
explodeMultiValue ( $value, $limit) | |
Split a multi-valued parameter string, like explode() | |
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. | |
validateLimit ( $paramName, &$value, $min, $max, $botMax=null, $enforceLimits=false) | |
Validate the value against the minimum and user/bot maximum limits. | |
validateTimestamp ( $value, $encParamName) | |
Validate and normalize parameters of type 'timestamp'. | |
setWatch ( $watch, $titleObj, $userOption=null) | |
Set a watch (or unwatch) based the based on a watchlist parameter. | |
useTransactionalTimeLimit () | |
Call wfTransactionalTimeLimit() if this request was POSTed. | |
filterIDs ( $fields, array $ids) | |
Filter out-of-range values from a list of positive integer IDs. | |
dieContinueUsageIf ( $condition) | |
Die with the 'badcontinue' error. | |
getSummaryMessage () | |
Return the summary message. | |
getExtendedDescription () | |
Return the extended help text message. | |
getHelpFlags () | |
Generates the list of flags for the help screen and for action=paraminfo. | |
getModuleSourceInfo () | |
Returns information about the source of this module, if known. | |
Private Member Functions | |
doExport ( $pageSet, $result) | |
instantiateModules (&$modules, $param) | |
Create instances of all modules requested by the client. | |
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. | |
Private Attributes | |
$mModuleMgr | |
$mNamedDB = [] | |
ApiPageSet | $mPageSet |
$mParams | |
Static Private Attributes | |
static array | $QueryListModules |
List of Api Query list modules. | |
static array | $QueryMetaModules |
List of Api Query meta modules. | |
static array | $QueryPropModules |
List of Api Query prop modules. | |
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. | |
Public Attributes inherited from ApiBase | |
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. | |
const | LIMIT_BIG1 = 500 |
Fast query, standard limit. | |
const | LIMIT_BIG2 = 5000 |
Fast query, apihighlimits limit. | |
const | LIMIT_SML1 = 50 |
Slow query, standard limit. | |
const | LIMIT_SML2 = 500 |
Slow query, apihighlimits limit. | |
const | PARAM_DFLT = 0 |
(null|boolean|integer|string) Default value of the parameter. | |
const | PARAM_ISMULTI = 1 |
(boolean) Accept multiple pipe-separated values for this parameter (e.g. | |
const | PARAM_TYPE = 2 |
(string|string[]) Either an array of allowed value strings, or a string type as described below. | |
const | PARAM_MAX = 3 |
(integer) Max value allowed for the parameter, for PARAM_TYPE 'integer' and 'limit'. | |
const | PARAM_MAX2 = 4 |
(integer) Max value allowed for the parameter for users with the apihighlimits right, for PARAM_TYPE 'limit'. | |
const | PARAM_MIN = 5 |
(integer) Lowest value allowed for the parameter, for PARAM_TYPE 'integer' and 'limit'. | |
const | PARAM_ALLOW_DUPLICATES = 6 |
(boolean) Allow the same value to be set more than once when PARAM_ISMULTI is true? | |
const | PARAM_DEPRECATED = 7 |
(boolean) Is the parameter deprecated (will show a warning)? | |
const | PARAM_REQUIRED = 8 |
(boolean) Is the parameter required? | |
const | PARAM_RANGE_ENFORCE = 9 |
(boolean) For PARAM_TYPE 'integer', enforce PARAM_MIN and PARAM_MAX? | |
const | PARAM_HELP_MSG = 10 |
(string|array|Message) Specify an alternative i18n documentation message for this parameter. | |
const | PARAM_HELP_MSG_APPEND = 11 |
((string|array|Message)[]) Specify additional i18n messages to append to the normal message for this parameter. | |
const | PARAM_HELP_MSG_INFO = 12 |
(array) Specify additional information tags for the parameter. | |
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. | |
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(). | |
const | PARAM_SUBMODULE_MAP = 15 |
(string[]) When PARAM_TYPE is 'submodule', map parameter values to submodule paths. | |
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). | |
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. | |
const | PARAM_EXTRA_NAMESPACES = 18 |
(int[]) When PARAM_TYPE is 'namespace', include these as additional possible values. | |
const | PARAM_SENSITIVE = 19 |
(boolean) Is the parameter sensitive? Note 'password'-type fields are always sensitive regardless of the value of this field. | |
const | PARAM_DEPRECATED_VALUES = 20 |
(array) When PARAM_TYPE is an array, this indicates which of the values are deprecated. | |
const | PARAM_ISMULTI_LIMIT1 = 21 |
(integer) Maximum number of values, for normal users. | |
const | PARAM_ISMULTI_LIMIT2 = 22 |
(integer) Maximum number of values, for users with the apihighimits right. | |
const | PARAM_MAX_BYTES = 23 |
(integer) Maximum length of a string in bytes (in UTF-8 encoding). | |
const | PARAM_MAX_CHARS = 24 |
(integer) Maximum length of a string in characters (unicode codepoints). | |
const | PARAM_TEMPLATE_VARS = 25 |
(array) Indicate that this is a templated parameter, and specify replacements. | |
Static Protected Member Functions inherited from ApiBase | |
static | dieDebug ( $method, $message) |
Internal code errors should be reported with this method. | |
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 37 of file ApiQuery.php.
ApiQuery::__construct | ( | ApiMain | $main, |
$action ) |
ApiMain | $main | |
string | $action |
Definition at line 135 of file ApiQuery.php.
References ContextSource\getConfig().
|
private |
ApiPageSet | $pageSet | Pages to be exported |
ApiResult | $result | Result to output to |
Definition at line 434 of file ApiQuery.php.
References $title, ApiBase\getDB(), ApiBase\getPermissionManager(), and ContextSource\getUser().
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 217 of file ApiQuery.php.
References $modules, ApiBase\extractRequestParams(), ApiBase\getMain(), ApiBase\getResult(), instantiateModules(), mergeCacheMode(), outputGeneralPageInfo(), and ApiBase\setContinuationManager().
ApiQuery::getAllowedParams | ( | $flags = 0 | ) |
Definition at line 471 of file ApiQuery.php.
References XmlDumpWriter\$supportedSchemas, getPageSet(), ApiBase\PARAM_DFLT, ApiBase\PARAM_HELP_MSG, ApiBase\PARAM_ISMULTI, ApiBase\PARAM_TYPE, and WikiExporter\schemaVersion().
ApiQuery::getCustomPrinter | ( | ) |
Reimplemented from ApiBase.
Definition at line 195 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 535 of file ApiQuery.php.
ApiQuery::getHelpUrls | ( | ) |
Return links to more detailed help pages about the module.
Reimplemented from ApiBase.
Definition at line 545 of file ApiQuery.php.
ApiQuery::getModuleManager | ( | ) |
Overrides to return this instance's module manager.
Reimplemented from ApiBase.
Definition at line 162 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 176 of file ApiQuery.php.
References wfGetDB().
ApiQuery::getPageSet | ( | ) |
Gets the set of pages the user has requested (or generated)
Definition at line 188 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 308 of file ApiQuery.php.
References $modules, 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 505 of file ApiQuery.php.
References $modules, ApiBase\extractRequestParams(), getPageSet(), ContextSource\getRequest(), 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 289 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 332 of file ApiQuery.php.
References $title, ApiBase\dieWithError(), doExport(), getPageSet(), ApiBase\getResult(), and true.
Referenced by execute().
|
private |
Definition at line 129 of file ApiQuery.php.
Referenced by getModuleManager().
|
private |
Definition at line 128 of file ApiQuery.php.
|
private |
Definition at line 125 of file ApiQuery.php.
Referenced by getPageSet().
|
private |
Definition at line 127 of file ApiQuery.php.
|
staticprivate |
List of Api Query list modules.
Definition at line 70 of file ApiQuery.php.
|
staticprivate |
List of Api Query meta modules.
Definition at line 112 of file ApiQuery.php.
|
staticprivate |
List of Api Query prop modules.
Definition at line 43 of file ApiQuery.php.