use factory method to get difference engine everywhere
authorDaniel Kinzler <daniel.kinzler@wikimedia.de>
Tue, 27 Mar 2012 14:08:04 +0000 (14:08 +0000)
committerDaniel Kinzler <daniel.kinzler@wikimedia.de>
Wed, 4 Apr 2012 17:59:46 +0000 (19:59 +0200)
includes/Article.php
includes/FeedUtils.php
includes/actions/RollbackAction.php
includes/api/ApiComparePages.php
includes/api/ApiQueryRevisions.php
includes/specials/SpecialComparePages.php
includes/specials/SpecialUndelete.php

index 9fccdf6..fd575aa 100644 (file)
@@ -725,7 +725,9 @@ class Article extends Page {
                $unhide = $wgRequest->getInt( 'unhide' ) == 1;
                $oldid = $this->getOldID();
 
-               $de = new DifferenceEngine( $this->getContext(), $oldid, $diff, $rcid, $purge, $unhide );
+        $contentHandler = ContentHandler::getForTitle( $this->getTitle() );
+               $de = $contentHandler->getDifferenceEngine( $this->getContext(), $oldid, $diff, $rcid, $purge, $unhide );
+
                // DifferenceEngine directly fetched the revision:
                $this->mRevIdFetched = $de->mNewid;
                $de->showDiffPage( $diffOnly );
index 8df4745..d189428 100644 (file)
@@ -117,7 +117,8 @@ class FeedUtils {
 
                        // Don't bother generating the diff if we won't be able to show it
                        if ( $wgFeedDiffCutoff > 0 ) {
-                               $de = new DifferenceEngine( $title, $oldid, $newid );
+                $contentHandler = ContentHandler::getForTitle( $title );
+                $de = $contentHandler->getDifferenceEngine( $title, $oldid, $newid );
                                $diffText = $de->getDiff(
                                        wfMsg( 'previousrevision' ), // hack
                                        wfMsg( 'revisionasof',
index 8379e27..dd47793 100644 (file)
@@ -109,7 +109,8 @@ class RollbackAction extends FormlessAction {
                $this->getOutput()->returnToMain( false, $this->getTitle() );
 
                if ( !$request->getBool( 'hidediff', false ) && !$this->getUser()->getBoolOption( 'norollbackdiff', false ) ) {
-                       $de = new DifferenceEngine( $this->getContext(), $current->getId(), $newId, false, true );
+            $contentHandler = ContentHandler::getForTitle( $this->getTitle() );
+            $de = $contentHandler->getDifferenceEngine( $this->getContext(), $current->getId(), $newId, false, true );
                        $de->showDiff( '', '' );
                }
        }
index 4bb94c4..3c987aa 100644 (file)
@@ -35,7 +35,8 @@ class ApiComparePages extends ApiBase {
                $rev1 = $this->revisionOrTitle( $params['fromrev'], $params['fromtitle'] );
                $rev2 = $this->revisionOrTitle( $params['torev'], $params['totitle'] );
 
-               $de = new DifferenceEngine( $this->getContext(),
+        $contentHandler = ContentHandler::getForModelName( $rev1->getContentModelName() );
+        $de = $contentHandler->getDifferenceEngine( $this->getContext(),
                        $rev1,
                        $rev2,
                        null, // rcid
index 82e15ee..11ea371 100644 (file)
@@ -114,7 +114,7 @@ class ApiQueryRevisions extends ApiQueryBase {
                }
 
                if ( !is_null( $params['difftotext'] ) ) {
-                       $this->difftotext = $params['difftotext'];
+                       $this->difftotext = $params['difftotext']; #FIXME: handle non-text content!
                } elseif ( !is_null( $params['diffto'] ) ) {
                        if ( $params['diffto'] == 'cur' ) {
                                $params['diffto'] = 0;
@@ -507,7 +507,7 @@ class ApiQueryRevisions extends ApiQueryBase {
 
                                if ( !is_null( $this->difftotext ) ) {
                                        $engine = $handler->getDifferenceEngine( $context );
-                                       $engine->setText( $text, $this->difftotext ); #FIXME: use content object!
+                                       $engine->setText( $text, $this->difftotext ); #FIXME: use content objects!...
                                } else {
                                        $engine = $handler->getDifferenceEngine( $context, $revision->getID(), $this->diffto );
                                        $vals['diff']['from'] = $engine->getOldid();
index 9e3c52b..878bda0 100644 (file)
@@ -111,7 +111,8 @@ class SpecialComparePages extends SpecialPage {
                $rev2 = self::revOrTitle( $data['Revision2'], $data['Page2'] );
 
                if( $rev1 && $rev2 ) {
-                       $de = new DifferenceEngine( $form->getContext(),
+            $contentHandler = ContentHandler::getForModelName( $rev1->getContentModelName() );
+                       $de = $contentHandler->getDifferenceEngine( $form->getContext(),
                                $rev1,
                                $rev2,
                                null, // rcid
index 1cf63dd..cfe1b85 100644 (file)
@@ -892,7 +892,8 @@ class SpecialUndelete extends SpecialPage {
         * @return String: HTML
         */
        function showDiff( $previousRev, $currentRev ) {
-               $diffEngine = new DifferenceEngine( $this->getContext() );
+        $contentHandler = ContentHandler::getForTitle( $this->getTitle() );
+               $diffEngine = $contentHandler->getDifferenceEngine( $this->getContext() );
                $diffEngine->showDiffStyle();
                $this->getOutput()->addHTML(
                        "<div>" .
@@ -909,8 +910,8 @@ class SpecialUndelete extends SpecialPage {
                                $this->diffHeader( $currentRev, 'n' ) .
                                "</td>\n" .
                        "</tr>" .
-                       $diffEngine->generateDiffBody(
-                               $previousRev->getText(), $currentRev->getText() ) .
+                       $diffEngine->generateContentDiffBody(
+                               $previousRev->getContent(), $currentRev->getContent() ) .
                        "</table>" .
                        "</div>\n"
                );