MediaWiki  1.33.0
RecentChange Class Reference

Utility class for creating new RC entries. More...

Inheritance diagram for RecentChange:
Collaboration diagram for RecentChange:

Public Member Functions

 addTags ( $tags)
 Tags to append to the recent change, and associated revision/log. More...
 
 diffLinkTrail ( $forceCur)
 Gets the end part of the diff URL associated with this object Blank if no diff link should be displayed. More...
 
 doMarkPatrolled (User $user, $auto=false, $tags=null)
 Mark this RecentChange as patrolled. More...
 
 getAttribute ( $name)
 Get an attribute value. More...
 
 getAttributes ()
 
 getCharacterDifference ( $old=0, $new=0)
 Returns the change size (HTML). More...
 
 getParam ( $name)
 Get a parameter value. More...
 
 getPerformer ()
 Get the User object of the person who performed this change. More...
 
getTitle ()
 
 loadFromRow ( $row)
 Initialises the members of this object from a mysql row object. More...
 
 notifyRCFeeds (array $feeds=null)
 Notify all the feeds about the change. More...
 
 parseParams ()
 Parses and returns the rc_params attribute. More...
 
 reallyMarkPatrolled ()
 Mark this RecentChange patrolled, without error checking. More...
 
 save ( $send=self::SEND_FEED)
 Writes the data in this object to the database. More...
 
 setAttribs ( $attribs)
 
 setExtra ( $extra)
 

Static Public Member Functions

static getChangeTypes ()
 Get an array of all change types. More...
 
static getEngine ( $uri, $params=[])
 
static getQueryInfo ()
 Return the tables, fields, and join conditions to be selected to create a new recentchanges object. More...
 
static isInRCLifespan ( $timestamp, $tolerance=0)
 Check whether the given timestamp is new enough to have a RC row with a given tolerance as the recentchanges table might not be cleared out regularly (so older entries might exist) or rows which will be deleted soon shouldn't be included. More...
 
static markPatrolled ( $change, $auto=false, $tags=null)
 Mark a given change as patrolled. More...
 
static newForCategorization ( $timestamp, Title $categoryTitle, User $user=null, $comment, Title $pageTitle, $oldRevId, $newRevId, $lastTimestamp, $bot, $ip='', $deleted=0, $added=null)
 Constructs a RecentChange object for the given categorization This does not call save() on the object and thus does not write to the db. More...
 
static newFromConds ( $conds, $fname=__METHOD__, $dbType=DB_REPLICA)
 Find the first recent change matching some specific conditions. More...
 
static newFromId ( $rcid)
 Obtain the recent change with a given rc_id value. More...
 
static newFromRow ( $row)
 
static newLogEntry ( $timestamp, $title, $user, $actionComment, $ip, $type, $action, $target, $logComment, $params, $newId=0, $actionCommentIRC='', $revId=0, $isPatrollable=false)
 
static notifyEdit ( $timestamp, $title, $minor, $user, $comment, $oldId, $lastTimestamp, $bot, $ip='', $oldSize=0, $newSize=0, $newId=0, $patrol=0, $tags=[])
 Makes an entry in the database corresponding to an edit. More...
 
static notifyLog ( $timestamp, $title, $user, $actionComment, $ip, $type, $action, $target, $logComment, $params, $newId=0, $actionCommentIRC='')
 
static notifyNew ( $timestamp, $title, $minor, $user, $comment, $bot, $ip='', $size=0, $newId=0, $patrol=0, $tags=[])
 Makes an entry in the database corresponding to page creation Note: the title object must be loaded with the new id using resetArticleID() More...
 
static parseFromRCType ( $rcType)
 Parsing RC_* constants to human-readable test. More...
 
static parseToRCType ( $type)
 Parsing text to RC_* constants. More...
 
static selectFields ()
 Return the list of recentchanges fields that should be selected to create a new recentchanges object. More...
 

Public Attributes

int $counter = -1
 Line number of recent change. More...
 
 $mAttribs = []
 
 $mExtra = []
 
Title $mTitle = false
 
 $notificationtimestamp
 
 $numberofWatchingusers = 0
 
const PRC_AUTOPATROLLED = 2
 
const PRC_PATROLLED = 1
 
const PRC_UNPATROLLED = 0
 
