MediaWiki REL1_28
|
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='') | |
setWarning ( $warning) | |
Set warning section for this module. | |
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. | |
dieBlocked (Block $block) | |
Throw a UsageException, which will (if uncaught) call the main module's error handler and die with an error message including block info. | |
getErrorFromStatus ( $status, &$extraData=null) | |
Get error (as code, string) from a Status object. | |
dieStatus ( $status) | |
Throw a UsageException based on the errors in the Status object. | |
dieReadOnly () | |
Helper function for readonly errors. | |
dieUsageMsg ( $error) | |
Output the error message related to a certain array. | |
dieUsageMsgOrDebug ( $error) | |
Will only set a warning instead of failing if the global $wgDebugAPI is set to true. | |
parseMsg ( $error) | |
Return the error message related to a certain array. | |
logFeatureUsage ( $feature) | |
Write logging information for API features to a debug log, for usage analysis. | |
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 ( $manager) | |
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 ( $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. | |
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. | |
validateToken ( $token, array $params) | |
Validate the supplied token. | |
getWatchlistUser ( $params) | |
Gets the user for whom to get the watchlist. | |
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. | |
getModuleProfileName ( $db=false) | |
profileIn () | |
profileOut () | |
safeProfileOut () | |
getProfileTime () | |
profileDBIn () | |
profileDBOut () | |
getProfileDBTime () | |
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 () | |
Get the Config object. | |
getContext () | |
Get the base IContextSource object. | |
getLanguage () | |
Get the Language object. | |
getOutput () | |
Get the OutputPage object. | |
getRequest () | |
Get the WebRequest object. | |
getSkin () | |
Get the Skin object. | |
getStats () | |
Get the Stats object. | |
getTiming () | |
Get the Timing object. | |
getTitle () | |
Get the Title object. | |
getUser () | |
Get the User object. | |
getWikiPage () | |
Get the WikiPage object. | |
msg () | |
Get a Message object with context set Parameters are the same as wfMessage() | |
setContext (IContextSource $context) | |
Set the IContextSource object. | |
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 | |
dieContinueUsageIf ( $condition) | |
Die with the $prefix. | |
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. | |
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) | |
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 of parameters of type 'timestamp'. | |
setWatch ( $watch, $titleObj, $userOption=null) | |
Set a watch (or unwatch) based the based on a watchlist parameter. | |
getDescriptionMessage () | |
Return the description 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. | |
getDescription () | |
Returns the description string for this module. | |
getParamDescription () | |
Returns an array of parameter descriptions. | |
getExamples () | |
Returns usage examples for this module. | |
useTransactionalTimeLimit () | |
Call wfTransactionalTimeLimit() if this request was POSTed. | |
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 | truncateArray (&$arr, $limit) |
Truncate an array to a certain length. | |
static | makeMessage ( $msg, IContextSource $context, array $params=null) |
Create a Message from a string or array. | |
Public Attributes inherited from ApiBase | |
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_SENSITIVE = 17 |
(boolean) Is the parameter sensitive? Note 'password'-type fields are always sensitive regardless of the value of this field. | |
Static Public Attributes inherited from ApiBase | |
static | $messageMap |
Array that maps message keys to error messages. | |
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 38 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, $titles, $user, as, 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 214 of file ApiQuery.php.
References $modules, $params, ApiResult\ADD_ON_TOP, as, ApiBase\extractRequestParams(), ApiBase\getMain(), ApiBase\getResult(), instantiateModules(), mergeCacheMode(), ApiResult\NO_SIZE_CHECK, outputGeneralPageInfo(), and ApiBase\setContinuationManager().
ApiQuery::getAllowedParams | ( | $flags = 0 | ) |
Definition at line 471 of file ApiQuery.php.
References $flags, getPageSet(), ApiBase\PARAM_HELP_MSG, ApiBase\PARAM_ISMULTI, and ApiBase\PARAM_TYPE.
ApiQuery::getCustomPrinter | ( | ) |
Reimplemented from ApiBase.
Definition at line 192 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 532 of file ApiQuery.php.
ApiQuery::getHelpUrls | ( | ) |
Return links to more detailed help pages about the module.
Reimplemented from ApiBase.
Definition at line 542 of file ApiQuery.php.
ApiQuery::getModuleManager | ( | ) |
Overrides to return this instance's module manager.
Reimplemented from ApiBase.
Definition at line 159 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 |
array | $groups | Query groups |
Definition at line 173 of file ApiQuery.php.
ApiQuery::getPageSet | ( | ) |
Gets the set of pages the user has requested (or generated)
Definition at line 185 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 304 of file ApiQuery.php.
References $modules, as, ApiBase\dieDebug(), ApiBase\dieUsageMsgOrDebug(), and ContextSource\getRequest().
Referenced by execute(), and isReadMode().
ApiQuery::isReadMode | ( | ) |
Indicates whether this module requires read rights.
Reimplemented from ApiBase.
Definition at line 501 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 285 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 328 of file ApiQuery.php.
References $title, ApiQueryBase\addTitleInfo(), as, ApiBase\dieUsage(), doExport(), getPageSet(), ApiBase\getResult(), ApiResult\setArrayType(), ApiResult\setIndexedTagName(), ApiResult\stripMetadataNonRecursive(), 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 71 of file ApiQuery.php.
|
staticprivate |
List of Api Query meta modules.
Definition at line 113 of file ApiQuery.php.
|
staticprivate |
List of Api Query prop modules.
Definition at line 44 of file ApiQuery.php.