MediaWiki  master
ApiFormatPhp.php
Go to the documentation of this file.
1 <?php
27 class ApiFormatPhp extends ApiFormatBase {
28 
29  public function getMimeType() {
30  return 'application/vnd.php.serialized';
31  }
32 
36  public function execute() {
37  $params = $this->extractRequestParams();
38 
39  switch ( $params['formatversion'] ) {
40  case 1:
41  $transforms = [
42  'BC' => [],
43  'Types' => [],
44  'Strip' => 'all',
45  ];
46  break;
47 
48  case 2:
49  case 'latest':
50  $transforms = [
51  'Types' => [],
52  'Strip' => 'all',
53  ];
54  break;
55 
56  default:
57  // Should have been caught during parameter validation
58  $this->dieDebug( __METHOD__, 'Unknown value for \'formatversion\'' );
59  }
60  $text = serialize( $this->getResult()->getResultData( null, $transforms ) );
61 
62  // T68776: OutputHandler::mangleFlashPolicy() avoids a nasty bug in
63  // Flash, but what it does isn't friendly for the API. There's nothing
64  // we can do here that isn't actively broken in some manner, so let's
65  // just be broken in a useful manner.
66  if ( $this->getConfig()->get( 'MangleFlashPolicy' ) &&
67  in_array( 'MediaWiki\\OutputHandler::handle', ob_list_handlers(), true ) &&
68  preg_match( '/<\s*cross-domain-policy(?=\s|>)/i', $text )
69  ) {
70  $this->dieWithError( 'apierror-formatphp', 'internalerror' );
71  }
72 
73  $this->printText( $text );
74  }
75 
76  public function getAllowedParams() {
77  $ret = parent::getAllowedParams() + [
78  'formatversion' => [
79  ApiBase::PARAM_TYPE => [ '1', '2', 'latest' ],
80  ApiBase::PARAM_DFLT => '1',
81  ApiBase::PARAM_HELP_MSG => 'apihelp-php-param-formatversion',
82  ],
83  ];
84  return $ret;
85  }
86 }
ContextSource\getConfig
getConfig()
Definition: ContextSource.php:67
ApiBase\dieWithError
dieWithError( $msg, $code=null, $data=null, $httpCode=null)
Abort execution with an error.
Definition: ApiBase.php:1382
ApiBase\PARAM_HELP_MSG
const PARAM_HELP_MSG
(string|array|Message) Specify an alternative i18n documentation message for this parameter.
Definition: ApiBase.php:107
ApiBase\PARAM_TYPE
const PARAM_TYPE
(boolean) Inverse of IntegerDef::PARAM_IGNORE_RANGE
Definition: ApiBase.php:71
ApiFormatBase
This is the abstract base class for API formatters.
Definition: ApiFormatBase.php:30
ApiBase\getResult
getResult()
Get the result object.
Definition: ApiBase.php:565
ApiFormatPhp\execute
execute()
SecurityCheck-XSS Output type is not text/html.
Definition: ApiFormatPhp.php:36
serialize
serialize()
Definition: ApiMessageTrait.php:138
ApiFormatPhp\getMimeType
getMimeType()
Overriding class returns the MIME type that should be sent to the client.
Definition: ApiFormatPhp.php:29
ApiBase\extractRequestParams
extractRequestParams( $options=[])
Using getAllowedParams(), this function makes an array of the values provided by the user,...
Definition: ApiBase.php:717
ApiFormatBase\printText
printText( $text)
Append text to the output buffer.
Definition: ApiFormatBase.php:348
ApiFormatPhp\getAllowedParams
getAllowedParams()
Returns an array of allowed parameters (parameter name) => (default value) or (parameter name) => (ar...
Definition: ApiFormatPhp.php:76
ApiBase\PARAM_DFLT
const PARAM_DFLT
(boolean) Inverse of IntegerDef::PARAM_IGNORE_RANGE
Definition: ApiBase.php:69
ApiBase\dieDebug
static dieDebug( $method, $message)
Internal code errors should be reported with this method.
Definition: ApiBase.php:1574
ApiFormatPhp
API Serialized PHP output formatter.
Definition: ApiFormatPhp.php:27