const SRC_CATEGORIZE = 'mw.categorize'
 
const SRC_EDIT = 'mw.edit'
 
const SRC_EXTERNAL = 'mw.external'
 
const SRC_LOG = 'mw.log'
 
const SRC_NEW = 'mw.new'
 

Static Private Member Functions

static checkIPAddress ( $ip)
 

Private Attributes

User $mPerformer = false
 
array $tags = []
 List of tags to apply. More...
 

Static Private Attributes

static array $changeTypes
 Array of change types. More...
 

Detailed Description

Utility class for creating new RC entries.

mAttribs: rc_id id of the row in the recentchanges table rc_timestamp time the entry was made rc_namespace namespace # rc_title non-prefixed db key rc_type is new entry, used to determine whether updating is necessary rc_source string representation of change source rc_minor is minor rc_cur_id page_id of associated page entry rc_user user id who made the entry rc_user_text user name who made the entry rc_actor actor id who made the entry rc_comment edit summary rc_this_oldid rev_id associated with this entry (or zero) rc_last_oldid rev_id associated with the entry before this one (or zero) rc_bot is bot, hidden rc_ip IP address of the user in dotted quad notation rc_new obsolete, use rc_type==RC_NEW rc_patrolled boolean whether or not someone has marked this edit as patrolled rc_old_len integer byte length of the text before the edit rc_new_len the same after the edit rc_deleted partial deletion rc_logid the log_id value for this log entry (or zero) rc_log_type the log type (or null) rc_log_action the log action (or null) rc_params log params

mExtra: prefixedDBkey prefixed db key, used by external app via msg queue lastTimestamp timestamp of previous entry, used in WHERE clause during update oldSize text size before the change newSize text size after the change pageStatus status of the page: created, deleted, moved, restored, changed

temporary: not stored in the database notificationtimestamp numberofWatchingusers

Todo:
Deprecate access to mAttribs (direct or via getAttributes). Right now we're having to include both rc_comment and rc_comment_text/rc_comment_data so random crap works right.

Definition at line 69 of file RecentChange.php.

Member Function Documentation

◆ addTags()

RecentChange::addTags (   $tags)

Tags to append to the recent change, and associated revision/log.

Since
1.28
Parameters
string | string[]$tags

Implements MediaWiki\ChangeTags\Taggable.

Definition at line 1211 of file RecentChange.php.

References $tags.

◆ checkIPAddress()

static RecentChange::checkIPAddress (   $ip)
staticprivate

Definition at line 1154 of file RecentChange.php.

References $wgRequest, and IP\isIPAddress().

Referenced by newForCategorization(), newLogEntry(), notifyEdit(), and notifyNew().

◆ diffLinkTrail()

RecentChange::diffLinkTrail (   $forceCur)

Gets the end part of the diff URL associated with this object Blank if no diff link should be displayed.

Parameters
bool$forceCur
Returns
string

Definition at line 1117 of file RecentChange.php.

References RC_EDIT.

◆ doMarkPatrolled()

RecentChange::doMarkPatrolled ( User  $user,
  $auto = false,
  $tags = null 
)

Mark this RecentChange as patrolled.

NOTE: Can also return 'rcpatroldisabled', 'hookaborted' and 'markedaspatrollederror-noautopatrol' as errors

Parameters
User$userUser object doing the action
bool$autoFor automatic patrol
string | string[] | null$tagsChange tags to add to the patrol log entry ($user should be able to add the specified tags before this is called)
Returns
array Array of permissions errors, see Title::getUserPermissionsErrors()

Definition at line 590 of file RecentChange.php.

References $auto, $tags, $user, $wgUseFilePatrol, $wgUseNPPatrol, $wgUseRCPatrol, getAttribute(), getTitle(), User\isAllowed(), RC_LOG, RC_NEW, reallyMarkPatrolled(), PatrolLog\record(), and Hooks\run().

◆ getAttribute()

RecentChange::getAttribute (   $name)

◆ getAttributes()

RecentChange::getAttributes ( )
Returns
array

Definition at line 1107 of file RecentChange.php.

References $mAttribs.

Referenced by IRCColourfulRCFeedFormatter\getLine().

◆ getChangeTypes()

static RecentChange::getChangeTypes ( )
static

Get an array of all change types.

