X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/mediawiki.git/blobdiff_plain/d7967d5e4460e08b6b258307afbca0596b18a3dd..19e297c21b10b1b8a3acad5e73fc71dcb35db44a:/includes/api/ApiFormatJson.php diff --git a/includes/api/ApiFormatJson.php b/includes/api/ApiFormatJson.php index ed9bd938..baddfa10 100644 --- a/includes/api/ApiFormatJson.php +++ b/includes/api/ApiFormatJson.php @@ -1,11 +1,10 @@ @gmail.com + * Created on Sep 19, 2006 + * + * Copyright © 2006 Yuri Astrakhan @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 @@ -19,28 +18,36 @@ * * 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')) { +if ( !defined( 'MEDIAWIKI' ) ) { // Eclipse helper - will be ignored in production - require_once ('ApiFormatBase.php'); + require_once( 'ApiFormatBase.php' ); } /** - * @addtogroup API + * API JSON output formatter + * @ingroup API */ class ApiFormatJson extends ApiFormatBase { private $mIsRaw; - public function __construct($main, $format) { - parent :: __construct($main, $format); - $this->mIsRaw = ($format === 'rawfm'); + public function __construct( $main, $format ) { + parent::__construct( $main, $format ); + $this->mIsRaw = ( $format === 'rawfm' ); } public function getMimeType() { + $params = $this->extractRequestParams(); + // callback: + if ( $params['callback'] ) { + return 'text/javascript'; + } return 'application/json'; } @@ -48,45 +55,48 @@ class ApiFormatJson extends ApiFormatBase { return $this->mIsRaw; } + public function getWantsHelp() { + // Help is always ugly in JSON + return false; + } + public function execute() { - $prefix = $suffix = ""; + $prefix = $suffix = ''; $params = $this->extractRequestParams(); $callback = $params['callback']; - if(!is_null($callback)) { - $prefix = ereg_replace("[^_A-Za-z0-9]", "", $callback ) . "("; - $suffix = ")"; - } - - if (!function_exists('json_encode') || $this->getIsHtml()) { - $json = new Services_JSON(); - $this->printText($prefix . $json->encode($this->getResultData(), $this->getIsHtml()) . $suffix); - } else { - $this->printText($prefix . json_encode($this->getResultData()) . $suffix); + if ( !is_null( $callback ) ) { + $prefix = preg_replace( "/[^][.\\'\\\"_A-Za-z0-9]/", '', $callback ) . '('; + $suffix = ')'; } + $this->printText( + $prefix . + FormatJson::encode( $this->getResultData(), $this->getIsHtml() ) . + $suffix + ); } - protected function getAllowedParams() { - return array ( - 'callback' => null + public function getAllowedParams() { + return array( + 'callback' => null, ); } - protected function getParamDescription() { - return array ( - 'callback' => 'If specified, wraps the output into a given function call', + public function getParamDescription() { + return array( + 'callback' => 'If specified, wraps the output into a given function call. For safety, all user-specific data will be restricted.', ); } - protected function getDescription() { - if ($this->mIsRaw) - return 'Output data with the debuging elements in JSON format' . parent :: getDescription(); - else - return 'Output data in JSON format' . parent :: getDescription(); + public function getDescription() { + if ( $this->mIsRaw ) { + return 'Output data with the debuging elements in JSON format' . parent::getDescription(); + } else { + return 'Output data in JSON format' . parent::getDescription(); + } } public function getVersion() { - return __CLASS__ . ': $Id: ApiFormatJson.php 23531 2007-06-29 01:19:14Z simetrical $'; + return __CLASS__ . ': $Id$'; } } -