Wikibase
MediaWiki Wikibase extension
Loading...
Searching...
No Matches
Wikibase\Repo\EditEntity\EditEntity Interface Reference

Handler for editing activity, providing a unified interface for saving modified entities while performing permission checks and handling edit conflicts. More...

+ Inheritance diagram for Wikibase\Repo\EditEntity\EditEntity:

Public Member Functions

 getEntityId ()
 Returns the ID of the entity being edited.
 
 getLatestRevision ()
 Returns the latest revision of the entity.
 
 getBaseRevision ()
 Return the base revision for the edit.
 
 getStatus ()
 Get the status object.
 
 isSuccess ()
 Determines whether the last call to attemptSave was successful.
 
 hasError ( $errorType=self::ANY_ERROR)
 Checks whether this EditEntity encountered any of the given error types while executing attemptSave().
 
 hasEditConflict ()
 Determines whether an edit conflict exists, that is, whether another user has edited the same item after the base revision was created.
 
 isTokenOK ( $token)
 Make sure the given WebRequest contains a valid edit token.
 
 attemptSave (EntityDocument $newEntity, $summary, $flags, $token, $watch=null, array $tags=[])
 Attempts to save the given Entity object.
 

Public Attributes

const PERMISSION_ERROR = 1
 indicates a permission error
 
const EDIT_CONFLICT_ERROR = 2
 indicates an unresolved edit conflict
 
const TOKEN_ERROR = 4
 indicates a token or session error
 
const SAVE_ERROR = 8
 indicates that an error occurred while saving
 
const PRECONDITION_FAILED = 16
 Indicates that the content failed some precondition to saving, such as a global uniqueness constraint.
 
const FILTERED = 32
 Indicates that the content triggered an edit filter that uses the EditFilterMergedContent hook to supervise edits.
 
const RATE_LIMIT = 64
 Indicates that the edit exceeded a rate limit.
 
const ANY_ERROR = 0xFFFFFFFF
 bit mask for asking for any error.
 

Detailed Description

Handler for editing activity, providing a unified interface for saving modified entities while performing permission checks and handling edit conflicts.

Member Function Documentation

◆ attemptSave()

Wikibase\Repo\EditEntity\EditEntity::attemptSave ( EntityDocument  $newEntity,
  $summary,
  $flags,
  $token,
  $watch = null,
array  $tags = [] 
)

Attempts to save the given Entity object.

This method performs entity level permission checks, checks the edit toke, enforces rate limits, resolves edit conflicts, and updates user watchlists if appropriate.

Success or failure are reported via the Status object returned by this method.

Todo:

$flags here should ideally not refer to EDIT_ constants from mediawiki core.

This shouldn't throw MWExceptions

Parameters
EntityDocument$newEntity
string$summaryThe edit summary.
int$flagsThe EDIT_XXX flags as used by WikiPage::doEditContent(). Additionally, the EntityContent::EDIT_XXX constants can be used.
string | bool$tokenEdit token to check, or false to disable the token check. Null will fail the token text, as will the empty string.
bool | null$watchWhether the user wants to watch the entity. Set to null to apply default according to getWatchDefault().
string[]$tagsChange tags to add to the edit. Callers are responsible for checking that the user is permitted to add these tags.
Returns
Status
Exceptions
MWException
ReadOnlyError
See also
WikiPage::doEditContent
EntityStore::saveEntity

Implemented in Wikibase\Repo\EditEntity\MediawikiEditEntity, and Wikibase\Repo\EditEntity\StatsdSaveTimeRecordingEditEntity.

◆ getBaseRevision()

Wikibase\Repo\EditEntity\EditEntity::getBaseRevision ( )

Return the base revision for the edit.

If no base revision ID was supplied to the constructor, this returns the latest revision. If the entity does not exist yet, this returns null.

Returns
EntityRevision|null
Exceptions
MWException

Implemented in Wikibase\Repo\EditEntity\MediawikiEditEntity, and Wikibase\Repo\EditEntity\StatsdSaveTimeRecordingEditEntity.

◆ getEntityId()

Wikibase\Repo\EditEntity\EditEntity::getEntityId ( )

Returns the ID of the entity being edited.

May be null if a new entity is to be created.

Returns
null|EntityId

Implemented in Wikibase\Repo\EditEntity\MediawikiEditEntity, and Wikibase\Repo\EditEntity\StatsdSaveTimeRecordingEditEntity.

◆ getLatestRevision()

Wikibase\Repo\EditEntity\EditEntity::getLatestRevision ( )

Returns the latest revision of the entity.

Returns
EntityRevision|null

Implemented in Wikibase\Repo\EditEntity\MediawikiEditEntity, and Wikibase\Repo\EditEntity\StatsdSaveTimeRecordingEditEntity.

◆ getStatus()

Wikibase\Repo\EditEntity\EditEntity::getStatus ( )

Get the status object.

Only defined after attemptSave() was called.

After a successful save, the Status object's value field will contain an array, just like the status returned by WikiPage::doEditContent(). Well known fields in the status value are:

  • new: bool whether the edit created a new page
  • revision: Revision the new revision object
  • errorFlags: bit field indicating errors, see the XXX_ERROR constants.
Returns
Status

Implemented in Wikibase\Repo\EditEntity\MediawikiEditEntity, and Wikibase\Repo\EditEntity\StatsdSaveTimeRecordingEditEntity.

◆ hasEditConflict()

Wikibase\Repo\EditEntity\EditEntity::hasEditConflict ( )

Determines whether an edit conflict exists, that is, whether another user has edited the same item after the base revision was created.

In other words, this method checks whether the base revision (as provided to the constructor) is still current. If no base revision was provided to the constructor, this will always return false.

If the base revision is different from the current revision, this will return true even if the edit conflict is resolvable. Indeed, it is used to determine whether conflict resolution should be attempted.

Returns
bool

Implemented in Wikibase\Repo\EditEntity\MediawikiEditEntity, and Wikibase\Repo\EditEntity\StatsdSaveTimeRecordingEditEntity.

◆ hasError()

Wikibase\Repo\EditEntity\EditEntity::hasError (   $errorType = self::ANY_ERROR)

Checks whether this EditEntity encountered any of the given error types while executing attemptSave().

Parameters
int$errorTypebit field using the EditEntity::XXX_ERROR constants. Defaults to EditEntity::ANY_ERROR.
Returns
bool true if this EditEntity encountered any of the error types in $errorType, false otherwise.

Implemented in Wikibase\Repo\EditEntity\MediawikiEditEntity, and Wikibase\Repo\EditEntity\StatsdSaveTimeRecordingEditEntity.

◆ isSuccess()

Wikibase\Repo\EditEntity\EditEntity::isSuccess ( )

Determines whether the last call to attemptSave was successful.

Returns
bool false if attemptSave() failed, true otherwise

Implemented in Wikibase\Repo\EditEntity\MediawikiEditEntity, and Wikibase\Repo\EditEntity\StatsdSaveTimeRecordingEditEntity.

◆ isTokenOK()

Wikibase\Repo\EditEntity\EditEntity::isTokenOK (   $token)

Make sure the given WebRequest contains a valid edit token.

Parameters
string$tokenThe token to check.
Returns
bool true if the token is valid

Implemented in Wikibase\Repo\EditEntity\MediawikiEditEntity, and Wikibase\Repo\EditEntity\StatsdSaveTimeRecordingEditEntity.

Member Data Documentation

◆ ANY_ERROR

const Wikibase\Repo\EditEntity\EditEntity::ANY_ERROR = 0xFFFFFFFF

bit mask for asking for any error.

◆ EDIT_CONFLICT_ERROR

const Wikibase\Repo\EditEntity\EditEntity::EDIT_CONFLICT_ERROR = 2

indicates an unresolved edit conflict

◆ FILTERED

const Wikibase\Repo\EditEntity\EditEntity::FILTERED = 32

Indicates that the content triggered an edit filter that uses the EditFilterMergedContent hook to supervise edits.

◆ PERMISSION_ERROR

const Wikibase\Repo\EditEntity\EditEntity::PERMISSION_ERROR = 1

indicates a permission error

◆ PRECONDITION_FAILED

const Wikibase\Repo\EditEntity\EditEntity::PRECONDITION_FAILED = 16

Indicates that the content failed some precondition to saving, such as a global uniqueness constraint.

◆ RATE_LIMIT

const Wikibase\Repo\EditEntity\EditEntity::RATE_LIMIT = 64

Indicates that the edit exceeded a rate limit.

◆ SAVE_ERROR

const Wikibase\Repo\EditEntity\EditEntity::SAVE_ERROR = 8

indicates that an error occurred while saving

◆ TOKEN_ERROR

const Wikibase\Repo\EditEntity\EditEntity::TOKEN_ERROR = 4

indicates a token or session error


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