From 61c6f0b22368a9edca5c74fc30984f7ac3f8e525 Mon Sep 17 00:00:00 2001 From: Jens Frank Date: Sun, 8 Aug 2004 02:20:00 +0000 Subject: [PATCH] Integrated C++ wikidiff engine. Enable by setting wgUseExternalDiffEngine to true. Needs wikidiff module from the extensions package and SWIG to compile. --- includes/DefaultSettings.php | 4 ++++ includes/DifferenceEngine.php | 25 +++++++++++++++---------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index d9d64eb4ed..1faa21cf06 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -473,6 +473,10 @@ $wgUseGeoMode = false; # Validation for print or other production versions $wgUseValidation = false; +# Use external C++ diff engine (module wikidiff from the +# extensions package) +$wgUseExternalDiffEngine = false; + } else { die(); } diff --git a/includes/DifferenceEngine.php b/includes/DifferenceEngine.php index 61aec228da..8b80c27e8b 100644 --- a/includes/DifferenceEngine.php +++ b/includes/DifferenceEngine.php @@ -90,24 +90,29 @@ class DifferenceEngine { function showDiff( $otext, $ntext, $otitle, $ntitle ) { - global $wgOut; + global $wgOut, $wgUseExternalDiffEngine; + + $otext = str_replace( "\r\n", "\n", htmlspecialchars( $otext ) ); + $ntext = str_replace( "\r\n", "\n", htmlspecialchars( $ntext ) ); - $ota = explode( "\n", str_replace( "\r\n", "\n", - htmlspecialchars( $otext ) ) ); - $nta = explode( "\n", str_replace( "\r\n", "\n", - htmlspecialchars( $ntext ) ) ); - $wgOut->addHTML( "addHTML( "
\n" ); - - $diffs = new Diff( $ota, $nta ); - $formatter = new TableDiffFormatter(); - $formatter->format( $diffs ); + if ( $wgUseExternalDiffEngine ) { + dl("php_wikidiff.so"); + $wgOut->addHTML( wikidiff_do_diff( $otext, $ntext, 2) ); + } else { + $ota = explode( "\n", $otext); + $nta = explode( "\n", $ntext); + $diffs = new Diff( $ota, $nta ); + $formatter = new TableDiffFormatter(); + $formatter->format( $diffs ); + } $wgOut->addHTML( "
{$otitle} {$ntitle}
\n" ); } -- 2.20.1