From 63601400e476c6cf43d985f3e7b9864681695ed4 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Fri, 18 Jan 2013 16:46:04 +0100 Subject: Update to MediaWiki 1.20.2 this update includes: * adjusted Arch Linux skin * updated FluxBBAuthPlugin * patch for https://bugzilla.wikimedia.org/show_bug.cgi?id=44024 --- includes/diff/DairikiDiff.php | 20 ++++----- includes/diff/DifferenceEngine.php | 88 ++++++++++++++++++++++++-------------- 2 files changed, 67 insertions(+), 41 deletions(-) (limited to 'includes/diff') diff --git a/includes/diff/DairikiDiff.php b/includes/diff/DairikiDiff.php index c935eee2..72eb5d3c 100644 --- a/includes/diff/DairikiDiff.php +++ b/includes/diff/DairikiDiff.php @@ -185,8 +185,8 @@ class _DiffEngine { $edits = array(); $xi = $yi = 0; while ( $xi < $n_from || $yi < $n_to ) { - assert( $yi < $n_to || $this->xchanged[$xi] ); - assert( $xi < $n_from || $this->ychanged[$yi] ); + assert( '$yi < $n_to || $this->xchanged[$xi]' ); + assert( '$xi < $n_from || $this->ychanged[$yi]' ); // Skip matching "snake". $copy = array(); @@ -374,14 +374,14 @@ class _DiffEngine { while ( list( , $y ) = each( $matches ) ) { if ( empty( $this->in_seq[$y] ) ) { $k = $this->_lcs_pos( $y ); - assert( $k > 0 ); + assert( '$k > 0' ); $ymids[$k] = $ymids[$k -1]; break; } } while ( list ( , $y ) = each( $matches ) ) { if ( $y > $this->seq[$k -1] ) { - assert( $y < $this->seq[$k] ); + assert( '$y < $this->seq[$k]' ); // Optimization: this is a common case: // next match is just replacing previous match. $this->in_seq[$this->seq[$k]] = false; @@ -389,7 +389,7 @@ class _DiffEngine { $this->in_seq[$y] = 1; } elseif ( empty( $this->in_seq[$y] ) ) { $k = $this->_lcs_pos( $y ); - assert( $k > 0 ); + assert( '$k > 0' ); $ymids[$k] = $ymids[$k -1]; } } @@ -430,7 +430,7 @@ class _DiffEngine { } } - assert( $ypos != $this->seq[$end] ); + assert( '$ypos != $this->seq[$end]' ); $this->in_seq[$this->seq[$end]] = false; $this->seq[$end] = $ypos; @@ -661,7 +661,7 @@ class Diff { * * $diff = new Diff($lines1, $lines2); * $rev = $diff->reverse(); - * @return object A Diff object representing the inverse of the + * @return Object A Diff object representing the inverse of the * original diff. */ function reverse() { @@ -814,8 +814,8 @@ class MappedDiff extends Diff { $mapped_from_lines, $mapped_to_lines ) { wfProfileIn( __METHOD__ ); - assert( sizeof( $from_lines ) == sizeof( $mapped_from_lines ) ); - assert( sizeof( $to_lines ) == sizeof( $mapped_to_lines ) ); + assert( 'sizeof( $from_lines ) == sizeof( $mapped_from_lines )' ); + assert( 'sizeof( $to_lines ) == sizeof( $mapped_to_lines )' ); parent::__construct( $mapped_from_lines, $mapped_to_lines ); @@ -1205,7 +1205,7 @@ class _HWLDF_WordAccumulator { $this->_flushLine( $tag ); $word = substr( $word, 1 ); } - assert( !strstr( $word, "\n" ) ); + assert( '!strstr( $word, "\n" )' ); $this->_group .= $word; } } diff --git a/includes/diff/DifferenceEngine.php b/includes/diff/DifferenceEngine.php index 439e3204..c7156fb2 100644 --- a/includes/diff/DifferenceEngine.php +++ b/includes/diff/DifferenceEngine.php @@ -1,6 +1,21 @@ getOutput(); + + $missing = array(); + if ( $this->mOldRev === null ) { + $missing[] = $this->deletedIdMarker( $this->mOldid ); + } + if ( $this->mNewRev === null ) { + $missing[] = $this->deletedIdMarker( $this->mNewid ); + } + + $out->setPageTitle( $this->msg( 'errorpagetitle' ) ); + $out->addWikiMsg( 'difference-missing-revision', + $this->getLanguage()->listToText( $missing ), count( $missing ) ); + } + function showDiffPage( $diffOnly = false ) { wfProfileIn( __METHOD__ ); @@ -173,13 +204,7 @@ class DifferenceEngine extends ContextSource { $out->setRobotPolicy( 'noindex,nofollow' ); if ( !$this->loadRevisionData() ) { - // Sounds like a deleted revision... Let's see what we can do. - $t = $this->getTitle()->getPrefixedText(); - $d = $this->msg( 'missingarticle-diff', - $this->deletedIdMarker( $this->mOldid ), - $this->deletedIdMarker( $this->mNewid ) )->escaped(); - $out->setPageTitle( $this->msg( 'errorpagetitle' ) ); - $out->addWikiMsg( 'missing-article', "$t", "$d" ); + $this->showMissingRevision(); wfProfileOut( __METHOD__ ); return; } @@ -239,8 +264,7 @@ class DifferenceEngine extends ContextSource { # a diff between a version V and its previous version V' AND the version V # is the first version of that article. In that case, V' does not exist. if ( $this->mOldRev === false ) { - $out->setPageTitle( $this->mNewPage->getPrefixedText() ); - $out->addSubtitle( $this->msg( 'difference' ) ); + $out->setPageTitle( $this->msg( 'difference-title', $this->mNewPage->getPrefixedText() ) ); $samePage = true; $oldHeader = ''; } else { @@ -252,19 +276,19 @@ class DifferenceEngine extends ContextSource { } if ( $this->mNewPage->equals( $this->mOldPage ) ) { - $out->setPageTitle( $this->mNewPage->getPrefixedText() ); - $out->addSubtitle( $this->msg( 'difference' ) ); + $out->setPageTitle( $this->msg( 'difference-title', $this->mNewPage->getPrefixedText() ) ); $samePage = true; } else { - $out->setPageTitle( $this->mOldPage->getPrefixedText() . ', ' . $this->mNewPage->getPrefixedText() ); + $out->setPageTitle( $this->msg( 'difference-title-multipage', $this->mOldPage->getPrefixedText(), + $this->mNewPage->getPrefixedText() ) ); $out->addSubtitle( $this->msg( 'difference-multipage' ) ); $samePage = false; } - if ( $samePage && $this->mNewPage->userCan( 'edit', $user ) ) { + if ( $samePage && $this->mNewPage->quickUserCan( 'edit', $user ) ) { if ( $this->mNewRev->isCurrent() && $this->mNewPage->userCan( 'rollback', $user ) ) { $out->preventClickjacking(); - $rollback = '   ' . Linker::generateRollback( $this->mNewRev ); + $rollback = '   ' . Linker::generateRollback( $this->mNewRev, $this->getContext() ); } if ( !$this->mOldRev->isDeleted( Revision::DELETED_TEXT ) && !$this->mNewRev->isDeleted( Revision::DELETED_TEXT ) ) { $undoLink = ' ' . $this->msg( 'parentheses' )->rawParams( @@ -403,7 +427,7 @@ class DifferenceEngine extends ContextSource { if ( $this->mMarkPatrolledLink === null ) { // Prepare a change patrol link, if applicable - if ( $wgUseRCPatrol && $this->mNewPage->userCan( 'patrol', $this->getUser() ) ) { + if ( $wgUseRCPatrol && $this->mNewPage->quickUserCan( 'patrol', $this->getUser() ) ) { // If we've been given an explicit change identifier, use it; saves time if ( $this->mRcidMarkPatrolled ) { $rcid = $this->mRcidMarkPatrolled; @@ -512,9 +536,7 @@ class DifferenceEngine extends ContextSource { $wikiPage = WikiPage::factory( $this->mNewPage ); } - $parserOptions = ParserOptions::newFromContext( $this->getContext() ); - $parserOptions->enableLimitReport(); - $parserOptions->setTidy( true ); + $parserOptions = $wikiPage->makeParserOptions( $this->getContext() ); if ( !$this->mNewRev->isCurrent() ) { $parserOptions->setEditSection( false ); @@ -543,7 +565,7 @@ class DifferenceEngine extends ContextSource { function showDiff( $otitle, $ntitle, $notice = '' ) { $diff = $this->getDiff( $otitle, $ntitle, $notice ); if ( $diff === false ) { - $this->getOutput()->addWikiMsg( 'missing-article', "(fixme, bug)", '' ); + $this->showMissingRevision(); return false; } else { $this->showDiffStyle(); @@ -598,7 +620,7 @@ class DifferenceEngine extends ContextSource { return false; } // Short-circuit - // If mOldRev is false, it means that the + // If mOldRev is false, it means that the if ( $this->mOldRev === false || ( $this->mOldRev && $this->mNewRev && $this->mOldRev->getID() == $this->mNewRev->getID() ) ) { @@ -672,6 +694,7 @@ class DifferenceEngine extends ContextSource { * * @param $otext String: old text, must be already segmented * @param $ntext String: new text, must be already segmented + * @return bool|string */ function generateDiffBody( $otext, $ntext ) { global $wgExternalDiffEngine, $wgContLang; @@ -705,9 +728,9 @@ class DifferenceEngine extends ContextSource { } if ( $wgExternalDiffEngine != 'wikidiff3' && $wgExternalDiffEngine !== false ) { # Diff via the shell - global $wgTmpDirectory; - $tempName1 = tempnam( $wgTmpDirectory, 'diff_' ); - $tempName2 = tempnam( $wgTmpDirectory, 'diff_' ); + $tmpDir = wfTempDir(); + $tempName1 = tempnam( $tmpDir, 'diff_' ); + $tempName2 = tempnam( $tmpDir, 'diff_' ); $tempFile1 = fopen( $tempName1, "w" ); if ( !$tempFile1 ) { @@ -747,6 +770,7 @@ class DifferenceEngine extends ContextSource { /** * Generate a debug comment indicating diff generating time, * server node, and generator backend. + * @return string */ protected function debug( $generator = "internal" ) { global $wgShowHostnames; @@ -768,6 +792,7 @@ class DifferenceEngine extends ContextSource { /** * Replace line numbers with the text in the user's language + * @return mixed */ function localiseLineNumbers( $text ) { return preg_replace_callback( '//', @@ -864,8 +889,9 @@ class DifferenceEngine extends ContextSource { $editQuery['oldid'] = $rev->getID(); } - $msg = $this->msg( $title->userCan( 'edit', $user ) ? 'editold' : 'viewsourceold' )->escaped(); - $header .= ' (' . Linker::linkKnown( $title, $msg, array(), $editQuery ) . ')'; + $msg = $this->msg( $title->quickUserCan( 'edit', $user ) ? 'editold' : 'viewsourceold' )->escaped(); + $header .= ' ' . $this->msg( 'parentheses' )->rawParams( + Linker::linkKnown( $title, $msg, array(), $editQuery ) )->plain(); if ( $rev->isDeleted( Revision::DELETED_TEXT ) ) { $header = Html::rawElement( 'span', array( 'class' => 'history-deleted' ), $header ); } @@ -889,7 +915,7 @@ class DifferenceEngine extends ContextSource { if ( !$diff && !$otitle ) { $header .= " - + {$ntitle} "; $multiColspan = 1; @@ -907,17 +933,17 @@ class DifferenceEngine extends ContextSource { $multiColspan = 2; } $header .= " - + {$otitle} {$ntitle} "; } if ( $multi != '' ) { - $header .= "{$multi}"; + $header .= "{$multi}"; } if ( $notice != '' ) { - $header .= "{$notice}"; + $header .= "{$notice}"; } return $header . $diff . ""; @@ -1002,7 +1028,7 @@ class DifferenceEngine extends ContextSource { // Load the new revision object $this->mNewRev = $this->mNewid ? Revision::newFromId( $this->mNewid ) - : Revision::newFromTitle( $this->getTitle() ); + : Revision::newFromTitle( $this->getTitle(), false, Revision::READ_NORMAL ); if ( !$this->mNewRev instanceof Revision ) { return false; -- cgit v1.2.2