Since
1.26
Returns
array

Definition at line 182 of file RecentChange.php.

Referenced by ApiQueryWatchlist\getAllowedParams(), and ApiQueryRecentChanges\getAllowedParams().

◆ getCharacterDifference()

RecentChange::getCharacterDifference (   $old = 0,
  $new = 0 
)

Returns the change size (HTML).

The lengths can be given optionally.

Parameters
int$old
int$new
Returns
string

Definition at line 1140 of file RecentChange.php.

References ChangesList\showCharacterDifference().

◆ getEngine()

static RecentChange::getEngine (   $uri,
  $params = [] 
)
static
Since
1.22
Deprecated:
since 1.29 Use RCFeed::factory() instead
Parameters
string$uriURI to get the engine object for
array$params
Returns
RCFeedEngine The engine object
Exceptions
MWException

Definition at line 540 of file RecentChange.php.

References $params, and $wgRCEngines.

Referenced by RCFeed\factory().

◆ getParam()

RecentChange::getParam (   $name)

Get a parameter value.

Since
1.27
Parameters
string$nameparameter name
Returns
mixed

Definition at line 1030 of file RecentChange.php.

References $name, $params, and parseParams().

◆ getPerformer()

RecentChange::getPerformer ( )

Get the User object of the person who performed this change.

Returns
User

Definition at line 344 of file RecentChange.php.

References $mPerformer, User\newFromActorId(), User\newFromId(), and User\newFromName().

Referenced by notifyRCFeeds(), SpecialWatchlist\registerFilters(), and save().

◆ getQueryInfo()

static RecentChange::getQueryInfo ( )
static

Return the tables, fields, and join conditions to be selected to create a new recentchanges object.

Since
1.31
Returns
array With three keys:
  • tables: (string[]) to include in the $table to IDatabase->select()
  • fields: (string[]) to include in the $vars to IDatabase->select()
  • joins: (array) to include in the $join_conds to IDatabase->select()

Definition at line 280 of file RecentChange.php.

References CommentStore\getStore(), and ActorMigration\newMigration().

Referenced by SiteStatsUpdate\cacheUpdate(), SpecialRecentChangesLinked\doMainQuery(), SpecialRecentChanges\doMainQuery(), SpecialWatchlist\doMainQuery(), ChangesListSpecialPage\doMainQuery(), NewPagesPager\getQueryInfo(), MediaWiki\Tests\Storage\PageUpdaterTest\getRecentChangeFor(), newFromConds(), and RecentChangesUpdateJob\purgeExpiredRows().

◆ getTitle()

◆ isInRCLifespan()

static RecentChange::isInRCLifespan (   $timestamp,
  $tolerance = 0 
)
static

Check whether the given timestamp is new enough to have a RC row with a given tolerance as the recentchanges table might not be cleared out regularly (so older entries might exist) or rows which will be deleted soon shouldn't be included.

Parameters
mixed$timestampMWTimestamp compatible timestamp
int$toleranceTolerance in seconds
Returns
bool

Definition at line 1180 of file RecentChange.php.

References $wgRCMaxAge, and wfTimestamp().

Referenced by DifferenceEngine\getMarkPatrolledLinkInfo(), Article\showPatrolFooter(), and RecentChangeTest\testIsInRCLifespan().

◆ loadFromRow()

RecentChange::loadFromRow (   $row)

Initialises the members of this object from a mysql row object.

Parameters
mixed$row

Definition at line 1040 of file RecentChange.php.

References $user, DB_REPLICA, CommentStore\getStore(), User\newFromAnyId(), wfGetDB(), and wfTimestamp().

Referenced by newFromRow().

◆ markPatrolled()

static RecentChange::markPatrolled (   $change,
  $auto = false,
  $tags = null 
)
static

Mark a given change as patrolled.

Parameters
RecentChange | int$changeRecentChange or corresponding rc_id
bool$autoFor automatic patrol
string | string[] | null$tagsChange tags to add to the patrol log entry ($user should be able to add the specified tags before this is called)
Returns
array See doMarkPatrolled(), or null if $change is not an existing rc_id

Definition at line 565 of file RecentChange.php.

References $auto, $tags, and newFromId().

◆ newForCategorization()

