X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fapi%2FApiFormatBase.php;h=493e866d8d9e44fb2f9c0f69819806d24a656527;hb=4074968ddfebc6dee917b95114a428673b6e7bac;hp=364408dcafc3a0272cbb154351c33d0d6cfb1c2b;hpb=3758769f0d2b244b113714da012dc1ceb95d0e22;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiFormatBase.php b/includes/api/ApiFormatBase.php index 364408dcaf..493e866d8d 100644 --- a/includes/api/ApiFormatBase.php +++ b/includes/api/ApiFormatBase.php @@ -1,11 +1,11 @@ @gmail.com + * 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,13 +19,13 @@ * * 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 */ if ( !defined( 'MEDIAWIKI' ) ) { // Eclipse helper - will be ignored in production - require_once ( 'ApiBase.php' ); + require_once( 'ApiBase.php' ); } /** @@ -36,7 +36,7 @@ if ( !defined( 'MEDIAWIKI' ) ) { abstract class ApiFormatBase extends ApiBase { private $mIsHtml, $mFormat, $mUnescapeAmps, $mHelp, $mCleared; - private $mBufferResult = false, $mBuffer; + private $mBufferResult = false, $mBuffer, $mDisabled = false; /** * Constructor @@ -45,13 +45,14 @@ abstract class ApiFormatBase extends ApiBase { * @param $format string Format name */ public function __construct( $main, $format ) { - parent :: __construct( $main, $format ); + parent::__construct( $main, $format ); $this->mIsHtml = ( substr( $format, - 2, 2 ) === 'fm' ); // ends with 'fm' - if ( $this->mIsHtml ) + if ( $this->mIsHtml ) { $this->mFormat = substr( $format, 0, - 2 ); // remove ending 'fm' - else + } else { $this->mFormat = $format; + } $this->mFormat = strtoupper( $this->mFormat ); $this->mCleared = false; } @@ -101,17 +102,29 @@ abstract class ApiFormatBase extends ApiBase { public function getIsHtml() { 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 + * When action=help is set explicitly, the help will always be shown * @return bool */ public function getWantsHelp() { return $this->getIsHtml(); } + /** + * Disable the formatter completely. This causes calls to initPrinter(), + * printText() and closePrinter() to be ignored. + */ + public function disable() { + $this->mDisabled = true; + } + + public function isDisabled() { + return $this->mDisabled; + } + /** * Initialize the printer function and prepare the output headers, etc. * This method must be the first outputing method during execution. @@ -119,14 +132,18 @@ abstract class ApiFormatBase extends ApiBase { * @param $isError bool Whether an error message is printed */ function initPrinter( $isError ) { + if ( $this->mDisabled ) { + return; + } $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" ); @@ -170,6 +187,9 @@ See complete documentation, or * Finish printing. Closes HTML tags. */ public function closePrinter() { + if ( $this->mDisabled ) { + return; + } if ( $this->getIsHtml() ) { ?> @@ -189,6 +209,9 @@ See complete documentation, or * @param $text string */ public function printText( $text ) { + if ( $this->mDisabled ) { + return; + } if ( $this->mBufferResult ) { $this->mBuffer = $text; } elseif ( $this->getIsHtml() ) { @@ -197,15 +220,14 @@ See complete documentation, or // 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; } echo $text; } } - + /** * Get the contents of the buffer. */ @@ -228,14 +250,14 @@ See complete documentation, or } /** - * Prety-print various elements in HTML format, such as xml tags and - * URLs. This method also escapes characters like < - * @param $text string - * @return string - */ + * Pretty-print various elements in HTML format, such as xml tags and + * URLs. This method also escapes characters like < + * @param $text string + * @return string + */ protected function formatHTML( $text ) { global $wgUrlProtocols; - + // Escape everything first for full coverage $text = htmlspecialchars( $text ); @@ -243,7 +265,7 @@ See complete documentation, or $text = preg_replace( '/\<(!--.*?--|.*?)\>/', '<\1>', $text ); // identify URLs $protos = implode( "|", $wgUrlProtocols ); - # This regex hacks around bug 13218 (" included in the URL) + // 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 ); @@ -254,12 +276,15 @@ See complete documentation, or $text = preg_replace( "#\\$[^<>\n]+\\$#", '\\0', $text ); } - /* Temporary fix for bad links in help messages. As a special case, + /** + * Temporary fix for bad links in help messages. As a special case, * XML-escaped metachars are de-escaped one level in the help message - * for legibility. Should be removed once we have completed a fully-html - * version of the help message. */ - if ( $this->mUnescapeAmps ) + * for legibility. Should be removed once we have completed a fully-HTML + * version of the help message. + */ + if ( $this->mUnescapeAmps ) { $text = preg_replace( '/&(amp|quot|lt|gt);/', '&\1;', $text ); + } return $text; } @@ -284,7 +309,7 @@ See complete documentation, or class ApiFormatFeedWrapper extends ApiFormatBase { public function __construct( $main ) { - parent :: __construct( $main, 'feed' ); + parent::__construct( $main, 'feed' ); } /** @@ -326,13 +351,14 @@ 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 ) + foreach ( $items as & $item ) { $feed->outItem( $item ); + } $feed->outFooter(); } else { // Error has occured, print something useful