]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - includes/api/ApiFormatPhp.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / includes / api / ApiFormatPhp.php
index 766d704107ed58b1273659d0435c99b0a2e6adef..671f356194c00fc78f7d380bb70b8a3aff1b9baf 100644 (file)
@@ -1,11 +1,10 @@
 <?php
-
-/*
- * Created on Oct 22, 2006
+/**
+ *
  *
- * API for MediaWiki 1.8+
+ * Created on Oct 22, 2006
  *
- * Copyright (C) 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
  *
  * You should have received a copy of the GNU General Public License along
  * with this program; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
  */
 
-if (!defined('MEDIAWIKI')) {
-       // Eclipse helper - will be ignored in production
-       require_once ('ApiFormatBase.php');
-}
-
 /**
- * @addtogroup API
+ * 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;
 
-       protected function getDescription() {
-               return 'Output data in serialized PHP format' . parent :: getDescription();
+                       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' );
+               }
+
+               $this->printText( $text );
        }
 
-       public function getVersion() {
-               return __CLASS__ . ': $Id: ApiFormatPhp.php 23531 2007-06-29 01:19:14Z simetrical $';
+       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;
        }
 }
-