MediaWiki REL1_33
MediaWiki\Revision\RevisionRecord Class Reference

Page revision base class. More...

Inheritance diagram for MediaWiki\Revision\RevisionRecord:
Collaboration diagram for MediaWiki\Revision\RevisionRecord:

Public Member Functions

 __construct (Title $title, RevisionSlots $slots, $wikiId=false)
 
 __sleep ()
 Implemented to defy serialization.
 
 audienceCan ( $field, $audience, User $user=null)
 Check that the given audience has access to the given field.
 
 getComment ( $audience=self::FOR_PUBLIC, User $user=null)
 Fetch revision comment, if it's available to the specified audience.
 
 getContent ( $role, $audience=self::FOR_PUBLIC, User $user=null)
 Returns the Content of the given slot of this revision.
 
 getId ()
 Get revision ID.
 
 getInheritedSlots ()
 Returns slots inherited from some previous revision.
 
 getOriginalSlots ()
 Returns the slots that originate in this revision.
 
 getPageAsLinkTarget ()
 Returns the title of the page this revision is associated with as a LinkTarget object.
 
 getPageId ()
 Get the page ID.
 
 getParentId ()
 Get parent revision ID (the original previous page revision).
 
 getSha1 ()
 Returns the base36 sha1 of this revision.
 
 getSize ()
 Returns the nominal size of this revision, in bogo-bytes.
 
 getSlot ( $role, $audience=self::FOR_PUBLIC, User $user=null)
 Returns meta-data for the given slot.
 
 getSlotRoles ()
 Returns the slot names (roles) of all slots present in this revision.
 
 getSlots ()
 Returns the slots defined for this revision.
 
 getTimestamp ()
 MCR migration note: this replaces Revision::getTimestamp.
 
 getUser ( $audience=self::FOR_PUBLIC, User $user=null)
 Fetch revision's author's user identity, if it's available to the specified audience.
 
 getVisibility ()
 Get the deletion bitfield of the revision.
 
 getWikiId ()
 Get the ID of the wiki this revision belongs to.
 
 hasSameContent (RevisionRecord $rec)
 
 hasSlot ( $role)
 Returns whether the given slot is defined in this revision.
 
 isDeleted ( $field)
 MCR migration note: this replaces Revision::isDeleted.
 
 isMinor ()
 MCR migration note: this replaces Revision::isMinor.
 
 isReadyForInsertion ()
 Returns whether this RevisionRecord is ready for insertion, that is, whether it contains all information needed to save it to the database.
 

Static Public Member Functions

static userCanBitfield ( $bitfield, $field, User $user, Title $title=null)
 Determine if the current user is allowed to view a particular field of this revision, if it's marked as deleted.
 

Public Attributes

const DELETED_COMMENT = 2
 
const DELETED_RESTRICTED = 8
 
const DELETED_TEXT = 1
 
const DELETED_USER = 4
 
const FOR_PUBLIC = 1
 
const FOR_THIS_USER = 2
 
const RAW = 3
 
const SUPPRESSED_ALL
 
const SUPPRESSED_USER = self::DELETED_USER | self::DELETED_RESTRICTED
 

Protected Member Functions

 userCan ( $field, User $user)
 Determine if the current user is allowed to view a particular field of this revision, if it's marked as deleted.
 

Protected Attributes

CommentStoreComment null $mComment
 
int $mDeleted = 0
 using the DELETED_XXX and SUPPRESSED_XXX flags
 
int null $mId
 
bool $mMinorEdit = false
 
int $mPageId
 
int null $mParentId
 
string null $mSha1
 
int null $mSize
 
RevisionSlots $mSlots
 
string null $mTimestamp
 
Title $mTitle
 
UserIdentity null $mUser
 
string $mWiki = false
 Wiki ID; false means the current wiki.
 

Detailed Description

Page revision base class.

RevisionRecords are considered value objects, but they may use callbacks for lazy loading. Note that while the base class has no setters, subclasses may offer a mutable interface.

Since
1.31
1.32 Renamed from MediaWiki\Storage\RevisionRecord

