]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - includes/api/ApiFormatPhp.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / includes / api / ApiFormatPhp.php
index 6d2e53a7dada866265837140e592b03ac86c92f7..671f356194c00fc78f7d380bb70b8a3aff1b9baf 100644 (file)
@@ -1,10 +1,10 @@
 <?php
 /**
- * API for MediaWiki 1.8+
+ *
  *
  * Created on Oct 22, 2006
  *
- * Copyright © 2006 Yuri Astrakhan <Firstname><Lastname>@gmail.com
+ * Copyright © 2006 Yuri Astrakhan "<Firstname><Lastname>@gmail.com"
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * @file
  */
 
-if ( !defined( 'MEDIAWIKI' ) ) {
-       // Eclipse helper - will be ignored in production
-       require_once( 'ApiFormatBase.php' );
-}
-
 /**
  * API Serialized PHP output formatter
  * @ingroup API
  */
 class ApiFormatPhp extends ApiFormatBase {
 
-       public function __construct( $main, $format ) {
-               parent::__construct( $main, $format );
-       }
-
        public function getMimeType() {
                return 'application/vnd.php.serialized';
        }
 
        public function execute() {
-               $this->printText( serialize( $this->getResultData() ) );
-       }
+               $params = $this->extractRequestParams();
+
+               switch ( $params['formatversion'] ) {
+                       case 1:
+                               $transforms = [
+                                       'BC' => [],
+                                       'Types' => [],
+                                       'Strip' => 'all',
+                               ];
+                               break;
+
+                       case 2:
+                       case 'latest':
+                               $transforms = [
+                                       'Types' => [],
+                                       'Strip' => 'all',
+                               ];
+                               break;
+
+                       default:
+                               // Should have been caught during parameter validation
+                               $this->dieDebug( __METHOD__, 'Unknown value for \'formatversion\'' );
+               }
+               $text = serialize( $this->getResult()->getResultData( null, $transforms ) );
+
+               // T68776: wfMangleFlashPolicy() is needed to avoid a nasty bug in
+               // Flash, but what it does isn't friendly for the API. There's nothing
+               // we can do here that isn't actively broken in some manner, so let's
+               // just be broken in a useful manner.
+               if ( $this->getConfig()->get( 'MangleFlashPolicy' ) &&
+                       in_array( 'wfOutputHandler', ob_list_handlers(), true ) &&
+                       preg_match( '/\<\s*cross-domain-policy(?=\s|\>)/i', $text )
+               ) {
+                       $this->dieWithError( 'apierror-formatphp', 'internalerror' );
+               }
 
-       public function getDescription() {
-               return 'Output data in serialized PHP format' . parent::getDescription();
+               $this->printText( $text );
        }
 
-       public function getVersion() {
-               return __CLASS__ . ': $Id$';
+       public function getAllowedParams() {
+               $ret = parent::getAllowedParams() + [
+                       'formatversion' => [
+                               ApiBase::PARAM_TYPE => [ 1, 2, 'latest' ],
+                               ApiBase::PARAM_DFLT => 1,
+                               ApiBase::PARAM_HELP_MSG => 'apihelp-php-param-formatversion',
+                       ],
+               ];
+               return $ret;
        }
 }