From 222b01f5169f1c7e69762e0e8904c24f78f71882 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Wed, 28 Jul 2010 11:52:48 +0200 Subject: update to MediaWiki 1.16.0 --- includes/api/ApiFormatBase.php | 115 +++++++++++++++++++++++++---------------- 1 file changed, 70 insertions(+), 45 deletions(-) (limited to 'includes/api/ApiFormatBase.php') diff --git a/includes/api/ApiFormatBase.php b/includes/api/ApiFormatBase.php index cc7434c6..de211fe9 100644 --- a/includes/api/ApiFormatBase.php +++ b/includes/api/ApiFormatBase.php @@ -23,9 +23,9 @@ * http://www.gnu.org/copyleft/gpl.html */ -if (!defined('MEDIAWIKI')) { +if ( !defined( 'MEDIAWIKI' ) ) { // Eclipse helper - will be ignored in production - require_once ('ApiBase.php'); + require_once ( 'ApiBase.php' ); } /** @@ -36,6 +36,7 @@ if (!defined('MEDIAWIKI')) { abstract class ApiFormatBase extends ApiBase { private $mIsHtml, $mFormat, $mUnescapeAmps, $mHelp, $mCleared; + private $mBufferResult = false, $mBuffer; /** * Constructor @@ -43,15 +44,15 @@ abstract class ApiFormatBase extends ApiBase { * @param $main ApiMain * @param $format string Format name */ - public function __construct($main, $format) { - parent :: __construct($main, $format); + public function __construct( $main, $format ) { + parent :: __construct( $main, $format ); - $this->mIsHtml = (substr($format, -2, 2) === 'fm'); // ends with 'fm' - if ($this->mIsHtml) - $this->mFormat = substr($format, 0, -2); // remove ending 'fm' + $this->mIsHtml = ( substr( $format, - 2, 2 ) === 'fm' ); // ends with 'fm' + if ( $this->mIsHtml ) + $this->mFormat = substr( $format, 0, - 2 ); // remove ending 'fm' else $this->mFormat = $format; - $this->mFormat = strtoupper($this->mFormat); + $this->mFormat = strtoupper( $this->mFormat ); $this->mCleared = false; } @@ -101,30 +102,40 @@ abstract class ApiFormatBase extends ApiBase { return $this->mIsHtml; } + /** + * Whether this formatter can format the help message in a nice way. + * By default, this returns the same as getIsHtml(). + * When action=help is set explicitly, the help will always be shown + * @return bool + */ + public function getWantsHelp() { + return $this->getIsHtml(); + } + /** * Initialize the printer function and prepare the output headers, etc. * This method must be the first outputing method during execution. * A help screen's header is printed for the HTML-based output * @param $isError bool Whether an error message is printed */ - function initPrinter($isError) { + function initPrinter( $isError ) { $isHtml = $this->getIsHtml(); $mime = $isHtml ? 'text/html' : $this->getMimeType(); $script = wfScript( 'api' ); // Some printers (ex. Feed) do their own header settings, // in which case $mime will be set to null - if (is_null($mime)) + if ( is_null( $mime ) ) return; // skip any initialization - header("Content-Type: $mime; charset=utf-8"); + header( "Content-Type: $mime; charset=utf-8" ); - if ($isHtml) { + if ( $isHtml ) { ?> -mUnescapeAmps) { +mUnescapeAmps ) { ?> MediaWiki API MediaWiki API Result @@ -134,12 +145,12 @@ abstract class ApiFormatBase extends ApiBase { -
+
-You are looking at the HTML representation of the mFormat ); ?> format.
-HTML is good for debugging, but probably is not suitable for your application.
+You are looking at the HTML representation of the mFormat ); ?> format.
+HTML is good for debugging, but probably is not suitable for your application.
See complete documentation, or API help for more information.
@@ -159,7 +170,7 @@ See complete documentation, or * Finish printing. Closes HTML tags. */ public function closePrinter() { - if ($this->getIsHtml()) { + if ( $this->getIsHtml() ) { ?> @@ -177,15 +188,16 @@ See complete documentation, or * when format name ends in 'fm'. * @param $text string */ - public function printText($text) { - if ($this->getIsHtml()) - echo $this->formatHTML($text); - else - { + public function printText( $text ) { + if ( $this->mBufferResult ) { + $this->mBuffer = $text; + } elseif ( $this->getIsHtml() ) { + echo $this->formatHTML( $text ); + } else { // For non-HTML output, clear all errors that might have been // displayed if display_errors=On // Do this only once, of course - if(!$this->mCleared) + if ( !$this->mCleared ) { ob_clean(); $this->mCleared = true; @@ -194,6 +206,19 @@ See complete documentation, or } } + /** + * Get the contents of the buffer. + */ + public function getBuffer() { + return $this->mBuffer; + } + /** + * Set the flag to buffer the result instead of printing it. + */ + public function setBufferResult( $value ) { + $this->mBufferResult = $value; + } + /** * Sets whether the pretty-printer should format *bold* and $italics$ * @param $help bool @@ -208,25 +233,25 @@ See complete documentation, or * @param $text string * @return string */ - protected function formatHTML($text) { + protected function formatHTML( $text ) { global $wgUrlProtocols; - + // Escape everything first for full coverage - $text = htmlspecialchars($text); + $text = htmlspecialchars( $text ); // encode all comments or tags as safe blue strings - $text = preg_replace('/\<(!--.*?--|.*?)\>/', '<\1>', $text); + $text = preg_replace( '/\<(!--.*?--|.*?)\>/', '<\1>', $text ); // identify URLs - $protos = implode("|", $wgUrlProtocols); - # This regex hacks around bug 13218 (" included in the URL) - $text = preg_replace("#(($protos).*?)(")?([ \\'\"<>\n]|<|>|")#", '\\1\\3\\4', $text); + $protos = implode( "|", $wgUrlProtocols ); + // This regex hacks around bug 13218 (" included in the URL) + $text = preg_replace( "#(($protos).*?)(")?([ \\'\"<>\n]|<|>|")#", '\\1\\3\\4', $text ); // identify requests to api.php - $text = preg_replace("#api\\.php\\?[^ \\()<\n\t]+#", '\\0', $text); - if( $this->mHelp ) { + $text = preg_replace( "#api\\.php\\?[^ \\()<\n\t]+#", '\\0', $text ); + if ( $this->mHelp ) { // make strings inside * bold - $text = preg_replace("#\\*[^<>\n]+\\*#", '\\0', $text); + $text = preg_replace( "#\\*[^<>\n]+\\*#", '\\0', $text ); // make strings inside $ italic - $text = preg_replace("#\\$[^<>\n]+\\$#", '\\0', $text); + $text = preg_replace( "#\\$[^<>\n]+\\$#", '\\0', $text ); } /* Temporary fix for bad links in help messages. As a special case, @@ -248,7 +273,7 @@ See complete documentation, or } public static function getBaseVersion() { - return __CLASS__ . ': $Id: ApiFormatBase.php 48521 2009-03-18 19:25:29Z ialex $'; + return __CLASS__ . ': $Id: ApiFormatBase.php 62367 2010-02-12 14:09:42Z siebrand $'; } } @@ -258,8 +283,8 @@ See complete documentation, or */ class ApiFormatFeedWrapper extends ApiFormatBase { - public function __construct($main) { - parent :: __construct($main, 'feed'); + public function __construct( $main ) { + parent :: __construct( $main, 'feed' ); } /** @@ -268,15 +293,15 @@ class ApiFormatFeedWrapper extends ApiFormatBase { * @param $feed object an instance of one of the $wgFeedClasses classes * @param $feedItems array of FeedItem objects */ - public static function setResult($result, $feed, $feedItems) { + public static function setResult( $result, $feed, $feedItems ) { // Store output in the Result data. // This way we can check during execution if any error has occured // Disable size checking for this because we can't continue // cleanly; size checking would cause more problems than it'd // solve $result->disableSizeCheck(); - $result->addValue(null, '_feed', $feed); - $result->addValue(null, '_feeditems', $feedItems); + $result->addValue( null, '_feed', $feed ); + $result->addValue( null, '_feeditems', $feedItems ); $result->enableSizeCheck(); } @@ -301,13 +326,13 @@ class ApiFormatFeedWrapper extends ApiFormatBase { */ public function execute() { $data = $this->getResultData(); - if (isset ($data['_feed']) && isset ($data['_feeditems'])) { + if ( isset ( $data['_feed'] ) && isset ( $data['_feeditems'] ) ) { $feed = $data['_feed']; $items = $data['_feeditems']; $feed->outHeader(); - foreach ($items as & $item) - $feed->outItem($item); + foreach ( $items as & $item ) + $feed->outItem( $item ); $feed->outFooter(); } else { // Error has occured, print something useful @@ -316,6 +341,6 @@ class ApiFormatFeedWrapper extends ApiFormatBase { } public function getVersion() { - return __CLASS__ . ': $Id: ApiFormatBase.php 48521 2009-03-18 19:25:29Z ialex $'; + return __CLASS__ . ': $Id: ApiFormatBase.php 62367 2010-02-12 14:09:42Z siebrand $'; } } \ No newline at end of file -- cgit v1.2.3-54-g00ecf