Definition at line 45 of file RevisionRecord.php.

Constructor & Destructor Documentation

◆ __construct()

MediaWiki\Revision\RevisionRecord::__construct ( Title $title,
RevisionSlots $slots,
$wikiId = false )
Note
Avoid calling this constructor directly. Use the appropriate methods in RevisionStore instead.
Parameters
Title$titleThe title of the page this Revision is associated with.
RevisionSlots$slotsThe slots of this revision.
bool | string$wikiIdthe wiki ID of the site this Revision belongs to, or false for the local site.
Exceptions
MWException

Definition at line 101 of file RevisionRecord.php.

References $title.

Member Function Documentation

◆ __sleep()

MediaWiki\Revision\RevisionRecord::__sleep ( )

Implemented to defy serialization.

Exceptions
LogicExceptionalways

Definition at line 117 of file RevisionRecord.php.

◆ audienceCan()

MediaWiki\Revision\RevisionRecord::audienceCan ( $field,
$audience,
User $user = null )

Check that the given audience has access to the given field.

MCR migration note: this corresponds to Revision::userCan

Parameters
int$fieldOne of self::DELETED_TEXT, self::DELETED_COMMENT, self::DELETED_USER
int$audienceOne of: RevisionRecord::FOR_PUBLIC to be displayed to all users RevisionRecord::FOR_THIS_USER to be displayed to the given user RevisionRecord::RAW get the text regardless of permissions
User | null$userUser object to check. Required if $audience is FOR_THIS_USER, ignored otherwise.
Returns
bool

Definition at line 457 of file RevisionRecord.php.

References and(), MediaWiki\Revision\RevisionRecord\isDeleted(), and MediaWiki\Revision\RevisionRecord\userCan().

Referenced by ApiQueryRevisionsBase\checkRevDel(), MediaWiki\Revision\RevisionRecord\getComment(), MediaWiki\Revision\RevisionRecord\getContent(), MediaWiki\Revision\RevisionRecord\getSlot(), and MediaWiki\Revision\RevisionRecord\getUser().

◆ getComment()

MediaWiki\Revision\RevisionRecord::getComment ( $audience = self::FOR_PUBLIC,
User $user = null )

Fetch revision comment, if it's available to the specified audience.

If the specified audience does not have access to the comment, this will return null. Depending on the concrete subclass, null may also be returned if the comment is not yet specified.

MCR migration note: this replaces Revision::getComment

Parameters
int$audienceOne of: RevisionRecord::FOR_PUBLIC to be displayed to all users RevisionRecord::FOR_THIS_USER to be displayed to the given user RevisionRecord::RAW get the text regardless of permissions
User | null$userUser object to check for, only if FOR_THIS_USER is passed to the $audience parameter
Returns
CommentStoreComment|null

Reimplemented in MediaWiki\Revision\RevisionArchiveRecord, and MediaWiki\Revision\RevisionStoreRecord.

Definition at line 390 of file RevisionRecord.php.

References MediaWiki\Revision\RevisionRecord\$mComment, and MediaWiki\Revision\RevisionRecord\audienceCan().

Referenced by MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionRecordsEqual(), ApiQueryRevisionsBase\extractRevisionInfo(), ApiFeedContributions\feedItemDesc(), MediaWiki\Revision\RevisionStore\insertRevisionOn(), MediaWiki\Revision\RevisionRecord\isReadyForInsertion(), and MediaWiki\Storage\DerivedPageDataUpdater\prepareContent().

◆ getContent()

MediaWiki\Revision\RevisionRecord::getContent ( $role,
$audience = self::FOR_PUBLIC,
User $user = null )

Returns the Content of the given slot of this revision.

Call getSlotNames() to get a list of available slots.

Note that for mutable Content objects, each call to this method will return a fresh clone.

MCR migration note: this replaces Revision::getContent

Parameters
string$roleThe role name of the desired slot
int$audience
User | null$user
Exceptions
RevisionAccessExceptionif the slot does not exist or slot data could not be lazy-loaded.
Returns
Content|null The content of the given slot, or null if access is forbidden.