static RecentChange::newForCategorization (   $timestamp,
Title  $categoryTitle,
User  $user = null,
  $comment,
Title  $pageTitle,
  $oldRevId,
  $newRevId,
  $lastTimestamp,
  $bot,
  $ip = '',
  $deleted = 0,
  $added = null 
)
static

Constructs a RecentChange object for the given categorization This does not call save() on the object and thus does not write to the db.

Since
1.27
Parameters
string$timestampTimestamp of the recent change to occur
Title$categoryTitleTitle of the category a page is being added to or removed from
User | null$userUser object of the user that made the change
string$commentChange summary
Title$pageTitleTitle of the page that is being added or removed
int$oldRevIdParent revision ID of this change
int$newRevIdRevision ID of this change
string$lastTimestampParent revision timestamp of this change
bool$bottrue, if the change was made by a bot
string$ipIP address of the user, if the change was made anonymously
int$deletedIndicates whether the change has been deleted
bool | null$addedtrue, if the category was added, false for removed
Returns
RecentChange

Definition at line 957 of file RecentChange.php.

References $params, $user, checkIPAddress(), WikiPage\factory(), Title\getArticleID(), Title\getDBkey(), Title\getNamespace(), Title\getPrefixedDBkey(), PRC_AUTOPATROLLED, RC_CATEGORIZE, serialize(), and SRC_CATEGORIZE.

Referenced by ApiQueryRecentChangesIntegrationTest\testCategorizeTypeParameter(), ApiQueryWatchlistIntegrationTest\testCategorizeTypeParameter(), and RecentChangeTest\testHiddenCategoryChange().

◆ newFromConds()

static RecentChange::newFromConds (   $conds,
  $fname = __METHOD__,
  $dbType = DB_REPLICA 
)
static

Find the first recent change matching some specific conditions.

Parameters
array$condsArray of conditions
mixed$fnameOverride the method name in profiling/logs
int$dbTypeDB_* constant
Returns
RecentChange|null

Definition at line 205 of file RecentChange.php.

References $fname, getQueryInfo(), newFromRow(), and wfGetDB().

Referenced by CategoryMembershipChangeJobTest\getCategorizeRecentChangeForRevId(), DifferenceEngine\getMarkPatrolledLinkInfo(), Revision\RevisionStore\getRecentChange(), newFromId(), and Article\showPatrolFooter().

◆ newFromId()

static RecentChange::newFromId (   $rcid)
static

Obtain the recent change with a given rc_id value.

Parameters
int$rcidThe rc_id value to retrieve
Returns
RecentChange|null

Definition at line 192 of file RecentChange.php.

References newFromConds().

Referenced by ApiPatrol\execute(), MarkpatrolledAction\getRecentChange(), markPatrolled(), ApiTag\processIndividual(), and PatrolLog\record().

◆ newFromRow()

◆ newLogEntry()

static RecentChange::newLogEntry (   $timestamp,
  $title,
  $user,
  $actionComment,
  $ip,
  $type,
  $action,
  $target,
  $logComment,
  $params,
  $newId = 0,
  $actionCommentIRC = '',
  $revId = 0,
  $isPatrollable = false 
)
static
Parameters
string$timestamp
Title$title
User$user
string$actionComment
string$ip
string$type
string$action
Title$target
string$logComment
string$params
int$newId
string$actionCommentIRC
int$revIdId of associated revision, if any
bool$isPatrollableWhether this log entry is patrollable
Returns
RecentChange

Definition at line 863 of file RecentChange.php.

References $params, $title, $type, $user, $wgRequest, checkIPAddress(), PRC_AUTOPATROLLED, PRC_UNPATROLLED, RC_LOG, and SRC_LOG.

Referenced by ManualLogEntry\getRecentChange(), notifyLog(), LogPage\saveContent(), and RCFeedIntegrationTest\testNotify().

◆ notifyEdit()

static RecentChange::notifyEdit (   $timestamp,
  $title,
  $minor,
  $user,
  $comment,
  $oldId,
  $lastTimestamp,
  $bot,
  $ip = '',
  $oldSize = 0,
  $newSize = 0,
  $newId = 0,
  $patrol = 0,
  $tags = [] 
)
static

Makes an entry in the database corresponding to an edit.

