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 }
const PARAM_TYPE
(string|string[]) Either an array of allowed value strings, or a string type as described below...
Definition: ApiBase.php:94
API Serialized PHP output formatter.
getResult()
Get the result object.
Definition: ApiBase.php:640
serialize()
const PARAM_DFLT
(null|boolean|integer|string) Default value of the parameter.
Definition: ApiBase.php:55
dieWithError( $msg, $code=null, $data=null, $httpCode=null)
Abort execution with an error.
Definition: ApiBase.php:2005
extractRequestParams( $options=[])
Using getAllowedParams(), this function makes an array of the values provided by the user...
Definition: ApiBase.php:761
printText( $text)
Append text to the output buffer.
This is the abstract base class for API formatters.
const PARAM_HELP_MSG
(string|array|Message) Specify an alternative i18n documentation message for this parameter...
Definition: ApiBase.php:131
execute()
SecurityCheck-XSS Output type is not text/html.
static dieDebug( $method, $message)
Internal code errors should be reported with this method.
Definition: ApiBase.php:2211