Definition at line 167 of file RevisionRecord.php.

References $content, MediaWiki\Revision\RevisionRecord\audienceCan(), and MediaWiki\Revision\RevisionRecord\getSlot().

Referenced by MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionCompleteness(), MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionRecordsEqual(), ApiFeedContributions\feedItemDesc(), and Article\getRevisionRedirectTarget().

◆ getId()

◆ getInheritedSlots()

MediaWiki\Revision\RevisionRecord::getInheritedSlots ( )

Returns slots inherited from some previous revision.

"Inherited" slots are all slots that do not originate in this revision. Note that these slots may still differ from the one in the parent revision. This is the case for rollbacks: slots of a rollback revision are inherited from the rollback target, and are different from the slots in the parent revision, which was rolled back.

Returns
RevisionSlots

Definition at line 260 of file RevisionRecord.php.

◆ getOriginalSlots()

MediaWiki\Revision\RevisionRecord::getOriginalSlots ( )

Returns the slots that originate in this revision.

Note that this does not include any slots inherited from some earlier revision, even if they are different from the slots in the immediate parent revision. This is the case for rollbacks: slots of a rollback revision are inherited from the rollback target, and are different from the slots in the parent revision, which was rolled back.

To find all slots modified by this revision against its immediate parent revision, use RevisionSlotsUpdate::newFromRevisionSlots().

Returns
RevisionSlots

Definition at line 245 of file RevisionRecord.php.

◆ getPageAsLinkTarget()

MediaWiki\Revision\RevisionRecord::getPageAsLinkTarget ( )

Returns the title of the page this revision is associated with as a LinkTarget object.

MCR migration note: this replaces Revision::getTitle

Returns
LinkTarget

Definition at line 345 of file RevisionRecord.php.

References MediaWiki\Revision\RevisionRecord\$mTitle.

Referenced by MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionRecordsEqual(), ApiQueryRevisionsBase\extractDeprecatedContent(), and ApiQueryRevisionsBase\extractRevisionInfo().

◆ getPageId()

◆ getParentId()

MediaWiki\Revision\RevisionRecord::getParentId ( )

Get parent revision ID (the original previous page revision).

If there is no parent revision, this returns 0. If the parent revision is undefined or unknown, this returns null.

Note
As of MW 1.31, the database schema allows the parent ID to be NULL to indicate that it is unknown.

MCR migration note: this replaces Revision::getParentId

Returns
int|null

Definition at line 289 of file RevisionRecord.php.

References MediaWiki\Revision\RevisionRecord\$mParentId.

Referenced by MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionRecordsEqual(), ApiQueryRevisionsBase\extractRevisionInfo(), MediaWiki\Storage\DerivedPageDataUpdater\getParentRevision(), MediaWiki\Storage\DerivedPageDataUpdater\isReusableFor(), MediaWiki\Storage\DerivedPageDataUpdater\prepareContent(), and MediaWiki\Storage\DerivedPageDataUpdater\prepareUpdate().

◆ getSha1()

MediaWiki\Revision\RevisionRecord::getSha1 ( )
abstract

Returns the base36 sha1 of this revision.

This hash is derived from the hashes of all slots associated with the revision. May be calculated on the fly if not known, which may in the worst case may involve loading all content.

MCR migration note: this replaces Revision::getSha1

Exceptions
RevisionAccessExceptionif the hash was unknown and could not be calculated.
Returns
string

Reimplemented in MediaWiki\Revision\MutableRevisionRecord, MediaWiki\Revision\RevisionArchiveRecord, and MediaWiki\Revision\RevisionStoreRecord.

Referenced by MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionRecordsEqual(), ApiQueryRevisionsBase\extractRevisionInfo(), MediaWiki\Revision\RevisionRecord\hasSameContent(), and MediaWiki\Revision\RevisionStore\insertRevisionOn().

◆ getSize()

MediaWiki\Revision\RevisionRecord::getSize ( )
abstract

Returns the nominal size of this revision, in bogo-bytes.