Parameters
string$timestamp
Title$title
bool$minor
User$user
string$comment
int$oldId
string$lastTimestamp
bool$bot
string$ip
int$oldSize
int$newSize
int$newId
int$patrol
array$tags
Returns
RecentChange

Definition at line 685 of file RecentChange.php.

References $tags, $title, $user, DeferredUpdates\addCallableUpdate(), checkIPAddress(), DB_MASTER, DeferredUpdates\POSTSEND, RC_EDIT, SRC_EDIT, use, and wfGetDB().

Referenced by MediaWiki\Storage\PageUpdater\doModify(), and ImportTextFiles\execute().

◆ notifyLog()

static RecentChange::notifyLog (   $timestamp,
  $title,
  $user,
  $actionComment,
  $ip,
  $type,
  $action,
  $target,
  $logComment,
  $params,
  $newId = 0,
  $actionCommentIRC = '' 
)
static
Parameters
string$timestamp
Title$title
User$user
string$actionComment
string$ip
string$type
string$action
Title$target
string$logComment
string$params
int$newId
string$actionCommentIRC
Returns
bool

Definition at line 830 of file RecentChange.php.

References $params, $title, $type, $user, $wgLogRestrictions, and newLogEntry().

Referenced by LogPage\saveContent().

◆ notifyNew()

static RecentChange::notifyNew (   $timestamp,
  $title,
  $minor,
  $user,
  $comment,
  $bot,
  $ip = '',
  $size = 0,
  $newId = 0,
  $patrol = 0,
  $tags = [] 
)
static

Makes an entry in the database corresponding to page creation Note: the title object must be loaded with the new id using resetArticleID()

Parameters
string$timestamp
Title$title
bool$minor
User$user
string$comment
bool$bot
string$ip
int$size
int$newId
int$patrol
array$tags
Returns
RecentChange

Definition at line 759 of file RecentChange.php.

References $tags, $title, $user, DeferredUpdates\addCallableUpdate(), checkIPAddress(), DB_MASTER, DeferredUpdates\POSTSEND, RC_NEW, SRC_NEW, use, and wfGetDB().

Referenced by MediaWiki\Storage\PageUpdater\doCreate(), and ImportTextFiles\execute().

◆ notifyRCFeeds()

RecentChange::notifyRCFeeds ( array  $feeds = null)

Notify all the feeds about the change.

Parameters
array | null$feedsOptional feeds to send to, defaults to $wgRCFeeds

Definition at line 497 of file RecentChange.php.

References $params, $wgRCFeeds, as, RCFeed\factory(), getPerformer(), and RC_EXTERNAL.

Referenced by save().

◆ parseFromRCType()

static RecentChange::parseFromRCType (   $rcType)
static

Parsing RC_* constants to human-readable test.

Since
1.24
Parameters
int$rcType
Returns
string $type

Definition at line 171 of file RecentChange.php.

Referenced by ApiQueryWatchlist\extractOutputData(), ApiQueryRecentChanges\extractRowInfo(), MachineReadableRCFeedFormatter\getLine(), and RecentChangeTest\testParseFromRCType().

◆ parseParams()

RecentChange::parseParams ( )

Parses and returns the rc_params attribute.

Since
1.26
Returns
mixed|bool false on failed unserialization

Definition at line 1193 of file RecentChange.php.

References getAttribute(), and unserialize().

Referenced by MachineReadableRCFeedFormatter\getLine(), and getParam().

◆ parseToRCType()

static RecentChange::parseToRCType (   $type)
static

Parsing text to RC_* constants.

Since
1.24
Parameters
string | array$type
Exceptions
MWException
Returns
int|array RC_TYPE

Definition at line 149 of file RecentChange.php.

References $t, $type, and as.

Referenced by ApiQueryWatchlist\run(), ApiQueryRecentChanges\run(), and RecentChangeTest\testParseToRCType().

◆ reallyMarkPatrolled()

RecentChange::reallyMarkPatrolled ( )

Mark this RecentChange patrolled, without error checking.

Returns
int Number of affected rows

Definition at line 647 of file RecentChange.php.

References DB_MASTER, getAttribute(), getTitle(), and wfGetDB().

Referenced by doMarkPatrolled().

◆ save()

RecentChange::save (   $send = self::SEND_FEED)

Writes the data in this object to the database.

