MediaWiki REL1_30
ApiTokens.php
Go to the documentation of this file.
1<?php
31class ApiTokens extends ApiBase {
32
33 public function execute() {
34 $this->addDeprecation(
35 [ 'apiwarn-deprecation-withreplacement', 'action=tokens', 'action=query&meta=tokens' ],
36 'action=tokens'
37 );
38
40 $res = [
41 ApiResult::META_TYPE => 'assoc',
42 ];
43
44 $types = $this->getTokenTypes();
45 foreach ( $params['type'] as $type ) {
46 $val = call_user_func( $types[$type], null, null );
47
48 if ( $val === false ) {
49 $this->addWarning( [ 'apiwarn-tokennotallowed', $type ] );
50 } else {
51 $res[$type . 'token'] = $val;
52 }
53 }
54
55 $this->getResult()->addValue( null, $this->getModuleName(), $res );
56 }
57
58 private function getTokenTypes() {
59 // If we're in a mode that breaks the same-origin policy, no tokens can
60 // be obtained
61 if ( $this->lacksSameOriginSecurity() ) {
62 return [];
63 }
64
65 static $types = null;
66 if ( $types ) {
67 return $types;
68 }
69 $types = [ 'patrol' => [ 'ApiQueryRecentChanges', 'getPatrolToken' ] ];
70 $names = [ 'edit', 'delete', 'protect', 'move', 'block', 'unblock',
71 'email', 'import', 'watch', 'options' ];
72 foreach ( $names as $name ) {
73 $types[$name] = [ 'ApiQueryInfo', 'get' . ucfirst( $name ) . 'Token' ];
74 }
75 Hooks::run( 'ApiTokensGetTokenTypes', [ &$types ] );
76
77 // For forwards-compat, copy any token types from ApiQueryTokens that
78 // we don't already have something for.
79 $user = $this->getUser();
80 $request = $this->getRequest();
81 foreach ( ApiQueryTokens::getTokenTypeSalts() as $name => $salt ) {
82 if ( !isset( $types[$name] ) ) {
83 $types[$name] = function () use ( $salt, $user, $request ) {
84 return ApiQueryTokens::getToken( $user, $request->getSession(), $salt )->toString();
85 };
86 }
87 }
88
89 ksort( $types );
90
91 return $types;
92 }
93
94 public function isDeprecated() {
95 return true;
96 }
97
98 public function getAllowedParams() {
99 return [
100 'type' => [
101 ApiBase::PARAM_DFLT => 'edit',
103 ApiBase::PARAM_TYPE => array_keys( $this->getTokenTypes() ),
104 ],
105 ];
106 }
107
108 protected function getExamplesMessages() {
109 return [
110 'action=tokens'
111 => 'apihelp-tokens-example-edit',
112 'action=tokens&type=email|move'
113 => 'apihelp-tokens-example-emailmove',
114 ];
115 }
116}
This abstract class implements many basic API functions, and is the base of all API classes.
Definition ApiBase.php:41
const PARAM_TYPE
(string|string[]) Either an array of allowed value strings, or a string type as described below.
Definition ApiBase.php:91
const PARAM_DFLT
(null|boolean|integer|string) Default value of the parameter.
Definition ApiBase.php:52
extractRequestParams( $parseLimit=true)
Using getAllowedParams(), this function makes an array of the values provided by the user,...
Definition ApiBase.php:740
addDeprecation( $msg, $feature, $data=[])
Add a deprecation warning for this module.
Definition ApiBase.php:1793
getResult()
Get the result object.
Definition ApiBase.php:632
addWarning( $msg, $code=null, $data=null)
Add a warning for this module.
Definition ApiBase.php:1779
getModuleName()
Get the name of the module being executed by this instance.
Definition ApiBase.php:512
const PARAM_ISMULTI
(boolean) Accept multiple pipe-separated values for this parameter (e.g.
Definition ApiBase.php:55
lacksSameOriginSecurity()
Returns true if the current request breaks the same-origin policy.
Definition ApiBase.php:560
static getTokenTypeSalts()
Get the salts for known token types.
static getToken(User $user, MediaWiki\Session\Session $session, $salt)
Get a token from a salt.
const META_TYPE
Key for the 'type' metadata item.
execute()
Evaluates the parameters, performs the requested query, and sets up the result.
Definition ApiTokens.php:33
getExamplesMessages()
Returns usage examples for this module.
getTokenTypes()
Definition ApiTokens.php:58
isDeprecated()
Indicates whether this module is deprecated.
Definition ApiTokens.php:94
getAllowedParams()
Returns an array of allowed parameters (parameter name) => (default value) or (parameter name) => (ar...
Definition ApiTokens.php:98
getUser()
Get the User object.
getRequest()
Get the WebRequest object.
$res
Definition database.txt:21
do that in ParserLimitReportFormat instead use this to modify the parameters of the image all existing parser cache entries will be invalid To avoid you ll need to handle that somehow(e.g. with the RejectParserCacheValue hook) because MediaWiki won 't do it for you. & $defaults also a ContextSource after deleting those rows but within the same transaction you ll probably need to make sure the header is varied on $request
Definition hooks.txt:2775
Allows to change the fields on the form that will be generated $name
Definition hooks.txt:302
$params