May be calculated on the fly if not known, which may in the worst case may involve loading all content.

MCR migration note: this replaces Revision::getSize

Exceptions
RevisionAccessExceptionif the size was unknown and could not be calculated.
Returns
int

Reimplemented in MediaWiki\Revision\MutableRevisionRecord, MediaWiki\Revision\RevisionArchiveRecord, and MediaWiki\Revision\RevisionStoreRecord.

Referenced by MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionRecordsEqual(), ApiQueryRevisionsBase\extractRevisionInfo(), MediaWiki\Revision\RevisionRecord\hasSameContent(), and MediaWiki\Revision\RevisionStore\insertRevisionOn().

◆ getSlot()

MediaWiki\Revision\RevisionRecord::getSlot ( $role,
$audience = self::FOR_PUBLIC,
User $user = null )

Returns meta-data for the given slot.

Parameters
string$roleThe role name of the desired slot
int$audience
User | null$user
Exceptions
RevisionAccessExceptionif the slot does not exist or slot data could not be lazy-loaded.
Returns
SlotRecord The slot meta-data. If access to the slot content is forbidden, calling getContent() on the SlotRecord will throw an exception.

Definition at line 191 of file RevisionRecord.php.

References MediaWiki\Revision\RevisionRecord\audienceCan(), and MediaWiki\Revision\SlotRecord\newWithSuppressedContent().

Referenced by MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionCompleteness(), MediaWiki\Tests\Revision\McrWriteBothRevisionStoreDbTest\assertRevisionExistsInDatabase(), MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionRecordsEqual(), ApiQueryRevisionsBase\extractAllSlotInfo(), MediaWiki\Revision\RevisionRecord\getContent(), McrUndoAction\getNewRevision(), and MediaWiki\Storage\DerivedPageDataUpdater\getSecondaryDataUpdates().

◆ getSlotRoles()

MediaWiki\Revision\RevisionRecord::getSlotRoles ( )

Returns the slot names (roles) of all slots present in this revision.

getContent() will succeed only for the names returned by this method.

Returns
string[]

Definition at line 218 of file RevisionRecord.php.

Referenced by MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionCompleteness(), MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionRecordsEqual(), ApiQueryRevisionsBase\extractRevisionInfo(), McrUndoAction\getNewRevision(), and McrUndoAction\onSubmit().

◆ getSlots()

MediaWiki\Revision\RevisionRecord::getSlots ( )

◆ getTimestamp()

◆ getUser()

MediaWiki\Revision\RevisionRecord::getUser ( $audience = self::FOR_PUBLIC,
User $user = null )

Fetch revision's author's user identity, if it's available to the specified audience.

If the specified audience does not have access to it, null will be returned. Depending on the concrete subclass, null may also be returned if the user is not yet specified.

MCR migration note: this replaces Revision::getUser

Parameters
int$audienceOne of: RevisionRecord::FOR_PUBLIC to be displayed to all users RevisionRecord::FOR_THIS_USER to be displayed to the given user RevisionRecord::RAW get the ID regardless of permissions
User | null$userUser object to check for, only if FOR_THIS_USER is passed to the $audience parameter
Returns
UserIdentity|null

Reimplemented in MediaWiki\Revision\RevisionArchiveRecord, MediaWiki\Revision\RevisionStoreCacheRecord, and MediaWiki\Revision\RevisionStoreRecord.

Definition at line 365 of file RevisionRecord.php.

References MediaWiki\Revision\RevisionRecord\$mUser, and MediaWiki\Revision\RevisionRecord\audienceCan().

Referenced by MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionRecordsEqual(), ApiQueryRevisionsBase\extractRevisionInfo(), ApiFeedContributions\feedItemAuthor(), MediaWiki\Revision\RevisionStore\insertRevisionOn(), MediaWiki\Revision\RevisionRecord\isReadyForInsertion(), MediaWiki\Storage\DerivedPageDataUpdater\prepareContent(), and MediaWiki\Storage\DerivedPageDataUpdater\prepareUpdate().

