MediaWiki  master
Revision\RevisionRecord Class Reference

Page revision base class. More...

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

Public Member Functions

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

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. More...
 

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. More...
 

Protected Attributes

CommentStoreComment null $mComment
 
int $mDeleted = 0
 using the DELETED_XXX and SUPPRESSED_XXX flags More...
 
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. More...
 

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 46 of file RevisionRecord.php.

Constructor & Destructor Documentation

◆ __construct()

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 102 of file RevisionRecord.php.

References $title, and Title\getArticleID().

Member Function Documentation

◆ __sleep()

Revision\RevisionRecord::__sleep ( )

Implemented to defy serialization.

Exceptions
LogicExceptionalways

Definition at line 118 of file RevisionRecord.php.

◆ audienceCan()

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 458 of file RevisionRecord.php.

References $user, Revision\RevisionRecord\isDeleted(), and Revision\RevisionRecord\userCan().

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

◆ getComment()

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

Definition at line 391 of file RevisionRecord.php.

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

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

◆ getContent()

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 168 of file RevisionRecord.php.

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

Referenced by MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionCompleteness(), MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionRecordMatchesRevision(), MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionRecordsEqual(), ApiFeedContributions\feedItemDesc(), MediaWiki\Storage\PageUpdater\getAtomicSectionUpdate(), Article\getRevisionRedirectTarget(), MediaWiki\Storage\DerivedPageDataUpdater\revisionIsRedirect(), DifferenceEngine\setRevisions(), and ArticleViewTest\testArticleRevisionViewCustomHook().

◆ getId()

Revision\RevisionRecord::getId ( )

Get revision ID.

Depending on the concrete subclass, this may return null if the revision ID is not known (e.g. because the revision does not yet exist in the database).

MCR migration note: this replaces Revision::getId

Returns
int|null

Definition at line 274 of file RevisionRecord.php.

References Revision\RevisionRecord\$mId.

Referenced by MediaWiki\Tests\Revision\McrReadNewRevisionStoreDbTest\assertRevisionExistsInDatabase(), MediaWiki\Tests\Revision\McrRevisionStoreDbTest\assertRevisionExistsInDatabase(), MediaWiki\Tests\Revision\PreMcrRevisionStoreDbTest\assertRevisionExistsInDatabase(), MediaWiki\Tests\Revision\McrWriteBothRevisionStoreDbTest\assertRevisionExistsInDatabase(), MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionExistsInDatabase(), MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionRecordMatchesRevision(), MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertSlotCompleteness(), ApiQueryRevisionsBase\extractAllSlotInfo(), ApiQueryRevisionsBase\extractDeprecatedContent(), ApiQueryRevisionsBase\extractRevisionInfo(), Revision\RevisionStore\getBaseRevisionRow(), McrUndoAction\getNewRevision(), Revision\RevisionStore\getPreviousRevisionId(), Revision\RevisionStore\getRecentChange(), Revision\RevisionStore\getRelativeRevision(), Revision\RevisionRecord\hasSameContent(), Revision\RevisionStore\insertRevisionOn(), Revision\MutableRevisionRecord\newFromParentRevision(), MediaWiki\Storage\DerivedPageDataUpdater\prepareUpdate(), DifferenceEngine\setRevisions(), Revision\MutableRevisionRecord\setSlot(), and Revision\RenderedRevision\updateRevision().

◆ getInheritedSlots()

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 261 of file RevisionRecord.php.

◆ getOriginalSlots()

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 246 of file RevisionRecord.php.

◆ getPageAsLinkTarget()

◆ getPageId()

◆ getParentId()

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 290 of file RevisionRecord.php.

References Revision\RevisionRecord\$mParentId, Revision\RevisionRecord\getSha1(), and Revision\RevisionRecord\getSize().

Referenced by MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionRecordMatchesRevision(), MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionRecordsEqual(), ApiQueryRevisionsBase\extractRevisionInfo(), Revision\RevisionStore\insertRevisionOn(), and MediaWiki\Storage\DerivedPageDataUpdater\prepareUpdate().

◆ getSha1()

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

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

◆ getSize()

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

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

◆ getSlot()

◆ getSlotRoles()

◆ getSlots()

Revision\RevisionRecord::getSlots ( )

Returns the slots defined for this revision.

Returns
RevisionSlots

Definition at line 228 of file RevisionRecord.php.

References Revision\RevisionRecord\$mSlots.

Referenced by MediaWiki\Storage\DerivedPageDataUpdater\prepareUpdate(), and Revision\RenderedRevision\updateRevision().

