X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fdiff%2FDifferenceEngine.php;h=7f9af604fdc0085440be74357ad0d6177c27e7e6;hb=e7720b8f8e09287384ddee271641d1b1721318bb;hp=0b58cc1bc63ef45ab6d8e4ab29d0e00eee46ba06;hpb=3f15d509066141f51e2f225bd9c5c62296f38f84;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/diff/DifferenceEngine.php b/includes/diff/DifferenceEngine.php index 0b58cc1bc6..7f9af604fd 100644 --- a/includes/diff/DifferenceEngine.php +++ b/includes/diff/DifferenceEngine.php @@ -104,7 +104,6 @@ class DifferenceEngine extends ContextSource { /**#@-*/ /** - * Constructor * @param IContextSource $context Context to use, anything else will be ignored * @param int $old Old ID we want to show and diff with. * @param string|int $new Either revision ID or 'prev' or 'next'. Default: 0. @@ -377,6 +376,11 @@ class DifferenceEngine extends ContextSource { } } + $out->addJsConfigVars( [ + 'wgDiffOldId' => $this->mOldid, + 'wgDiffNewId' => $this->mNewid, + ] ); + # Make "next revision link" # Skip next link on the top revision if ( $samePage && !$this->mNewRev->isCurrent() ) { @@ -908,10 +912,35 @@ class DifferenceEngine extends ContextSource { $wgExternalDiffEngine = false; } + // Better external diff engine, the 2 may some day be dropped + // This one does the escaping and segmenting itself if ( function_exists( 'wikidiff2_do_diff' ) && $wgExternalDiffEngine === false ) { - # Better external diff engine, the 2 may some day be dropped - # This one does the escaping and segmenting itself - $text = wikidiff2_do_diff( $otext, $ntext, 2 ); + $wikidiff2Version = phpversion( 'wikidiff2' ); + if ( + $wikidiff2Version !== false && + version_compare( $wikidiff2Version, '0.3.0', '>=' ) + ) { + $text = wikidiff2_do_diff( + $otext, + $ntext, + 2, + $this->getConfig()->get( 'WikiDiff2MovedParagraphDetectionCutoff' ) + ); + } else { + // Don't pass the 4th parameter for compatibility with older versions of wikidiff2 + $text = wikidiff2_do_diff( + $otext, + $ntext, + 2 + ); + + // Log a warning in case the configuration value is set to not silently ignore it + if ( $this->getConfig()->get( 'WikiDiff2MovedParagraphDetectionCutoff' ) > 0 ) { + wfLogWarning( '$wgWikiDiff2MovedParagraphDetectionCutoff is set but has no + effect since the used version of WikiDiff2 does not support it.' ); + } + } + $text .= $this->debug( 'wikidiff2' ); return $text; @@ -1145,17 +1174,17 @@ class DifferenceEngine extends ContextSource { if ( !$diff && !$otitle ) { $header .= " - - {$ntitle} + + {$ntitle} "; $multiColspan = 1; } else { if ( $diff ) { // Safari/Chrome show broken output if cols not used $header .= " - - - - "; + + + + "; $colspan = 2; $multiColspan = 4; } else { @@ -1164,20 +1193,20 @@ class DifferenceEngine extends ContextSource { } if ( $otitle || $ntitle ) { $header .= " - - {$otitle} - {$ntitle} + + {$otitle} + {$ntitle} "; } } if ( $multi != '' ) { - $header .= "{$multi}"; + $header .= "{$multi}"; } if ( $notice != '' ) { - $header .= "{$notice}"; + $header .= "{$notice}"; } return $header . $diff . "";