◆ getVisibility()

◆ getWikiId()

MediaWiki\Revision\RevisionRecord::getWikiId ( )

Get the ID of the wiki this revision belongs to.

Returns
string|false The wiki's logical name, of false to indicate the local wiki.

Definition at line 334 of file RevisionRecord.php.

References MediaWiki\Revision\RevisionRecord\$mWiki.

Referenced by MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionRecordsEqual().

◆ hasSameContent()

MediaWiki\Revision\RevisionRecord::hasSameContent ( RevisionRecord $rec)
Parameters
RevisionRecord$rec
Returns
bool True if this RevisionRecord is known to have same content as $rec. False if the content is different (or not known to be the same).

Definition at line 127 of file RevisionRecord.php.

References MediaWiki\Revision\RevisionRecord\getId(), MediaWiki\Revision\RevisionRecord\getSha1(), and MediaWiki\Revision\RevisionRecord\getSize().

Referenced by MediaWiki\Storage\DerivedPageDataUpdater\prepareContent().

◆ hasSlot()

MediaWiki\Revision\RevisionRecord::hasSlot ( $role)

Returns whether the given slot is defined in this revision.

Parameters
string$roleThe role name of the desired slot
Returns
bool

Definition at line 208 of file RevisionRecord.php.

Referenced by MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionCompleteness(), and McrUndoAction\getNewRevision().

◆ isDeleted()

MediaWiki\Revision\RevisionRecord::isDeleted ( $field)

◆ isMinor()

◆ isReadyForInsertion()

MediaWiki\Revision\RevisionRecord::isReadyForInsertion ( )

Returns whether this RevisionRecord is ready for insertion, that is, whether it contains all information needed to save it to the database.

This should trivially be true for RevisionRecords loaded from the database.

Note that this may return true even if getId() or getPage() return null or 0, since these are generally assigned while the revision is saved to the database, and may not be available before.

Returns
bool

Reimplemented in MediaWiki\Revision\RevisionArchiveRecord, and MediaWiki\Revision\RevisionStoreRecord.

Definition at line 547 of file RevisionRecord.php.

References MediaWiki\Revision\RevisionRecord\getComment(), MediaWiki\Revision\RevisionRecord\getTimestamp(), and MediaWiki\Revision\RevisionRecord\getUser().

◆ userCan()

MediaWiki\Revision\RevisionRecord::userCan ( $field,
User $user )
protected

Determine if the current user is allowed to view a particular field of this revision, if it's marked as deleted.

MCR migration note: this corresponds to Revision::userCan

Parameters
int$fieldOne of self::DELETED_TEXT, self::DELETED_COMMENT, self::DELETED_USER
User$userUser object to check
Returns
bool

Reimplemented in MediaWiki\Revision\RevisionStoreRecord.

Definition at line 487 of file RevisionRecord.php.

References MediaWiki\Revision\RevisionRecord\getVisibility(), and MediaWiki\Revision\RevisionRecord\userCanBitfield().

Referenced by MediaWiki\Revision\RevisionRecord\audienceCan().

◆ userCanBitfield()

static MediaWiki\Revision\RevisionRecord::userCanBitfield ( $bitfield,
$field,
User $user,
Title $title = null )
static

Determine if the current user is allowed to view a particular field of this revision, if it's marked as deleted.

This is used by various classes to avoid duplication.

MCR migration note: this replaces Revision::userCanBitfield

Parameters
int$bitfieldCurrent field
int$fieldOne of self::DELETED_TEXT = File::DELETED_FILE, self::DELETED_COMMENT = File::DELETED_COMMENT, self::DELETED_USER = File::DELETED_USER
User$userUser object to check
Title | null$titleA Title object to check for per-page restrictions on, instead of just plain userrights
Returns
bool

Definition at line 508 of file RevisionRecord.php.

References and(), and wfDebug().

Referenced by MediaWiki\Revision\RevisionRecord\userCan().

Member Data Documentation

◆ $mComment

CommentStoreComment null MediaWiki\Revision\RevisionRecord::$mComment
protected