For compatibility reasons, the SEND_ constants internally reference a value that may seem negated from their purpose (none=true, feed=false). This is because the parameter used to be called "$noudp", defaulting to false.

Parameters
bool$sendself::SEND_FEED or self::SEND_NONE

Definition at line 369 of file RecentChange.php.

References $editor, $mAttribs, $title, $user, $wgPutIPinRC, $wgShowUpdatedMarker, $wgUseEnotif, ChangeTags\addTags(), as, captcha-old\count, DB_MASTER, getPerformer(), CommentStore\getStore(), getTitle(), RecentChangesUpdateJob\newCacheUpdateJob(), User\newFromAnyId(), ActorMigration\newMigration(), notifyRCFeeds(), RC_CATEGORIZE, Hooks\run(), JobQueueGroup\singleton(), use, and wfGetDB().

◆ selectFields()

static RecentChange::selectFields ( )
static

Return the list of recentchanges fields that should be selected to create a new recentchanges object.

Deprecated:
since 1.31, use self::getQueryInfo() instead.
Returns
array

Definition at line 228 of file RecentChange.php.

References $wgActorTableSchemaMigrationStage, CommentStore\getStore(), SCHEMA_COMPAT_READ_NEW, and wfDeprecated().

◆ setAttribs()

RecentChange::setAttribs (   $attribs)
Parameters
array$attribs

Definition at line 317 of file RecentChange.php.

References $attribs.

Referenced by RecentChangeTest\assertParseParams().

◆ setExtra()

RecentChange::setExtra (   $extra)
Parameters
array$extra

Definition at line 324 of file RecentChange.php.

Member Data Documentation

◆ $changeTypes

array RecentChange::$changeTypes
staticprivate
Initial value:
= [
'edit' => RC_EDIT,
'new' => RC_NEW,
'log' => RC_LOG,
'external' => RC_EXTERNAL,
'categorize' => RC_CATEGORIZE,
]

Array of change types.

Definition at line 121 of file RecentChange.php.

◆ $counter

int RecentChange::$counter = -1

Line number of recent change.

Default -1.

Definition at line 111 of file RecentChange.php.

◆ $mAttribs

RecentChange::$mAttribs = []

Definition at line 92 of file RecentChange.php.

Referenced by getAttributes(), and save().

◆ $mExtra

RecentChange::$mExtra = []

Definition at line 93 of file RecentChange.php.

◆ $mPerformer

User RecentChange::$mPerformer = false
private

Definition at line 103 of file RecentChange.php.

Referenced by getPerformer().

◆ $mTitle

Title RecentChange::$mTitle = false

Definition at line 98 of file RecentChange.php.

Referenced by getTitle().

◆ $notificationtimestamp

RecentChange::$notificationtimestamp

Definition at line 106 of file RecentChange.php.

◆ $numberofWatchingusers

RecentChange::$numberofWatchingusers = 0

Definition at line 105 of file RecentChange.php.

◆ $tags

array RecentChange::$tags = []
private

List of tags to apply.

Definition at line 116 of file RecentChange.php.

Referenced by addTags(), doMarkPatrolled(), markPatrolled(), notifyEdit(), and notifyNew().

◆ PRC_AUTOPATROLLED

◆ PRC_PATROLLED

const RecentChange::PRC_PATROLLED = 1

Definition at line 79 of file RecentChange.php.

Referenced by ChangesListSpecialPage\__construct().

◆ PRC_UNPATROLLED

◆ SRC_CATEGORIZE

const RecentChange::SRC_CATEGORIZE = 'mw.categorize'

◆ SRC_EDIT

◆ SRC_EXTERNAL

const RecentChange::SRC_EXTERNAL = 'mw.external'

Definition at line 75 of file RecentChange.php.

Referenced by PopulateRecentChangesSource\buildUpdateCondition().

◆ SRC_LOG

◆ SRC_NEW


The documentation for this class was generated from the following file:
RC_EXTERNAL
const RC_EXTERNAL
Definition: Defines.php:145
RC_LOG
const RC_LOG
Definition: Defines.php:144
RC_EDIT
const RC_EDIT
Definition: Defines.php:142
RC_NEW
const RC_NEW
Definition: Defines.php:143
RC_CATEGORIZE
const RC_CATEGORIZE
Definition: Defines.php:146