◆ getTimestamp()

◆ getUser()

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

Definition at line 366 of file RevisionRecord.php.

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

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

◆ getVisibility()

◆ getWikiId()

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 335 of file RevisionRecord.php.

References Revision\RevisionRecord\$mWiki.

Referenced by MediaWiki\Tests\Revision\RevisionStoreDbTestBase\assertRevisionRecordsEqual(), Revision\RevisionRenderer\getRenderedRevision(), and Revision\MutableRevisionRecord\newFromParentRevision().

◆ hasSameContent()

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 128 of file RevisionRecord.php.

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

◆ hasSlot()

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 209 of file RevisionRecord.php.

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

◆ isDeleted()

Revision\RevisionRecord::isDeleted (   $field)

◆ isMinor()

◆ isReadyForInsertion()

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

Definition at line 551 of file RevisionRecord.php.

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

Referenced by Revision\RevisionStore\insertRevisionOn().

◆ userCan()

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

Definition at line 488 of file RevisionRecord.php.

References Revision\RevisionRecord\getVisibility().

Referenced by Revision\RevisionRecord\audienceCan().

◆ userCanBitfield()

static 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 509 of file RevisionRecord.php.

References $title, as, MediaWiki\MediaWikiServices\getInstance(), User\isAllowedAny(), null, and wfDebug().

Referenced by MediaWiki\Tests\Revision\testUserCanBitfield(), and Revision\userCanBitfield().

Member Data Documentation

◆ $mComment

CommentStoreComment null Revision\RevisionRecord::$mComment
protected

Definition at line 83 of file RevisionRecord.php.

Referenced by Revision\RevisionRecord\getComment().

◆ $mDeleted

int Revision\RevisionRecord::$mDeleted = 0
protected

using the DELETED_XXX and SUPPRESSED_XXX flags

Definition at line 75 of file RevisionRecord.php.

Referenced by Revision\RevisionRecord\getVisibility().

◆ $mId

int null Revision\RevisionRecord::$mId
protected

Definition at line 65 of file RevisionRecord.php.

Referenced by Revision\RevisionRecord\getId().

◆ $mMinorEdit

bool Revision\RevisionRecord::$mMinorEdit = false
protected

Definition at line 71 of file RevisionRecord.php.

Referenced by Revision\RevisionRecord\isMinor().

◆ $mPageId

int Revision\RevisionRecord::$mPageId
protected

Definition at line 67 of file RevisionRecord.php.

Referenced by Revision\RevisionRecord\getPageId().

◆ $mParentId

int null Revision\RevisionRecord::$mParentId
protected

Definition at line 81 of file RevisionRecord.php.

Referenced by Revision\RevisionRecord\getParentId().

◆ $mSha1

string null Revision\RevisionRecord::$mSha1
protected

◆ $mSize

int null Revision\RevisionRecord::$mSize
protected

◆ $mSlots

RevisionSlots Revision\RevisionRecord::$mSlots
protected

Definition at line 89 of file RevisionRecord.php.

Referenced by Revision\RevisionRecord\getSlots().

◆ $mTimestamp

string null Revision\RevisionRecord::$mTimestamp
protected

Definition at line 73 of file RevisionRecord.php.

Referenced by Revision\RevisionRecord\getTimestamp().

◆ $mTitle

Title Revision\RevisionRecord::$mTitle
protected

Definition at line 86 of file RevisionRecord.php.

Referenced by Revision\RevisionRecord\getPageAsLinkTarget().

◆ $mUser

UserIdentity null Revision\RevisionRecord::$mUser
protected

Definition at line 69 of file RevisionRecord.php.

Referenced by Revision\RevisionRecord\getUser().

◆ $mWiki

string Revision\RevisionRecord::$mWiki = false
protected

Wiki ID; false means the current wiki.

Definition at line 63 of file RevisionRecord.php.

Referenced by Revision\RevisionRecord\getWikiId().

◆ DELETED_COMMENT

◆ DELETED_RESTRICTED

◆ DELETED_TEXT

◆ DELETED_USER

◆ FOR_PUBLIC

◆ FOR_THIS_USER

◆ RAW

const Revision\RevisionRecord::RAW = 3

◆ SUPPRESSED_ALL

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

Definition at line 54 of file RevisionRecord.php.

Referenced by MediaWiki\Tests\Revision\provideAudienceCheckData().

◆ SUPPRESSED_USER

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

Definition at line 53 of file RevisionRecord.php.


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