Definition at line 82 of file RevisionRecord.php.

Referenced by MediaWiki\Revision\RevisionRecord\getComment().

◆ $mDeleted

int MediaWiki\Revision\RevisionRecord::$mDeleted = 0
protected

using the DELETED_XXX and SUPPRESSED_XXX flags

Definition at line 74 of file RevisionRecord.php.

Referenced by MediaWiki\Revision\RevisionRecord\getVisibility().

◆ $mId

int null MediaWiki\Revision\RevisionRecord::$mId
protected

Definition at line 64 of file RevisionRecord.php.

Referenced by MediaWiki\Revision\RevisionRecord\getId().

◆ $mMinorEdit

bool MediaWiki\Revision\RevisionRecord::$mMinorEdit = false
protected

Definition at line 70 of file RevisionRecord.php.

Referenced by MediaWiki\Revision\RevisionRecord\isMinor().

◆ $mPageId

int MediaWiki\Revision\RevisionRecord::$mPageId
protected

Definition at line 66 of file RevisionRecord.php.

Referenced by MediaWiki\Revision\RevisionRecord\getPageId().

◆ $mParentId

int null MediaWiki\Revision\RevisionRecord::$mParentId
protected

Definition at line 80 of file RevisionRecord.php.

Referenced by MediaWiki\Revision\RevisionRecord\getParentId().

◆ $mSha1

string null MediaWiki\Revision\RevisionRecord::$mSha1
protected

◆ $mSize

◆ $mSlots

RevisionSlots MediaWiki\Revision\RevisionRecord::$mSlots
protected

Definition at line 88 of file RevisionRecord.php.

Referenced by MediaWiki\Revision\RevisionRecord\getSlots().

◆ $mTimestamp

string null MediaWiki\Revision\RevisionRecord::$mTimestamp
protected

Definition at line 72 of file RevisionRecord.php.

Referenced by MediaWiki\Revision\RevisionRecord\getTimestamp().

◆ $mTitle

Title MediaWiki\Revision\RevisionRecord::$mTitle
protected

◆ $mUser

UserIdentity null MediaWiki\Revision\RevisionRecord::$mUser
protected

Definition at line 68 of file RevisionRecord.php.

Referenced by MediaWiki\Revision\RevisionRecord\getUser().

◆ $mWiki

string MediaWiki\Revision\RevisionRecord::$mWiki = false
protected

Wiki ID; false means the current wiki.

Definition at line 62 of file RevisionRecord.php.

Referenced by MediaWiki\Revision\RevisionRecord\getWikiId().

◆ DELETED_COMMENT

const MediaWiki\Revision\RevisionRecord::DELETED_COMMENT = 2

Definition at line 49 of file RevisionRecord.php.

◆ DELETED_RESTRICTED

const MediaWiki\Revision\RevisionRecord::DELETED_RESTRICTED = 8

Definition at line 51 of file RevisionRecord.php.

◆ DELETED_TEXT

const MediaWiki\Revision\RevisionRecord::DELETED_TEXT = 1

◆ DELETED_USER

const MediaWiki\Revision\RevisionRecord::DELETED_USER = 4

Definition at line 50 of file RevisionRecord.php.

◆ FOR_PUBLIC

const MediaWiki\Revision\RevisionRecord::FOR_PUBLIC = 1

◆ FOR_THIS_USER

const MediaWiki\Revision\RevisionRecord::FOR_THIS_USER = 2

◆ RAW

◆ SUPPRESSED_ALL

const MediaWiki\Revision\RevisionRecord::SUPPRESSED_ALL
Initial value:
= self::DELETED_TEXT | self::DELETED_COMMENT | self::DELETED_USER |
self::DELETED_RESTRICTED

Definition at line 53 of file RevisionRecord.php.

◆ SUPPRESSED_USER

const MediaWiki\Revision\RevisionRecord::SUPPRESSED_USER = self::DELETED_USER | self::DELETED_RESTRICTED

Definition at line 52 of file RevisionRecord.php.


The documentation for this class was generated from the following file: