/* private */ var $mOldtext, $mNewtext;
/* private */ var $mOldUser, $mNewUser;
/* private */ var $mOldComment, $mNewComment;
+ /* private */ var $mOldPage, $mNewPage;
function DifferenceEngine( $old, $new )
{
function showDiffPage()
{
global $wgUser, $wgTitle, $wgOut, $wgLang;
-
+ $fname = "DifferenceEngine::showDiffPage";
+ wfProfileIn( $fname );
+
$t = $wgTitle->getPrefixedText() . " (Diff: {$this->mOldid}, " .
"{$this->mNewid})";
$mtext = wfMsg( "missingarticle", $t );
if ( ! $this->loadText() ) {
$wgOut->setPagetitle( wfMsg( "errorpagetitle" ) );
$wgOut->addHTML( $mtext );
+ wfProfileOut( $fname );
return;
}
$wgOut->suppressQuickbar();
+
+ $oldTitle = $this->mOldPage->getPrefixedText();
+ $newTitle = $this->mNewPage->getPrefixedText();
+ if( $oldTitle == $newTitle ) {
+ $wgOut->setPageTitle( $newTitle );
+ } else {
+ $wgOut->setPageTitle( $oldTitle . ", " . $newTitle );
+ }
$wgOut->setSubtitle( wfMsg( "difference" ) );
$wgOut->setRobotpolicy( "noindex,follow" );
+ if ( !( $this->mOldPage->userCanRead() && $this->mNewPage->userCanRead() ) ) {
+ $wgOut->loginToUse();
+ $wgOut->output();
+ wfProfileOut( $fname );
+ exit;
+ }
+
$sk = $wgUser->getSkin();
$talk = $wgLang->getNsText( NS_TALK );
$contribs = wfMsg( "contribslink" );
$oldHeader, $newHeader );
$wgOut->addHTML( "<hr /><h2>{$this->mNewtitle}</h2>\n" );
$wgOut->addWikiText( $this->mNewtext );
+
+ wfProfileOut( $fname );
}
function showDiff( $otext, $ntext, $otitle, $ntitle )
global $wgTitle, $wgOut, $wgLang;
$fname = "DifferenceEngine::loadText";
+ $dbr =& wfGetDB( DB_SLAVE );
if ( 0 == $this->mNewid || 0 == $this->mOldid ) {
$wgOut->setArticleFlag( true );
$this->mNewtitle = wfMsg( "currentrev" );
$id = $wgTitle->getArticleID();
- $sql = "SELECT cur_text, cur_user_text, cur_comment FROM cur WHERE cur_id={$id}";
- $res = wfQuery( $sql, DB_READ, $fname );
- if ( 0 == wfNumRows( $res ) ) { return false; }
+ $s = $dbr->getArray( 'cur', array( 'cur_text', 'cur_user_text', 'cur_comment' ),
+ array( 'cur_id' => $id ), $fname );
+ if ( $s === false ) {
+ return false;
+ }
- $s = wfFetchObject( $res );
+ $this->mNewPage = &$wgTitle;
$this->mNewtext = $s->cur_text;
$this->mNewUser = $s->cur_user_text;
$this->mNewComment = $s->cur_comment;
} else {
- $sql = "SELECT old_timestamp,old_text,old_flags,old_user_text,old_comment FROM old WHERE " .
- "old_id={$this->mNewid}";
+ $s = $dbr->getArray( 'old', array( 'old_namespace','old_title','old_timestamp', 'old_text',
+ 'old_flags','old_user_text','old_comment' ), array( 'old_id' => $this->mNewid ), $fname );
- $res = wfQuery( $sql, DB_READ, $fname );
- if ( 0 == wfNumRows( $res ) ) { return false; }
+ if ( $s === false ) {
+ return false;
+ }
- $s = wfFetchObject( $res );
$this->mNewtext = Article::getRevisionText( $s );
$t = $wgLang->timeanddate( $s->old_timestamp, true );
+ $this->mNewPage = Title::MakeTitle( $s->old_namespace, $s->old_title );
$this->mNewtitle = wfMsg( "revisionasof", $t );
$this->mNewUser = $s->old_user_text;
$this->mNewComment = $s->old_comment;
}
if ( 0 == $this->mOldid ) {
- $sql = "SELECT old_timestamp,old_text,old_flags,old_user_text,old_comment " .
- "FROM old USE INDEX (name_title_timestamp) WHERE " .
- "old_namespace=" . $wgTitle->getNamespace() . " AND " .
- "old_title='" . wfStrencode( $wgTitle->getDBkey() ) .
- "' ORDER BY inverse_timestamp LIMIT 1";
- $res = wfQuery( $sql, DB_READ, $fname );
+ $s = $dbr->getArray( 'old',
+ array( 'old_namespace','old_title','old_timestamp','old_text', 'old_flags','old_user_text','old_comment' ),
+ array( /* WHERE */
+ 'old_namespace' => $this->mNewPage->getNamespace(),
+ 'old_title' => $this->mNewPage->getDBkey()
+ ), $fname, array( 'ORDER BY' => 'inverse_timestamp', 'USE INDEX' => 'name_title_timestamp' )
+ );
} else {
- $sql = "SELECT old_timestamp,old_text,old_flags,old_user_text,old_comment FROM old WHERE " .
- "old_id={$this->mOldid}";
- $res = wfQuery( $sql, DB_READ, $fname );
+ $s = $dbr->getArray( 'old',
+ array( 'old_namespace','old_title','old_timestamp','old_text','old_flags','old_user_text','old_comment'),
+ array( 'old_id' => $this->mOldid ),
+ $fname
+ );
}
- if ( 0 == wfNumRows( $res ) ) { return false; }
-
- $s = wfFetchObject( $res );
+ if ( $s === false ) {
+ return false;
+ }
+ $this->mOldPage = Title::MakeTitle( $s->old_namespace, $s->old_title );
$this->mOldtext = Article::getRevisionText( $s );
$t = $wgLang->timeanddate( $s->old_timestamp, true );
function _flushGroup ($new_tag) {
if ($this->_group !== '') {
if ($this->_tag == 'mark')
- $this->_line .= "<font color=\"red\">$this->_group</font>";
+ $this->_line .= '<span class="diffchange">'.$this->_group.'</span>';
else
$this->_line .= $this->_group;
}
$l1 = wfMsg( "lineno", $xbeg );
$l2 = wfMsg( "lineno", $ybeg );
- $r = "<tr><td colspan='2' align='left'><strong>{$l1}</strong></td>\n" .
- "<td colspan='2' align='left'><strong>{$l2}</strong></td></tr>\n";
+ $r = '<tr><td colspan="2" align="left"><strong>'.$l1."</strong></td>\n" .
+ '<td colspan="2" align="left"><strong>'.$l2."</strong></td></tr>\n";
return $r;
}
}
function addedLine( $line ) {
- return "<td>+</td><td class='diff-addedline'>" .
- "<small>{$line}</small></td>";
+ return '<td>+</td><td class="diff-addedline">' .
+ $line.'</td>';
}
function deletedLine( $line ) {
- return "<td>-</td><td class='diff-deletedline'>" .
- "<small>{$line}</small></td>";
+ return '<td>-</td><td class="diff-deletedline">' .
+ $line.'</td>';
}
function emptyLine() {
- return "<td colspan='2'> </td>";
+ return '<td colspan="2"> </td>';
}
function contextLine( $line ) {
- return "<td> </td><td class='diff-context'><small>{$line}</small></td>";
+ return '<td> </td><td class="diff-context">'.$line.'</td>';
}
function _added($lines) {
global $wgOut;
foreach ($lines as $line) {
- $wgOut->addHTML( "<tr>" . $this->emptyLine() .
+ $wgOut->addHTML( '<tr>' . $this->emptyLine() .
$this->addedLine( $line ) . "</tr>\n" );
}
}
function _deleted($lines) {
global $wgOut;
foreach ($lines as $line) {
- $wgOut->addHTML( "<tr>" . $this->deletedLine( $line ) .
+ $wgOut->addHTML( '<tr>' . $this->deletedLine( $line ) .
$this->emptyLine() . "</tr>\n" );
}
}
function _context( $lines ) {
global $wgOut;
foreach ($lines as $line) {
- $wgOut->addHTML( "<tr>" . $this->contextLine( $line ) .
+ $wgOut->addHTML( '<tr>' . $this->contextLine( $line ) .
$this->contextLine( $line ) . "</tr>\n" );
}
}
while ( $line = array_shift( $del ) ) {
$aline = array_shift( $add );
- $wgOut->addHTML( "<tr>" . $this->deletedLine( $line ) .
+ $wgOut->addHTML( '<tr>' . $this->deletedLine( $line ) .
$this->addedLine( $aline ) . "</tr>\n" );
}
$this->_added( $add ); # If any leftovers