From f6d65e533c62f6deb21342d4901ece24497b433e Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Thu, 4 Jun 2015 07:31:04 +0200 Subject: Update to MediaWiki 1.25.1 --- extensions/Cite/Cite_body.php | 108 ++++++++++++++++++++++++------------------ 1 file changed, 62 insertions(+), 46 deletions(-) (limited to 'extensions/Cite/Cite_body.php') diff --git a/extensions/Cite/Cite_body.php b/extensions/Cite/Cite_body.php index 496e32d8..6072cdfc 100644 --- a/extensions/Cite/Cite_body.php +++ b/extensions/Cite/Cite_body.php @@ -17,7 +17,17 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later */ +/** + * WARNING: MediaWiki core hardcodes this class name to check if the + * Cite extension is installed. See T89151. + */ class Cite { + + /** + * @todo document + */ + const DEFAULT_GROUP = ''; + /**#@+ * @access private */ @@ -158,19 +168,24 @@ class Cite { function ref( $str, $argv, $parser, $frame ) { if ( $this->mInCite ) { return htmlspecialchars( "$str" ); - } else { - $this->mCallCnt++; - $this->mInCite = true; - $ret = $this->guardedRef( $str, $argv, $parser ); - $this->mInCite = false; - $parserOutput = $parser->getOutput(); - $parserOutput->addModules( 'ext.cite' ); - $parserOutput->addModuleStyles( 'ext.rtlcite' ); - if ( is_callable( array( $frame, 'setVolatile' ) ) ) { - $frame->setVolatile(); - } - return $ret; } + + $this->mCallCnt++; + $this->mInCite = true; + + $ret = $this->guardedRef( $str, $argv, $parser ); + + $this->mInCite = false; + + $parserOutput = $parser->getOutput(); + $parserOutput->addModules( 'ext.cite' ); + $parserOutput->addModuleStyles( 'ext.rtlcite' ); + + if ( is_callable( array( $frame, 'setVolatile' ) ) ) { + $frame->setVolatile(); + } + + return $ret; } /** @@ -180,7 +195,7 @@ class Cite { * @param $default_group string * @return string */ - function guardedRef( $str, $argv, $parser, $default_group = CITE_DEFAULT_GROUP ) { + function guardedRef( $str, $argv, $parser, $default_group = self::DEFAULT_GROUP ) { $this->mParser = $parser; # The key here is the "name" attribute. @@ -296,7 +311,7 @@ class Cite { # Not clear how we could get here, but something is probably # wrong with the types. Let's fail fast. - throw new MWException( 'Invalid $str and/or $key: ' . serialize( array( $str, $key ) ) ); + throw new Exception( 'Invalid $str and/or $key: ' . serialize( array( $str, $key ) ) ); } /** @@ -386,18 +401,19 @@ class Cite { $this->mRefs[$group][$follow]['text'] = $this->mRefs[$group][$follow]['text'] . ' ' . $str; } else { // insert part of note at the beginning of the group - for ( $k = 0 ; $k < count( $this->mRefs[$group] ) ; $k++ ) { - if ( $this->mRefs[$group][$k]['follow'] == null ) { + $groupsCount = count( $this->mRefs[$group] ); + for ( $k = 0; $k < $groupsCount; $k++ ) { + if ( !isset( $this->mRefs[$group][$k]['follow'] ) ) { break; } } array_splice( $this->mRefs[$group], $k, 0, - array( array( 'count' => - 1, - 'text' => $str, - 'key' => ++$this->mOutCnt , - 'follow' => $follow ) ) ); + array( array( 'count' => - 1, + 'text' => $str, + 'key' => ++$this->mOutCnt , + 'follow' => $follow ) ) ); array_splice( $this->mRefCallStack, $k, 0, - array( array( 'new', $call, $str, $key, $group, $this->mOutCnt ) ) ); + array( array( 'new', $call, $str, $key, $group, $this->mOutCnt ) ) ); } // return an empty string : this is not a reference return ''; @@ -450,7 +466,7 @@ class Cite { ); } } else { - throw new MWException( 'Invalid stack key: ' . serialize( $key ) ); + throw new Exception( 'Invalid stack key: ' . serialize( $key ) ); } } @@ -556,7 +572,7 @@ class Cite { * @param $group string * @return string */ - function guardedReferences( $str, $argv, $parser, $group = CITE_DEFAULT_GROUP ) { + function guardedReferences( $str, $argv, $parser, $group = self::DEFAULT_GROUP ) { global $wgAllowCiteGroups; $this->mParser = $parser; @@ -635,7 +651,6 @@ class Cite { return ''; } - wfProfileIn( __METHOD__ ); wfProfileIn( __METHOD__ . '-entries' ); $ent = array(); foreach ( $this->mRefs[$group] as $k => $v ) { @@ -646,7 +661,8 @@ class Cite { $suffix = wfMessage( 'cite_references_suffix' )->inContentLanguage()->plain(); $content = implode( "\n", $ent ); - // Prepare the parser input. We add new lines between the pieces to avoid a confused tidy (bug 13073) + // Prepare the parser input. + // We add new lines between the pieces to avoid a confused tidy (bug 13073). $parserInput = $prefix . "\n" . $content . "\n" . $suffix; // Let's try to cache it. @@ -679,8 +695,6 @@ class Cite { $ret = $this->mParser->unserializeHalfParsedText( $data ); } - wfProfileOut( __METHOD__ ); - // done, clean up so we can reuse the group unset( $this->mRefs[$group] ); unset( $this->mGroupCnt[$group] ); @@ -713,7 +727,7 @@ class Cite { $this->referencesKey( $val['follow'] ), $text )->inContentLanguage()->plain(); - } elseif ( $val['text'] == '' ) { + } elseif ( !isset( $val['text'] ) ) { return wfMessage( 'cite_references_link_one', $this->referencesKey( $key ), @@ -772,7 +786,7 @@ class Cite { * @return String */ function referenceText( $key, $text ) { - if ( $text == '' ) { + if ( !isset( $text ) || $text === '' ) { return $this->error( 'cite_error_references_no_text', $key, 'noparse' ); } return '' . rtrim( $text, "\n" ) . "\n"; @@ -921,7 +935,7 @@ class Cite { $this->refKey( $key, $count ), $this->referencesKey( $key . $subkey ), $this->getLinkLabel( $label, $group, - ( ( $group == CITE_DEFAULT_GROUP ) ? '' : "$group " ) . $wgContLang->formatNum( $label ) ) + ( ( $group == self::DEFAULT_GROUP ) ? '' : "$group " ) . $wgContLang->formatNum( $label ) ) )->inContentLanguage()->plain() ); } @@ -959,11 +973,9 @@ class Cite { * arbitrary number of tokens separated by [\t\n ] */ function genBacklinkLabels() { - wfProfileIn( __METHOD__ ); $text = wfMessage( 'cite_references_link_many_format_backlink_labels' ) ->inContentLanguage()->plain(); $this->mBacklinkLabels = preg_split( '#[\n\t ]#', $text ); - wfProfileOut( __METHOD__ ); } /** @@ -975,14 +987,12 @@ class Cite { * @param $message */ function genLinkLabels( $group, $message ) { - wfProfileIn( __METHOD__ ); $text = false; $msg = wfMessage( $message )->inContentLanguage(); if ( $msg->exists() ) { $text = $msg->plain(); } - $this->mLinkLabels[$group] = ( $text == '' ) ? false : preg_split( '#[\n\t ]#', $text ); - wfProfileOut( __METHOD__ ); + $this->mLinkLabels[$group] = ( !$text ) ? false : preg_split( '#[\n\t ]#', $text ); } /** @@ -1027,8 +1037,8 @@ class Cite { } $parser->extCite = clone $this; - $parser->setHook( 'ref' , array( $parser->extCite, 'ref' ) ); - $parser->setHook( 'references' , array( $parser->extCite, 'references' ) ); + $parser->setHook( 'ref', array( $parser->extCite, 'ref' ) ); + $parser->setHook( 'references', array( $parser->extCite, 'references' ) ); // Clear the state, making sure it will actually work. $parser->extCite->mInCite = false; @@ -1067,18 +1077,20 @@ class Cite { if ( count( $refs ) == 0 ) { continue; } - if ( $group == CITE_DEFAULT_GROUP ) { + if ( $group == self::DEFAULT_GROUP ) { $text .= $this->referencesFormat( $group, '', '' ); } else { - $text .= "\n
" . $this->error( 'cite_error_group_refs_without_references', htmlspecialchars( $group ) ); + $text .= "\n
" . + $this->error( 'cite_error_group_refs_without_references', htmlspecialchars( $group ) ); } } return true; } /** - * Hook for the InlineEditor extension. If any ref or reference reference tag is in the text, the entire - * page should be reparsed, so we return false in that case. + * Hook for the InlineEditor extension. + * If any ref or reference reference tag is in the text, + * the entire page should be reparsed, so we return false in that case. * * @param $output * @@ -1110,8 +1122,8 @@ class Cite { $wgHooks['InlineEditorPartialAfterParse'][] = array( $parser->extCite, 'checkAnyCalls' ); Cite::$hooksInstalled = true; } - $parser->setHook( 'ref' , array( $parser->extCite, 'ref' ) ); - $parser->setHook( 'references' , array( $parser->extCite, 'references' ) ); + $parser->setHook( 'ref', array( $parser->extCite, 'ref' ) ); + $parser->setHook( 'references', array( $parser->extCite, 'references' ) ); return true; } @@ -1128,12 +1140,16 @@ class Cite { # We rely on the fact that PHP is okay with passing unused argu- # ments to functions. If $1 is not used in the message, wfMessage will # just ignore the extra parameter. - $ret = '' . - wfMessage( 'cite_error', wfMessage( $key, $param )->inContentLanguage()->plain() )->inContentLanguage()->plain() . - ''; + $msg = wfMessage( 'cite_error', wfMessage( $key, $param )->inContentLanguage()->plain() ) + ->inContentLanguage() + ->plain(); + + $ret = '' . $msg . ''; + if ( $parse == 'parse' ) { $ret = $this->mParser->recursiveTagParse( $ret ); } + return $ret; } -- cgit v1.2.3-54-g00ecf