From c62e068b274b032fef6ff98d84fd611cf525278a Mon Sep 17 00:00:00 2001 From: Leon Weber Date: Wed, 13 Dec 2006 20:08:02 +0000 Subject: [PATCH] * Made the show change size function work on page moves, page creations, and log entries. * Also fixed it in the javascript recentchanges. * Moved the value behind the page title to ensure the columns are still lined up * Merged both sql patches into one. * Set the default for both columns to NULL to make it work on edits before the db update. --- RELEASE-NOTES | 2 + includes/ChangesList.php | 50 +++++++++++++++-------- includes/RecentChange.php | 46 ++++++++++++++------- maintenance/archives/patch-rc_len.sql | 9 ++++ maintenance/archives/patch-rc_new_len.sql | 9 ---- maintenance/archives/patch-rc_old_len.sql | 9 ---- maintenance/updaters.inc | 7 ++-- 7 files changed, 80 insertions(+), 52 deletions(-) create mode 100644 maintenance/archives/patch-rc_len.sql delete mode 100644 maintenance/archives/patch-rc_new_len.sql delete mode 100644 maintenance/archives/patch-rc_old_len.sql diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 50d381cb2b..49605bfcd3 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -301,6 +301,8 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN after the password is reset, for instance by e-mail. * (bug 6394) Invalidate the password set for "by e-mail" account creations to avoid accidental empty password creations. +* Made the show change size function work on page moves, page creations, and + log entries. Also fixed it in the javascript recentchanges. == Languages updated == diff --git a/includes/ChangesList.php b/includes/ChangesList.php index c918de97f6..ede27cefb1 100644 --- a/includes/ChangesList.php +++ b/includes/ChangesList.php @@ -255,10 +255,6 @@ class OldChangesList extends ChangesList { $this->insertDiffHist($s, $rc, $unpatrolled); - if( $wgRCShowChangedSize ) { - $s .= $rc->getCharacterDifference() . ' . . '; - } - # M, N, b and ! (minor, new, bot and unpatrolled) $s .= ' ' . $this->recentChangesFlags( $rc_type == RC_NEW, $rc_minor, $unpatrolled, '', $rc_bot ); $this->insertArticleLink($s, $rc, $unpatrolled, $watched); @@ -269,6 +265,11 @@ class OldChangesList extends ChangesList { wfProfileIn( $fname.'-rest' ); $this->insertTimestamp($s,$rc); + + if( $wgRCShowChangedSize ) { + $s .= ( $rc->getCharacterDifference() == '' ? '' : $rc->getCharacterDifference() . ' . . ' ); + } + $this->insertUserRelatedLinks($s,$rc); $this->insertComment($s, $rc); @@ -294,7 +295,7 @@ class EnhancedChangesList extends ChangesList { * Format a line for enhanced recentchange (aka with javascript and block of lines). */ function recentChangesLine( &$baseRC, $watched = false ) { - global $wgLang, $wgContLang, $wgRCShowChangedSize; + global $wgLang, $wgContLang; # Create a specialised object $rc = RCCacheEntry::newFromParent( $baseRC ); @@ -343,12 +344,7 @@ class EnhancedChangesList extends ChangesList { $clink = $this->skin->makeKnownLinkObj( $rc->getTitle(), '' ); } - $time = $wgContLang->time( $rc_timestamp, true, true ); - # Character diff - if( $wgRCShowChangedSize ) { - $time .= ' ' . $rc->getCharacterDifference(); - } - $time .= ' '; + $time = $wgContLang->time( $rc_timestamp, true, true ) . ' '; $rc->watched = $watched; $rc->link = $clink; $rc->timestamp = $time; @@ -472,13 +468,23 @@ class EnhancedChangesList extends ChangesList { if( $block[0]->mAttribs['rc_type'] != RC_LOG ) { # Changes $r .= ' ('.count($block).' '; + if( $isnew ) { $r .= $this->message['changes']; } else { $r .= $this->skin->makeKnownLinkObj( $block[0]->getTitle(), $this->message['changes'], $curIdEq."&diff=$currentRevision&oldid=$oldid" ); } - $r .= '; '; + + # Character difference + $chardiff = $rcObj->getCharacterDifference( $block[ count( $block ) - 1 ]->mAttribs['rc_old_len'], + $block[0]->mAttribs['rc_new_len'] ); + if( $chardiff == '' ) { + $r .= '; '; + } else { + $r .= '; ' . $chardiff . ' '; + } + # History $r .= $this->skin->makeKnownLinkObj( $block[0]->getTitle(), @@ -521,7 +527,14 @@ class EnhancedChangesList extends ChangesList { $r .= $rcObj->curlink; $r .= '; '; $r .= $rcObj->lastlink; - $r .= ') . . '.$rcObj->userlink; + $r .= ') . . '; + + # Character diff + if( $wgRCShowChangedSize ) { + $r .= ( $rcObj->getCharacterDifference() == '' ? '' : $rcObj->getCharacterDifference() . ' . . ' ) ; + } + + $r .= $rcObj->userlink; $r .= $rcObj->usertalklink; $r .= $this->skin->commentBlock( $rc_comment, $rcObj->getTitle() ); $r .= "
\n"; @@ -591,7 +604,7 @@ class EnhancedChangesList extends ChangesList { * @return string a HTML formated line (generated using $r) */ function recentChangesBlockLine( $rcObj ) { - global $wgContLang; + global $wgContLang, $wgRCShowChangedSize; # Get rc_xxxx variables extract( $rcObj->mAttribs ); @@ -619,10 +632,15 @@ class EnhancedChangesList extends ChangesList { $r .= ' ('. $rcObj->difflink .'; '; # Hist - $r .= $this->skin->makeKnownLinkObj( $rcObj->getTitle(), wfMsg( 'hist' ), $curIdEq.'&action=history' ); + $r .= $this->skin->makeKnownLinkObj( $rcObj->getTitle(), wfMsg( 'hist' ), $curIdEq.'&action=history' ) . ') . . '; + + # Character diff + if( $wgRCShowChangedSize ) { + $r .= ( $rcObj->getCharacterDifference() == '' ? '' : ' ' . $rcObj->getCharacterDifference() . ' . . ' ) ; + } # User/talk - $r .= ') . . '.$rcObj->userlink . $rcObj->usertalklink; + $r .= $rcObj->userlink . $rcObj->usertalklink; # Comment if( $rc_type != RC_MOVE && $rc_type != RC_MOVE_OVER_REDIRECT ) { diff --git a/includes/RecentChange.php b/includes/RecentChange.php index 098572c473..465d1f2c15 100644 --- a/includes/RecentChange.php +++ b/includes/RecentChange.php @@ -299,7 +299,9 @@ class RecentChange 'rc_moved_to_title' => '', 'rc_ip' => $ip, 'rc_patrolled' => 0, - 'rc_new' => 1 # obsolete + 'rc_new' => 1, # obsolete + 'rc_old_len' => 0, + 'rc_new_len' => $size ); $rc->mExtra = array( @@ -342,8 +344,8 @@ class RecentChange 'rc_ip' => $ip, 'rc_new' => 0, # obsolete 'rc_patrolled' => 1, - 'rc_old_len' => 0, - 'rc_new_len' => 0, + 'rc_old_len' => NULL, + 'rc_new_len' => NULL, ); $rc->mExtra = array( @@ -394,8 +396,8 @@ class RecentChange 'rc_ip' => $ip, 'rc_patrolled' => 1, 'rc_new' => 0, # obsolete - 'rc_old_len' => 0, - 'rc_new_len' => 0, + 'rc_old_len' => NULL, + 'rc_new_len' => NULL, ); $rc->mExtra = array( 'prefixedDBkey' => $title->getPrefixedDBkey(), @@ -440,8 +442,8 @@ class RecentChange 'rc_id' => $row->rc_id, 'rc_patrolled' => $row->rc_patrolled, 'rc_new' => $row->page_is_new, # obsolete - 'rc_old_len' => 0, # we can't get the text lengts from a cur row - 'rc_new_len' => 0, + 'rc_old_len' => NULL, # we can't get the text lengts from a cur row + 'rc_new_len' => NULL, ); $this->mExtra = array(); @@ -533,18 +535,34 @@ class RecentChange return $fullString; } - function getCharacterDifference() { - global $wgRCChangedSizeThreshold; - $szdiff = $this->mAttribs['rc_new_len'] - $this->mAttribs['rc_old_len']; + /** + * Returns the change size (HTML). + * The lengths can be given optionally. + */ + function getCharacterDifference( $old = 0, $new = 0 ) { + global $wgRCChangedSizeThreshold, $wgLang; + + if( $old === 0 ) { + $old = $this->mAttribs['rc_old_len']; + } + if( $new === 0 ) { + $new = $this->mAttribs['rc_new_len']; + } + + if( $old === NULL || $new === NULL ) { + return ''; + } + + $szdiff = $new - $old; if( $szdiff < $wgRCChangedSizeThreshold ) { - return "($szdiff)"; + return '(' . $wgLang->formatNum( $szdiff ) . ''; } elseif( $szdiff === 0 ) { - return "($szdiff)"; + return '(' . $wgLang->formatNum( $szdiff ) . ')'; } elseif( $szdiff > 0 ) { - return "(+$szdiff)"; + return '(+' . $wgLang->formatNum( $szdiff ) . ')'; } else { - return "($szdiff)"; + return '(' . $wgLang->formatNum( $szdiff ) . ')'; } } } diff --git a/maintenance/archives/patch-rc_len.sql b/maintenance/archives/patch-rc_len.sql new file mode 100644 index 0000000000..920f755b6e --- /dev/null +++ b/maintenance/archives/patch-rc_len.sql @@ -0,0 +1,9 @@ +-- +-- patch-rc_len.sql +-- Adds two rows to recentchanges to hold the text size befor and after the edit +-- 2006-12-03 +-- + +ALTER TABLE /*$wgDBprefix*/recentchanges + ADD COLUMN rc_old_len int(10), ADD COLUMN rc_new_len int(10); + diff --git a/maintenance/archives/patch-rc_new_len.sql b/maintenance/archives/patch-rc_new_len.sql deleted file mode 100644 index 6cdd48d7d9..0000000000 --- a/maintenance/archives/patch-rc_new_len.sql +++ /dev/null @@ -1,9 +0,0 @@ --- --- patch-rc_new_len.sql --- Adds a row to recentchanges to hold the text size after the edit --- 2006-12-03 --- - -ALTER TABLE /*$wgDBprefix*/recentchanges - ADD COLUMN rc_new_len int(10) default 0; - diff --git a/maintenance/archives/patch-rc_old_len.sql b/maintenance/archives/patch-rc_old_len.sql deleted file mode 100644 index 8b46ba3169..0000000000 --- a/maintenance/archives/patch-rc_old_len.sql +++ /dev/null @@ -1,9 +0,0 @@ --- --- patch-rc_old_len.sql --- Adds a row to recentchanges to hold the text size before the edit --- 2006-12-03 --- - -ALTER TABLE /*$wgDBprefix*/recentchanges - ADD COLUMN rc_old_len int(10) default 0; - diff --git a/maintenance/updaters.inc b/maintenance/updaters.inc index 25a0223843..81481ec240 100644 --- a/maintenance/updaters.inc +++ b/maintenance/updaters.inc @@ -43,8 +43,7 @@ $wgNewFields = array( array( 'recentchanges', 'rc_ip', 'patch-rc_ip.sql' ), array( 'recentchanges', 'rc_id', 'patch-rc_id.sql' ), array( 'recentchanges', 'rc_patrolled', 'patch-rc-patrol.sql' ), - array( 'recentchanges', 'rc_old_len', 'patch-rc_old_len.sql' ), - array( 'recentchanges', 'rc_new_len', 'patch-rc_new_len.sql' ), + array( 'recentchanges', 'rc_old_len', 'patch-rc_len.sql' ), array( 'user', 'user_real_name', 'patch-user-realname.sql' ), array( 'user', 'user_token', 'patch-user_token.sql' ), array( 'user', 'user_email_token', 'patch-user_email_token.sql' ), @@ -1050,8 +1049,8 @@ CREATE INDEX querycachetwo_title ON querycachetwo (qcc_type,qcc_namespace,q CREATE INDEX querycachetwo_titletwo ON querycachetwo (qcc_type,qcc_namespacetwo,qcc_titletwo); -- New columns for fancy recentchanges display -ALTER TABLE recentchanges ADD rc_old_len INT DEFAULT 0; -ALTER TABLE recentchanges ADD rc_new_len INT DEFAULT 0; +ALTER TABLE recentchanges ADD rc_old_len INT; +ALTER TABLE recentchanges ADD rc_new_len INT; -- Note this upgrade INSERT INTO mediawiki_version (type,mw_version,notes) -- 2.20.1