From d9022f63880ce039446fba8364f68e656b7bf4cb Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Thu, 3 May 2012 13:01:35 +0200 Subject: Update to MediaWiki 1.19.0 --- includes/RecentChange.php | 180 ++++++++++++++++++++++------------------------ 1 file changed, 87 insertions(+), 93 deletions(-) (limited to 'includes/RecentChange.php') diff --git a/includes/RecentChange.php b/includes/RecentChange.php index 955986e9..ca0ed955 100644 --- a/includes/RecentChange.php +++ b/includes/RecentChange.php @@ -55,15 +55,24 @@ class RecentChange { */ var $mMovedToTitle = false; var $numberofWatchingusers = 0 ; # Dummy to prevent error message in SpecialRecentchangeslinked + var $notificationtimestamp; # Factory methods + /** + * @param $row + * @return RecentChange + */ public static function newFromRow( $row ) { $rc = new RecentChange; $rc->loadFromRow( $row ); return $rc; } + /** + * @param $row + * @return RecentChange + */ public static function newFromCurRow( $row ) { $rc = new RecentChange; $rc->loadFromCurRow( $row ); @@ -96,9 +105,7 @@ class RecentChange { * @param $fname Mixed: override the method name in profiling/logs * @return RecentChange */ - public static function newFromConds( $conds, $fname = false ) { - if( $fname === false ) - $fname = __METHOD__; + public static function newFromConds( $conds, $fname = __METHOD__ ) { $dbr = wfGetDB( DB_SLAVE ); $res = $dbr->select( 'recentchanges', @@ -116,10 +123,16 @@ class RecentChange { # Accessors + /** + * @param $attribs array + */ public function setAttribs( $attribs ) { $this->mAttribs = $attribs; } + /** + * @param $extra array + */ public function setExtra( $extra ) { $this->mExtra = $extra; } @@ -137,6 +150,9 @@ class RecentChange { return $this->mTitle; } + /** + * @return bool|\Title + */ public function getMovedToTitle() { if( $this->mMovedToTitle === false ) { $this->mMovedToTitle = Title::makeTitle( $this->mAttribs['rc_moved_to_ns'], @@ -145,10 +161,12 @@ class RecentChange { return $this->mMovedToTitle; } - # Writes the data in this object to the database - public function save() { - global $wgLocalInterwiki, $wgPutIPinRC, $wgRC2UDPAddress, $wgRC2UDPOmitBots; - $fname = 'RecentChange::save'; + /** + * Writes the data in this object to the database + * @param $noudp bool + */ + public function save( $noudp = false ) { + global $wgLocalInterwiki, $wgPutIPinRC, $wgContLang; $dbw = wfGetDB( DB_MASTER ); if( !is_array($this->mExtra) ) { @@ -165,6 +183,9 @@ class RecentChange { unset( $this->mAttribs['rc_ip'] ); } + # Make sure summary is truncated (whole multibyte characters) + $this->mAttribs['rc_comment'] = $wgContLang->truncate( $this->mAttribs['rc_comment'], 255 ); + # Fixup database timestamps $this->mAttribs['rc_timestamp'] = $dbw->timestamp($this->mAttribs['rc_timestamp']); $this->mAttribs['rc_cur_time'] = $dbw->timestamp($this->mAttribs['rc_cur_time']); @@ -176,17 +197,17 @@ class RecentChange { } # Insert new row - $dbw->insert( 'recentchanges', $this->mAttribs, $fname ); + $dbw->insert( 'recentchanges', $this->mAttribs, __METHOD__ ); # Set the ID $this->mAttribs['rc_id'] = $dbw->insertId(); - + # Notify extensions wfRunHooks( 'RecentChange_save', array( &$this ) ); # Notify external application via UDP - if( $wgRC2UDPAddress && ( !$this->mAttribs['rc_bot'] || !$wgRC2UDPOmitBots ) ) { - self::sendToUDP( $this->getIRCLine() ); + if ( !$noudp ) { + $this->notifyRC2UDP(); } # E-mail notifications @@ -194,24 +215,25 @@ class RecentChange { if( $wgUseEnotif || $wgShowUpdatedMarker ) { // Users if( $this->mAttribs['rc_user'] ) { - $editor = ($wgUser->getId() == $this->mAttribs['rc_user']) ? + $editor = ($wgUser->getId() == $this->mAttribs['rc_user']) ? $wgUser : User::newFromID( $this->mAttribs['rc_user'] ); // Anons } else { - $editor = ($wgUser->getName() == $this->mAttribs['rc_user_text']) ? + $editor = ($wgUser->getName() == $this->mAttribs['rc_user_text']) ? $wgUser : User::newFromName( $this->mAttribs['rc_user_text'], false ); } + $title = Title::makeTitle( $this->mAttribs['rc_namespace'], $this->mAttribs['rc_title'] ); + # @todo FIXME: This would be better as an extension hook $enotif = new EmailNotification(); - $title = Title::makeTitle( $this->mAttribs['rc_namespace'], $this->mAttribs['rc_title'] ); - $enotif->notifyOnPageChange( $editor, $title, + $status = $enotif->notifyOnPageChange( $editor, $title, $this->mAttribs['rc_timestamp'], $this->mAttribs['rc_comment'], $this->mAttribs['rc_minor'], $this->mAttribs['rc_last_oldid'] ); } } - + public function notifyRC2UDP() { global $wgRC2UDPAddress, $wgRC2UDPOmitBots; # Notify external application via UDP @@ -250,7 +272,7 @@ class RecentChange { } return false; } - + /** * Remove newlines, carriage returns and decode html entites * @param $text String @@ -279,7 +301,7 @@ class RecentChange { } return $change->doMarkPatrolled( $wgUser, $auto ); } - + /** * Mark this RecentChange as patrolled * @@ -321,7 +343,7 @@ class RecentChange { wfRunHooks( 'MarkPatrolledComplete', array($this->getAttribute('rc_id'), &$user, false) ); return array(); } - + /** * Mark this RecentChange patrolled, without error checking * @return Integer: number of affected rows @@ -361,8 +383,9 @@ class RecentChange { */ public static function notifyEdit( $timestamp, &$title, $minor, &$user, $comment, $oldId, $lastTimestamp, $bot, $ip='', $oldSize=0, $newSize=0, $newId=0, $patrol=0 ) { + global $wgRequest; if( !$ip ) { - $ip = wfGetIP(); + $ip = $wgRequest->getIP(); if( !$ip ) $ip = ''; } @@ -424,9 +447,12 @@ class RecentChange { */ public static function notifyNew( $timestamp, &$title, $minor, &$user, $comment, $bot, $ip='', $size=0, $newId=0, $patrol=0 ) { + global $wgRequest; if( !$ip ) { - $ip = wfGetIP(); - if( !$ip ) $ip = ''; + $ip = $wgRequest->getIP(); + if( !$ip ) { + $ip = ''; + } } $rc = new RecentChange; @@ -465,75 +491,24 @@ class RecentChange { 'newSize' => $size ); $rc->save(); - return $rc; + return $rc; } - # Makes an entry in the database corresponding to a rename - /** * @param $timestamp - * @param $oldTitle Title - * @param $newTitle Title - * @param $user User - * @param $comment + * @param $title + * @param $user + * @param $actionComment * @param $ip string - * @param $overRedir bool - * @return void + * @param $type + * @param $action + * @param $target + * @param $logComment + * @param $params + * @param $newId int + * @return bool */ - public static function notifyMove( $timestamp, &$oldTitle, &$newTitle, &$user, $comment, $ip='', - $overRedir = false ) { - global $wgRequest; - if( !$ip ) { - $ip = wfGetIP(); - if( !$ip ) $ip = ''; - } - - $rc = new RecentChange; - $rc->mAttribs = array( - 'rc_timestamp' => $timestamp, - 'rc_cur_time' => $timestamp, - 'rc_namespace' => $oldTitle->getNamespace(), - 'rc_title' => $oldTitle->getDBkey(), - 'rc_type' => $overRedir ? RC_MOVE_OVER_REDIRECT : RC_MOVE, - 'rc_minor' => 0, - 'rc_cur_id' => $oldTitle->getArticleID(), - 'rc_user' => $user->getId(), - 'rc_user_text' => $user->getName(), - 'rc_comment' => $comment, - 'rc_this_oldid' => 0, - 'rc_last_oldid' => 0, - 'rc_bot' => $user->isAllowed( 'bot' ) ? $wgRequest->getBool( 'bot' , true ) : 0, - 'rc_moved_to_ns' => $newTitle->getNamespace(), - 'rc_moved_to_title' => $newTitle->getDBkey(), - 'rc_ip' => $ip, - 'rc_new' => 0, # obsolete - 'rc_patrolled' => 1, - 'rc_old_len' => null, - 'rc_new_len' => null, - 'rc_deleted' => 0, - 'rc_logid' => 0, # notifyMove not used anymore - 'rc_log_type' => null, - 'rc_log_action' => '', - 'rc_params' => '' - ); - - $rc->mExtra = array( - 'prefixedDBkey' => $oldTitle->getPrefixedDBkey(), - 'lastTimestamp' => 0, - 'prefixedMoveTo' => $newTitle->getPrefixedDBkey() - ); - $rc->save(); - } - - public static function notifyMoveToNew( $timestamp, &$oldTitle, &$newTitle, &$user, $comment, $ip='' ) { - RecentChange::notifyMove( $timestamp, $oldTitle, $newTitle, $user, $comment, $ip, false ); - } - - public static function notifyMoveOverRedirect( $timestamp, &$oldTitle, &$newTitle, &$user, $comment, $ip='' ) { - RecentChange::notifyMove( $timestamp, $oldTitle, $newTitle, $user, $comment, $ip, true ); - } - - public static function notifyLog( $timestamp, &$title, &$user, $actionComment, $ip='', $type, + public static function notifyLog( $timestamp, &$title, &$user, $actionComment, $ip='', $type, $action, $target, $logComment, $params, $newId=0 ) { global $wgLogRestrictions; @@ -565,7 +540,7 @@ class RecentChange { $type, $action, $target, $logComment, $params, $newId=0 ) { global $wgRequest; if( !$ip ) { - $ip = wfGetIP(); + $ip = $wgRequest->getIP(); if( !$ip ) { $ip = ''; } @@ -607,14 +582,22 @@ class RecentChange { return $rc; } - # Initialises the members of this object from a mysql row object + /** + * Initialises the members of this object from a mysql row object + * + * @param $row + */ public function loadFromRow( $row ) { $this->mAttribs = get_object_vars( $row ); $this->mAttribs['rc_timestamp'] = wfTimestamp(TS_MW, $this->mAttribs['rc_timestamp']); $this->mAttribs['rc_deleted'] = $row->rc_deleted; // MUST be set } - # Makes a pseudo-RC entry from a cur row + /** + * Makes a pseudo-RC entry from a cur row + * + * @param $row + */ public function loadFromCurRow( $row ) { $this->mAttribs = array( 'rc_timestamp' => wfTimestamp(TS_MW, $row->rev_timestamp), @@ -656,6 +639,9 @@ class RecentChange { return isset( $this->mAttribs[$name] ) ? $this->mAttribs[$name] : null; } + /** + * @return array + */ public function getAttributes() { return $this->mAttribs; } @@ -663,6 +649,8 @@ class RecentChange { /** * Gets the end part of the diff URL associated with this object * Blank if no diff link should be displayed + * @param $forceCur + * @return string */ public function diffLinkTrail( $forceCur ) { if( $this->mAttribs['rc_type'] == RC_EDIT ) { @@ -679,6 +667,9 @@ class RecentChange { return $trail; } + /** + * @return string + */ public function getIRCLine() { global $wgUseRCPatrol, $wgUseNPPatrol, $wgRC2UDPInterwikiPrefix, $wgLocalInterwiki, $wgCanonicalServer, $wgScript; @@ -708,8 +699,8 @@ class RecentChange { $url .= $query; } - if( isset( $this->mExtra['oldSize'] ) && isset( $this->mExtra['newSize'] ) ) { - $szdiff = $this->mExtra['newSize'] - $this->mExtra['oldSize']; + if( $this->mAttribs['rc_old_len'] !== null && $this->mAttribs['rc_new_len'] !== null ) { + $szdiff = $this->mAttribs['rc_new_len'] - $this->mAttribs['rc_old_len']; if($szdiff < -500) { $szdiff = "\002$szdiff\002"; } elseif($szdiff >= 0) { @@ -747,18 +738,21 @@ class RecentChange { } else { $titleString = "\00314[[\00307$title\00314]]"; } - + # see http://www.irssi.org/documentation/formats for some colour codes. prefix is \003, # no colour (\003) switches back to the term default $fullString = "$titleString\0034 $flag\00310 " . - "\00302$url\003 \0035*\003 \00303$user\003 \0035*\003 $szdiff \00310$comment\003\n"; - + "\00302$url\003 \0035*\003 \00303$user\003 \0035*\003 $szdiff \00310$comment\003\n"; + return $fullString; } /** * Returns the change size (HTML). * The lengths can be given optionally. + * @param $old int + * @param $new int + * @return string */ public function getCharacterDifference( $old = 0, $new = 0 ) { if( $old === 0 ) { -- cgit v1.2.3-54-g00ecf