summaryrefslogtreecommitdiff
path: root/includes/RecentChange.php
diff options
context:
space:
mode:
authorPierre Schmitz <pierre@archlinux.de>2012-05-03 13:01:35 +0200
committerPierre Schmitz <pierre@archlinux.de>2012-05-03 13:01:35 +0200
commitd9022f63880ce039446fba8364f68e656b7bf4cb (patch)
tree16b40fbf17bf7c9ee6f4ead25b16dd192378050a /includes/RecentChange.php
parent27cf83d177256813e2e802241085fce5dd0f3fb9 (diff)
Update to MediaWiki 1.19.0
Diffstat (limited to 'includes/RecentChange.php')
-rw-r--r--includes/RecentChange.php180
1 files changed, 87 insertions, 93 deletions
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 ) {