MediaWiki  1.28.1
WikiPage Class Reference

Class representing a MediaWiki article and history. More...

Inheritance diagram for WikiPage:
Collaboration diagram for WikiPage:

Public Member Functions

 __clone ()
 Makes sure that the mTitle object is cloned to the newly cloned WikiPage. More...
 
 __construct (Title $title)
 Constructor and clear the article. More...
 
 checkFlags ($flags)
 Check flags and add EDIT_NEW or EDIT_UPDATE to them as needed. More...
 
 checkTouched ()
 Loads page_touched and returns a value indicating if it should be used. More...
 
 clear ()
 Clear the object. More...
 
 clearPreparedEdit ()
 Clear the mPreparedEdit cache field, as may be needed by mutable content types. More...
 
 commitRollback ($fromP, $summary, $bot, &$resultDetails, User $guser, $tags=null)
 Backend implementation of doRollback(), please refer there for parameter and return value documentation. More...
 
 doDeleteArticle ($reason, $suppress=false, $u1=null, $u2=null, &$error= '', User $user=null)
 Same as doDeleteArticleReal(), but returns a simple boolean. More...
 
 doDeleteArticleReal ($reason, $suppress=false, $u1=null, $u2=null, &$error= '', User $user=null, $tags=[], $logsubtype= 'delete')
 Back-end article deletion Deletes the article with database consistency, writes logs, purges caches. More...
 
 doDeleteUpdates ($id, Content $content=null, Revision $revision=null)
 Do some database updates after deletion. More...
 
 doEdit ($text, $summary, $flags=0, $baseRevId=false, $user=null)
 Change an existing article or create a new article. More...
 
 doEditContent (Content $content, $summary, $flags=0, $baseRevId=false, User $user=null, $serialFormat=null, $tags=[])
 Change an existing article or create a new article. More...
 
 doEditUpdates (Revision $revision, User $user, array $options=[])
 Do standard deferred updates after page edit. More...
 
 doPurge ($flags=self::PURGE_ALL)
 Perform the actions of a page purging. More...
 
 doRollback ($fromP, $summary, $token, $bot, &$resultDetails, User $user, $tags=null)
 Roll back the most recent consecutive set of edits to a page from the same user; fails if there are no eligible edits to roll back to, e.g. More...
 
 doUpdateRestrictions (array $limit, array $expiry, &$cascade, $reason, User $user, $tags=null)
 Update the article's restriction field, and leave a log entry. More...
 
 doViewUpdates (User $user, $oldid=0)
 Do standard deferred updates after page view (existing or missing page) More...
 
 exists ()
 
 followRedirect ()
 Get the Title object or URL this page redirects to. More...
 
 getActionOverrides ()
 
 getAutoDeleteReason (&$hasHistory)
 Auto-generates a deletion reason. More...
 
 getCategories ()
 #@- More...
 
 getComment ($audience=Revision::FOR_PUBLIC, User $user=null)
 
 getContent ($audience=Revision::FOR_PUBLIC, User $user=null)
 Get the content of the current revision. More...
 
 getContentHandler ()
 Returns the ContentHandler instance to be used to deal with the content of this WikiPage. More...
 
 getContentModel ()
 Returns the page's content model id (see the CONTENT_MODEL_XXX constants). More...
 
 getContributors ()
 Get a list of users who have edited this article, not including the user who made the most recent revision, which you can get from $article->getUser() if you want it. More...
 
 getCreator ($audience=Revision::FOR_PUBLIC, User $user=null)
 Get the User object of the user who created the page. More...
 
 getDeletionUpdates (Content $content=null)
 Returns a list of updates to be performed when this page is deleted. More...
 
 getHiddenCategories ()
 Returns a list of hidden categories this page is a member of. More...
 
 getId ()
 
 getLastPurgeTimestamp ()
 Get the last time a user explicitly purged the page via action=purge. More...
 
 getLatest ()
 Get the page_latest field. More...
 
 getLinksTimestamp ()
 Get the page_links_updated field. More...
 
 getMinorEdit ()
 Returns true if last revision was marked as "minor edit". More...
 
 getOldestRevision ()
 Get the Revision object of the oldest revision. More...
 
 getParserOutput (ParserOptions $parserOptions, $oldid=null, $forceParse=false)
 Get a ParserOutput for the given ParserOptions and revision ID. More...
 
 getRedirectTarget ()
 If this page is a redirect, get its target. More...
 
 getRedirectURL ($rt)
 Get the Title object or URL to use for a redirect. More...
 
 getRevision ()
 Get the latest revision. More...
 
 getText ($audience=Revision::FOR_PUBLIC, User $user=null)
 Get the text of the current revision. More...
 
 getTimestamp ()
 
 getTitle ()
 Get the title object of the article. More...
 
 getTouched ()
 Get the page_touched field. More...
 
 getUndoContent (Revision $undo, Revision $undoafter=null)
 Get the content that needs to be saved in order to undo all revisions between $undo and $undoafter. More...
 
 getUser ($audience=Revision::FOR_PUBLIC, User $user=null)
 
 getUserText ($audience=Revision::FOR_PUBLIC, User $user=null)
 
 hasViewableContent ()
 Check if this page is something we're going to be showing some sort of sensible content for. More...
 
 insertOn ($dbw, $pageId=null)
 Insert a new empty page record for this article. More...
 
 insertProtectNullRevision ($revCommentMsg, array $limit, array $expiry, $cascade, $reason, $user=null)
 Insert a new null revision for this page. More...
 
 insertRedirect ()
 Insert an entry for this page into the redirect table if the content is a redirect. More...
 
 insertRedirectEntry (Title $rt, $oldLatest=null)
 Insert or update the redirect table entry for this page to indicate it redirects to $rt. More...
 
 isCountable ($editInfo=false)
 Determine whether a page would be suitable for being counted as an article in the site_stats table based on the title & its content. More...
 
 isLocal ()
 Whether this content displayed on this page comes from the local database. More...
 
 isRedirect ()
 Tests if the article content represents a redirect. More...
 
 loadFromRow ($data, $from)
 Load the object from a database row. More...
 
 loadPageData ($from= 'fromdb')
 Load the object from a given source by title. More...
 
 lockAndGetLatest ()
 Lock the page row for this title+id and return page_latest (or 0) More...
 
 makeParserOptions ($context)
 Get parser options suitable for rendering the primary article wikitext. More...
 
 pageDataFromId ($dbr, $id, $options=[])
 Fetch a page record matching the requested ID. More...
 
 pageDataFromTitle ($dbr, $title, $options=[])
 Fetch a page record matching the Title object's namespace and title using a sanitized title string. More...
 
 prepareContentForEdit (Content $content, $revision=null, User $user=null, $serialFormat=null, $useCache=true)
 Prepare content which is about to be saved. More...
 
 prepareTextForEdit ($text, $revid=null, User $user=null)
 Prepare text which is about to be saved. More...
 
 protectDescription (array $limit, array $expiry)
 Builds the description to serve as comment for the edit. More...
 
 protectDescriptionLog (array $limit, array $expiry)
 Builds the description to serve as comment for the log entry. More...
 
 replaceSectionAtRev ($sectionId, Content $sectionContent, $sectionTitle= '', $baseRevId=null)
 
 replaceSectionContent ($sectionId, Content $sectionContent, $sectionTitle= '', $edittime=null)
 
 setTimestamp ($ts)
 Set the page timestamp (use only to avoid DB queries) More...
 
 shouldCheckParserCache (ParserOptions $parserOptions, $oldId)
 Should the parser cache be used? More...
 
 supportsSections ()
 Returns true if this page's content model supports sections. More...
 
 triggerOpportunisticLinksUpdate (ParserOutput $parserOutput)
 Opportunistically enqueue link update jobs given fresh parser output if useful. More...
 
 updateCategoryCounts (array $added, array $deleted, $id=0)
 Update all the appropriate counts in the category table, given that we've added the categories $added and deleted the categories $deleted. More...
 
 updateIfNewerOn ($dbw, $revision)
 If the given revision is newer than the currently set page_latest, update the page record. More...
 
 updateRedirectOn ($dbw, $redirectTitle, $lastRevIsRedirect=null)
 Add row to the redirect table if this is a redirect, remove otherwise. More...
 
 updateRevisionOn ($dbw, $revision, $lastRevision=null, $lastRevIsRedirect=null)
 Update the page record to point to a newly saved revision. More...
 

Static Public Member Functions

static factory (Title $title)
 Create a WikiPage object of the appropriate class for the given title. More...
 
static getAutosummary ($oldtext, $newtext, $flags)
 Return an applicable autosummary if one exists for the given edit. More...
 
static newFromID ($id, $from= 'fromdb')
 Constructor from a page id. More...
 
static newFromRow ($row, $from= 'fromdb')
 Constructor from a database row. More...
 
static onArticleCreate (Title $title)
 The onArticle*() functions are supposed to be a kind of hooks which should be called whenever any of the specified actions are done. More...
 
static onArticleDelete (Title $title)
 Clears caches when article is deleted. More...
 
static onArticleEdit (Title $title, Revision $revision=null)
 Purge caches on page update etc. More...
 
static selectFields ()
 Return the list of revision fields that should be selected to create a new page. More...
 

Public Attributes

stdClass $mPreparedEdit = false
 Map of cache fields (text, parser output, ect) for a proposed/new edit. More...
 
Title $mTitle = null
 
const PURGE_ALL = 7
 
const PURGE_CDN_CACHE = 1
 
const PURGE_CLUSTER_PCACHE = 2
 
const PURGE_GLOBAL_PCACHE = 4
 
 $mDataLoaded = false
 
 $mIsRedirect = false
 
 $mLatest = false
 
- Public Attributes inherited from IDBAccessObject
const READ_LOCKING = 3
 Constants for object loading bitfield flags (higher => higher QoS) More...
 
const READ_NONE = -1
 

Protected Member Functions

 clearCacheFields ()
 Clear the object cache fields. More...
 
 formatExpiry ($expiry)
 
 loadLastEdit ()
 Loads everything except the text This isn't necessary for all uses, so it's only done if needed. More...
 
 pageData ($dbr, $conditions, $options=[])
 Fetch a page record with the given conditions. More...
 
 setLastEdit (Revision $revision)
 Set the latest revision. More...
 

Static Protected Member Functions

static flattenRestrictions ($limit)
 Take an array of page restrictions and flatten it to a string suitable for insertion into the page_restrictions field. More...
 

Protected Attributes

int $mDataLoadedFrom = self::READ_NONE
 One of the READ_* constants. More...
 
int $mId = null
 
Revision $mLastRevision = null
 
string $mLinksUpdated = '19700101000000'
 
Title $mRedirectTarget = null
 
string $mTimestamp = ''
 Timestamp of the current revision or empty string if not loaded. More...
 
string $mTouched = '19700101000000'
 

Private Member Functions

 doCreate (Content $content, $flags, User $user, $summary, array $meta)
 
 doModify (Content $content, $flags, User $user, $summary, array $meta)
 

Static Private Member Functions

static convertSelectType ($type)
 Convert 'fromdb', 'fromdbmaster' and 'forupdate' to READ_* constants. More...
 

Detailed Description

Class representing a MediaWiki article and history.

Some fields are public only for backwards-compatibility. Use accessors. In the past, this class was part of Article.php and everything was public.

Definition at line 32 of file WikiPage.php.

Constructor & Destructor Documentation

WikiPage::__construct ( Title  $title)

Constructor and clear the article.

Parameters
Title$titleReference to a Title object.

Definition at line 95 of file WikiPage.php.

References $title.

Member Function Documentation

WikiPage::__clone ( )

Makes sure that the mTitle object is cloned to the newly cloned WikiPage.

Definition at line 103 of file WikiPage.php.

References $mTitle.

WikiPage::checkFlags (   $flags)

Check flags and add EDIT_NEW or EDIT_UPDATE to them as needed.

Parameters
int$flags
Returns
int Updated $flags

Definition at line 1518 of file WikiPage.php.

References $flags, EDIT_NEW, EDIT_UPDATE, and exists().

Referenced by doEditContent().

WikiPage::checkTouched ( )

Loads page_touched and returns a value indicating if it should be used.

Returns
bool True if this page exists and is not a redirect

Definition at line 528 of file WikiPage.php.

References loadPageData().

WikiPage::clear ( )

Clear the object.

Returns
void

Definition at line 240 of file WikiPage.php.

References clearCacheFields().

Referenced by EditPageTest\forceRevisionDate(), and ApiEditPageTest\forceRevisionDate().

WikiPage::clearCacheFields ( )
protected

Clear the object cache fields.

Returns
void

Definition at line 251 of file WikiPage.php.

Referenced by clear(), and loadFromRow().

WikiPage::clearPreparedEdit ( )

Clear the mPreparedEdit cache field, as may be needed by mutable content types.

Returns
void
Since
1.23

Definition at line 271 of file WikiPage.php.

WikiPage::commitRollback (   $fromP,
  $summary,
  $bot,
$resultDetails,
User  $guser,
  $tags = null 
)

Backend implementation of doRollback(), please refer there for parameter and return value documentation.

NOTE: This function does NOT check ANY permissions, it just commits the rollback to the DB. Therefore, you should only call this function direct- ly if you want to use custom permissions checks. If you don't, use doRollback() instead.

Parameters
string$fromPName of the user whose edits to rollback.
string$summaryCustom summary. Set to default summary if empty.
bool$botIf true, mark all reverted edits as bot.
array$resultDetailsContains result-specific array of additional values
User$guserThe user performing the rollback
array | null$tagsChange tags to apply to the rollback Callers are responsible for permission checks (with ChangeTags::canAddTagsAccompanyingChange)
Returns
array

Definition at line 3185 of file WikiPage.php.

References $args, $flags, $from, $revId, $s, $status, $summary, $user, $wgContLang, DB_MASTER, Revision\DELETED_TEXT, Revision\DELETED_USER, doEditContent(), EDIT_FORCE_BOT, EDIT_INTERNAL, EDIT_MINOR, EDIT_UPDATE, getRevision(), global, User\isAllowed(), User\isAllowedAny(), Revision\newFromId(), Revision\RAW, Hooks\run(), TS_MW, wfGetDB(), wfMessage(), wfMsgReplaceArgs(), wfReadOnly(), and wfTimestamp().

Referenced by doRollback().

static WikiPage::convertSelectType (   $type)
staticprivate

Convert 'fromdb', 'fromdbmaster' and 'forupdate' to READ_* constants.

Parameters
object | string | int$type
Returns
mixed

Definition at line 192 of file WikiPage.php.

References $type.

WikiPage::doDeleteArticle (   $reason,
  $suppress = false,
  $u1 = null,
  $u2 = null,
$error = '',
User  $user = null 
)

Same as doDeleteArticleReal(), but returns a simple boolean.

This is kept around for backwards compatibility, if you care about error reporting you should use doDeleteArticleReal() instead.

Deletes the article with database consistency, writes logs, purges caches

Parameters
string$reasonDelete reason for deletion log
bool$suppressSuppress all revisions and log the deletion in the suppression log instead of the deletion log
int$u1Unused
bool$u2Unused
array | string&$errorArray of errors to append to
User$userThe deleting user
Returns
bool True if successful

Definition at line 2839 of file WikiPage.php.

References $status, $user, and doDeleteArticleReal().

Referenced by WikiPageTest\testExists().

WikiPage::doDeleteArticleReal (   $reason,
  $suppress = false,
  $u1 = null,
  $u2 = null,
$error = '',
User  $user = null,
  $tags = [],
  $logsubtype = 'delete' 
)

Back-end article deletion Deletes the article with database consistency, writes logs, purges caches.

Since
1.19
Parameters
string$reasonDelete reason for deletion log
bool$suppressSuppress all revisions and log the deletion in the suppression log instead of the deletion log
int$u1Unused
bool$u2Unused
array | string&$errorArray of errors to append to
User$userThe deleting user
array$tagsTags to apply to the deletion action
Returns
Status Status object; if successful, $status->value is the log_id of the deletion log entry. If the page couldn't be deleted because it wasn't found, $status is a non-fatal 'cannotdelete' error

Definition at line 2864 of file WikiPage.php.

References $cache, $content, $mTitle, $res, $status, $user, $wgUser, as, DB_MASTER, Revision\DELETED_COMMENT, Revision\DELETED_RESTRICTED, Revision\DELETED_TEXT, Revision\DELETED_USER, doDeleteUpdates(), getContent(), getId(), getLatest(), ObjectCache\getMainStashInstance(), getRevision(), getTitle(), global, loadPageData(), lockAndGetLatest(), StatusValue\newGood(), Revision\RAW, Hooks\run(), Revision\selectFields(), use, wfDebug(), wfEscapeWikiText(), wfGetDB(), wfLogWarning(), and wfMemcKey().

Referenced by doDeleteArticle(), EditPageTest\testCreatePage(), and EditPageTest\testCreatePageTrx().

WikiPage::doDeleteUpdates (   $id,
Content  $content = null,
Revision  $revision = null 
)

Do some database updates after deletion.

Parameters
int$idThe page_id value of the page being deleted
Content | null$contentOptional page content to be used when determining the required updates. This may be needed because $this->getContent() may already return null when the page proper was deleted.
Revision | null$revisionThe latest page revision

Definition at line 3071 of file WikiPage.php.

References $content, DeferredUpdates\addUpdate(), as, getDeletionUpdates(), ResourceLoaderWikiModule\invalidateModuleCache(), isCountable(), loadFromRow(), NS_FILE, onArticleDelete(), LinksUpdate\queueRecursiveJobsForTable(), and wfWikiID().

Referenced by doDeleteArticleReal().

WikiPage::doEdit (   $text,
  $summary,
  $flags = 0,
  $baseRevId = false,
  $user = null 
)

Change an existing article or create a new article.

Updates RC and all necessary caches, optionally via the deferred update array.

Parameters
string$textNew text
string$summaryEdit summary
int$flagsBitfield: EDIT_NEW Article is known or assumed to be non-existent, create a new one EDIT_UPDATE Article is known or assumed to be pre-existing, update it EDIT_MINOR Mark this edit minor, if the user is allowed to do so EDIT_SUPPRESS_RC Do not log the change in recentchanges EDIT_FORCE_BOT Mark the edit a "bot" edit regardless of user rights EDIT_AUTOSUMMARY Fill in blank summaries with generated text where possible EDIT_INTERNAL Signal that the page retrieve/save cycle happened entirely in this request.

If neither EDIT_NEW nor EDIT_UPDATE is specified, the status of the article will be detected. If EDIT_UPDATE is specified and the article doesn't exist, the function will return an edit-gone-missing error. If EDIT_NEW is specified and the article does exist, an edit-already-exists error will be returned. These two conditions are also possible with auto-detection due to MediaWiki's performance-optimised locking strategy.

Parameters
bool | int$baseRevIdThe revision ID this edit was based off, if any. This is not the parent revision ID, rather the revision ID for older content used as the source for a rollback, for example.
User$userThe user doing the edit
Exceptions
MWException
Returns
Status Possible errors: edit-hook-aborted: The ArticleSave hook aborted the edit but didn't set the fatal flag of $status edit-gone-missing: In update mode, but the article didn't exist. edit-conflict: In update mode, the article changed unexpectedly. edit-no-change: Warning that the text was the same as before. edit-already-exists: In creation mode, but the article already exists.

Extensions may define additional errors.

$return->value will contain an associative array with members as follows: new: Boolean indicating if the function attempted to create a new article. revision: The revision object for the inserted revision, or null.

Compatibility note: this function previously returned a boolean value indicating success/failure

Deprecated:
since 1.21: use doEditContent() instead.

Definition at line 1584 of file WikiPage.php.

References $content, $flags, $summary, $user, doEditContent(), getTitle(), ContentHandler\makeContent(), and wfDeprecated().

WikiPage::doEditContent ( Content  $content,
  $summary,
  $flags = 0,
  $baseRevId = false,
User  $user = null,
  $serialFormat = null,
  $tags = [] 
)

Change an existing article or create a new article.

Updates RC and all necessary caches, optionally via the deferred update array.

Parameters
Content$contentNew content
string$summaryEdit summary
int$flagsBitfield: EDIT_NEW Article is known or assumed to be non-existent, create a new one EDIT_UPDATE Article is known or assumed to be pre-existing, update it EDIT_MINOR Mark this edit minor, if the user is allowed to do so EDIT_SUPPRESS_RC Do not log the change in recentchanges EDIT_FORCE_BOT Mark the edit a "bot" edit regardless of user rights EDIT_AUTOSUMMARY Fill in blank summaries with generated text where possible EDIT_INTERNAL Signal that the page retrieve/save cycle happened entirely in this request.

If neither EDIT_NEW nor EDIT_UPDATE is specified, the status of the article will be detected. If EDIT_UPDATE is specified and the article doesn't exist, the function will return an edit-gone-missing error. If EDIT_NEW is specified and the article does exist, an edit-already-exists error will be returned. These two conditions are also possible with auto-detection due to MediaWiki's performance-optimised locking strategy.

Parameters
bool | int$baseRevIdThe revision ID this edit was based off, if any. This is not the parent revision ID, rather the revision ID for older content used as the source for a rollback, for example.
User$userThe user doing the edit
string$serialFormatFormat for storing the content in the database.
array | null$tagsChange tags to apply to this edit Callers are responsible for permission checks (with ChangeTags::canAddTagsAccompanyingChange)
Exceptions
MWException
Returns
Status Possible errors: edit-hook-aborted: The ArticleSave hook aborted the edit but didn't set the fatal flag of $status. edit-gone-missing: In update mode, but the article didn't exist. edit-conflict: In update mode, the article changed unexpectedly. edit-no-change: Warning that the text was the same as before. edit-already-exists: In creation mode, but the article already exists.

Extensions may define additional errors.

$return->value will contain an associative array with members as follows: new: Boolean indicating if the function attempted to create a new article. revision: The revision object for the inserted revision, or null.

Since
1.21
Exceptions
MWException

Definition at line 1649 of file WikiPage.php.

References $content, $flags, $handler, $status, $summary, $user, $wgUser, DeferredUpdates\addCallableUpdate(), array(), checkFlags(), doCreate(), doModify(), EDIT_AUTOSUMMARY, EDIT_FORCE_BOT, EDIT_INTERNAL, EDIT_MINOR, EDIT_UPDATE, getContent(), Content\getContentHandler(), getLatest(), ContentHandler\getLocalizedName(), Content\getModel(), getRevision(), global, isCountable(), isRedirect(), loadPageData(), StatusValue\newFatal(), StatusValue\newGood(), prepareContentForEdit(), Revision\RAW, Hooks\run(), ContentHandler\runLegacyHooks(), and use.

Referenced by commitRollback(), and doEdit().

WikiPage::doEditUpdates ( Revision  $revision,
User  $user,
array  $options = [] 
)

Do standard deferred updates after page edit.

Update links tables, site stats, search index and message cache. Purges pages that include this page if the text was changed here. Every 100th edit, prune the recent changes table.

Parameters
Revision$revision
User$userUser object that did the revision
array$optionsArray of options, following indexes are used:
  • changed: boolean, whether the revision changed the content (default true)
  • created: boolean, whether the revision created the page (default false)
  • moved: boolean, whether the page was moved (default false)
  • restored: boolean, whether the page was undeleted (default false)
  • oldrevision: Revision object for the pre-update revision (default null)
  • oldcountable: boolean, null, or string 'no-change' (default null):
    • boolean: whether the page was counted as an article before that revision, only used in changed is true and created is false
    • null: if created is false, don't update the article count; if created is true, do update the article count
    • 'no-change': don't update the article count, ever

Definition at line 2245 of file WikiPage.php.

References $content, $mPreparedEdit, $options, $title, $wgContLang, DeferredUpdates\addUpdate(), as, exists(), Revision\getContent(), getContentHandler(), getId(), Revision\getId(), Revision\getTimestamp(), getTitle(), User\getTitleKey(), global, ResourceLoaderWikiModule\invalidateModuleCache(), User\isAllowed(), isCountable(), User\isIP(), Revision\isMinor(), User\newFromName(), RecentChangesUpdateJob\newPurgeJob(), NS_MEDIAWIKI, NS_USER_TALK, prepareContentForEdit(), Hooks\run(), ParserCache\singleton(), JobQueueGroup\singleton(), MessageCache\singleton(), wfDebug(), and wfWikiID().

Referenced by doCreate(), and doModify().

WikiPage::doPurge (   $flags = self::PURGE_ALL)

Perform the actions of a page purging.

Parameters
integer$flagsBitfield of WikiPage::PURGE_* constants
Returns
bool

Definition at line 1138 of file WikiPage.php.

References $cache, $content, $flags, DeferredUpdates\addUpdate(), HTMLFileCache\clearFileCache(), exists(), getContent(), ObjectCache\getLocalClusterInstance(), getTitle(), NS_MEDIAWIKI, DeferredUpdates\PRESEND, Hooks\run(), ParserCache\singleton(), MessageCache\singleton(), TS_MW, and wfTimestamp().

WikiPage::doRollback (   $fromP,
  $summary,
  $token,
  $bot,
$resultDetails,
User  $user,
  $tags = null 
)

Roll back the most recent consecutive set of edits to a page from the same user; fails if there are no eligible edits to roll back to, e.g.

user is the sole contributor. This function performs permissions checks on $user, then calls commitRollback() to do the dirty work

Todo:

Separate the business/permission stuff out from backend code

Remove $token parameter. Already verified by RollbackAction and ApiRollback.

Parameters
string$fromPName of the user whose edits to rollback.
string$summaryCustom summary. Set to default summary if empty.
string$tokenRollback token.
bool$botIf true, mark all reverted edits as bot.
array$resultDetailsArray contains result-specific array of additional values 'alreadyrolled' : 'current' (rev) success : 'summary' (str), 'current' (rev), 'target' (rev)
User$userThe user performing the rollback
array | null$tagsChange tags to apply to the rollback Callers are responsible for permission checks (with ChangeTags::canAddTagsAccompanyingChange)
Returns
array Array of errors, each error formatted as array(messagekey, param1, param2, ...). On success, the array is empty. This array can also be passed to OutputPage::showPermissionsErrorPage().

Definition at line 3139 of file WikiPage.php.

References $summary, commitRollback(), User\matchEditToken(), User\pingLimiter(), and wfArrayDiff2().

WikiPage::doUpdateRestrictions ( array  $limit,
array  $expiry,
$cascade,
  $reason,
User  $user,
  $tags = null 
)

Update the article's restriction field, and leave a log entry.

This works for protection both existing and non-existing pages.

Parameters
array$limitSet of restriction keys
array$expiryPer restriction type expiration
int&$cascadeSet to false if cascading protection isn't allowed.
string$reason
User$userThe user updating the restrictions
string|string[]$tags Change tags to add to the pages and protection log entries ($user should be able to add the specified tags before this is called)
Returns
Status Status object; if action is taken, $status->value is the log_id of the protection log entry.

Definition at line 2422 of file WikiPage.php.

References $params, $wgContLang, as, DB_MASTER, getId(), User\getId(), getLatest(), global, insertProtectNullRevision(), InfoAction\invalidateCache(), loadPageData(), StatusValue\newFatal(), StatusValue\newGood(), protectDescriptionLog(), Title\purgeExpiredRestrictions(), Hooks\run(), wfGetDB(), wfReadOnly(), and wfReadOnlyReason().

WikiPage::doViewUpdates ( User  $user,
  $oldid = 0 
)

Do standard deferred updates after page view (existing or missing page)

Parameters
User$userThe relevant user
int$oldidRevision id being viewed; if not given or 0, latest revision is assumed

Definition at line 1118 of file WikiPage.php.

References $e, User\clearNotification(), MWExceptionHandler\logException(), Hooks\run(), and wfReadOnly().

WikiPage::exists ( )
Returns
bool Whether or not the page exists in the database

Definition at line 457 of file WikiPage.php.

References loadPageData().

Referenced by LinksDeletionUpdate\__construct(), checkFlags(), doEditUpdates(), doPurge(), getContentModel(), and shouldCheckParserCache().

static WikiPage::factory ( Title  $title)
static

Create a WikiPage object of the appropriate class for the given title.

Parameters
Title$title
Exceptions
MWException
Returns
WikiPage|WikiCategoryPage|WikiFilePage

Definition at line 115 of file WikiPage.php.

References $page, Title\getNamespace(), NS_CATEGORY, NS_FILE, NS_MEDIA, and Hooks\run().

Referenced by ParserTestRunner\addArticle(), MediaWikiTestCase\addCoreDBData(), BackupDumperPageTest\addDBData(), TextPassDumperDatabaseTest\addDBData(), FetchTextTest\addDBData(), SpecialMyLanguageTest\addDBDataOnce(), CategoryMembershipChangeTest\addDBDataOnce(), EditPageTest\assertEdit(), WikiImporter\beforeImportPage(), Orphans\checkSeparation(), CleanupSpam\cleanupArticle(), Installer\createMainpage(), UploadFromUrlTest\deleteFile(), ApiTestCaseUpload\deleteFileByTitle(), ApiQueryWatchlistIntegrationTest\deletePage(), ApiQueryWatchlistIntegrationTest\doAnonPageEdit(), ApiQueryWatchlistIntegrationTest\doBotPageEdit(), FileDeleteForm\doDelete(), DifferenceEngineTest\doEdits(), ApiQueryWatchlistIntegrationTest\doMinorPageEdit(), ApiQueryWatchlistIntegrationTest\doPageEdit(), ApiQueryWatchlistIntegrationTest\doPatrolledPageEdit(), MovePageForm\doSubmit(), WatchAction\doUnwatch(), WatchAction\doWatch(), ApiTestCase\editPage(), CategoryMembershipChangeJobTest\editPageText(), CompareParserCache\execute(), ApiEditPage\execute(), ApiPurge\execute(), DeleteDefaultMessages\execute(), MakeTestEdits\execute(), ImportSiteScripts\execute(), ApiRollback\execute(), Protect\execute(), AttachLatest\execute(), ApiParse\execute(), EditCLI\execute(), ApiStashEdit\execute(), RollbackEdits\execute(), DeleteBatch\execute(), DeleteEqualMessages\execute(), WikiImporter\finishImportPage(), SearchNearMatcher\getNearMatchInternal(), ActionTest\getPage(), EditPage\getPreloadedContent(), AbstractContent\getRedirectChain(), ListredirectsPage\getRedirectTarget(), SearchExactMatchRescorer\getRedirectTarget(), ApiPageSet\getRedirectTargets(), ApiBase\getTitleOrPageId(), RequestContext\getWikiPage(), WikiRevision\importOldRevision(), MediaWiki\initializeArticle(), MediaWikiTestCase\insertPage(), MergeHistory\merge(), MovePage\moveToInternal(), RecentChange\newForCategorization(), SpecialChangeContentModel\onSubmit(), XmlDumpWriter\openPage(), DifferenceEngine\renderNewRevision(), ImportReporter\reportPage(), DeleteLinksJob\run(), DoubleRedirectJob\run(), RefreshLinksJob\runForTitle(), ApiFormatXmlTest\setUpBeforeClass(), SpecialUndelete\showDiff(), EditPageTest\testAutoMerge(), EditPageTest\testCheckDirectEditingDisallowed_forNonTextContent(), ApiQueryRevisionsTest\testContentComesWithContentModelAndFormat(), TextContentTest\testDeletionUpdates(), ApiEditPageTest\testEdit_redirect(), ApiEditPageTest\testEdit_redirectText(), ApiEditPageTest\testEditConflict(), ApiEditPageTest\testEditConflict_bug41990(), ApiEditPageTest\testEditConflict_newSection(), ApiEditPageTest\testEditNewSection(), ApiEditPageTest\testEditSection(), UserTest\testGetEditCount(), WikitextContentTest\testGetSecondaryDataUpdates(), WikiCategoryPageTest\testHiddenCategory_PropertyIsSet(), WikiCategoryPageTest\testHiddenCategory_PropertyNotSet(), ApiQueryAllPagesTest\testPrefixNormalizationSearchBug(), RefreshLinksPartitionTest\testRefreshLinks(), ApiSetNotificationTimestampIntegrationTest\testStuff(), ApiEditPageTest\testSupportsDirectApiEditing_withContentHandlerOverride(), TemplateCategoriesTest\testTemplateCategories(), ArticleTablesTest\testTemplatelinksUsesContentLanguage(), MovePageTest\testTitleMoveCompleteIntegrationTest(), ImportTest\testUnknownXMLTags(), RevisionStorageTest\testUserWasLastToEdit(), RequestContextTest\testWikiPageTitle(), PageArchive\undeleteRevisions(), SpecialEditWatchlist\unwatchTitles(), and LinksUpdate\updateCategoryCounts().

static WikiPage::flattenRestrictions (   $limit)
staticprotected

Take an array of page restrictions and flatten it to a string suitable for insertion into the page_restrictions field.

Parameters
string[]$limit
Exceptions
MWException
Returns
string

Definition at line 2808 of file WikiPage.php.

References $limit, and as.

WikiPage::followRedirect ( )

Get the Title object or URL this page redirects to.

Returns
bool|Title|string False, Title of in-wiki target, or string with URL

Definition at line 962 of file WikiPage.php.

References getRedirectTarget(), and getRedirectURL().

WikiPage::formatExpiry (   $expiry)
protected
Parameters
string$expiry14-char timestamp or "infinity", or false if the input was invalid
Returns
string

Definition at line 2720 of file WikiPage.php.

References $wgContLang, global, and wfMessage().

Referenced by protectDescription(), and protectDescriptionLog().

WikiPage::getActionOverrides ( )
Todo:
Move this UI stuff somewhere else
See also
ContentHandler::getActionOverrides

Definition at line 211 of file WikiPage.php.

References getContentHandler().

WikiPage::getAutoDeleteReason ( $hasHistory)

Auto-generates a deletion reason.

Parameters
bool&$hasHistoryWhether the page has a history
Returns
string|bool String containing deletion reason or empty string, or boolean false if no revision occurred

Definition at line 3551 of file WikiPage.php.

References getContentHandler(), and getTitle().

static WikiPage::getAutosummary (   $oldtext,
  $newtext,
  $flags 
)
static

Return an applicable autosummary if one exists for the given edit.

Parameters
string | null$oldtextThe previous text of the page.
string | null$newtextThe submitted text of the page.
int$flagsBitmask: a bitmask of flags submitted for the edit.
Returns
string An appropriate autosummary, or an empty string.
Deprecated:
since 1.21, use ContentHandler::getAutosummary() instead

Definition at line 3531 of file WikiPage.php.

References $flags, $handler, CONTENT_MODEL_WIKITEXT, ContentHandler\getForModelID(), and wfDeprecated().

Referenced by Article\getAutosummary().

WikiPage::getCategories ( )

#@-

Returns a list of categories this page is a member of. Results will include hidden categories

Returns
TitleArray

Definition at line 3475 of file WikiPage.php.

References $dbr, $res, DB_REPLICA, getId(), TitleArray\newFromResult(), NS_CATEGORY, and wfGetDB().

WikiPage::getComment (   $audience = Revision::FOR_PUBLIC,
User  $user = null 
)
Parameters
int$audienceOne of: Revision::FOR_PUBLIC to be displayed to all users Revision::FOR_THIS_USER to be displayed to the given user Revision::RAW get the text regardless of permissions
User$userUser object to check for, only if FOR_THIS_USER is passed to the $audience parameter
Returns
string Comment stored for the last article revision

Definition at line 796 of file WikiPage.php.

References $user, and loadLastEdit().

WikiPage::getContent (   $audience = Revision::FOR_PUBLIC,
User  $user = null 
)

Get the content of the current revision.

No side-effects...

Parameters
int$audienceOne of: Revision::FOR_PUBLIC to be displayed to all users Revision::FOR_THIS_USER to be displayed to $wgUser Revision::RAW get the text regardless of permissions
User$userUser object to check for, only if FOR_THIS_USER is passed to the $audience parameter
Returns
Content|null The content of the current revision
Since
1.21

Definition at line 680 of file WikiPage.php.

References $user, and loadLastEdit().

Referenced by doDeleteArticleReal(), doEditContent(), doPurge(), ApiParse\getContent(), TextContentHandler\getDataForSearchIndex(), ContentHandler\getDataForSearchIndex(), getDeletionUpdates(), ApiParse\getParsedContent(), ContentHandler\getParserOutputForIndexing(), EditPage\getPreloadedContent(), insertRedirect(), isCountable(), prepareContentForEdit(), replaceSectionAtRev(), and ContentHandlerTest\testDataIndexFields().

WikiPage::getContentHandler ( )
WikiPage::getContentModel ( )

Returns the page's content model id (see the CONTENT_MODEL_XXX constants).

Will use the revisions actual content model if the page exists, and the page's default if the page doesn't exist yet.

Returns
string
Since
1.21

Definition at line 499 of file WikiPage.php.

References $cache, $rev, $title, exists(), ObjectCache\getMainWANInstance(), getRevision(), and wfWarn().

Referenced by getContentHandler().

WikiPage::getContributors ( )

Get a list of users who have edited this article, not including the user who made the most recent revision, which you can get from $article->getUser() if you want it.

Returns
UserArrayFromResult

Definition at line 1011 of file WikiPage.php.

References $dbr, $options, $res, $tables, $user, DB_REPLICA, getId(), getUser(), and wfGetDB().

WikiPage::getCreator (   $audience = Revision::FOR_PUBLIC,
User  $user = null 
)

Get the User object of the user who created the page.

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

Definition at line 759 of file WikiPage.php.

References $user, getOldestRevision(), and User\newFromName().

WikiPage::getDeletionUpdates ( Content  $content = null)

Returns a list of updates to be performed when this page is deleted.

The updates should remove any information about this page from secondary data stores such as links tables.

Parameters
Content | null$contentOptional Content object for determining the necessary updates.
Returns
DeferrableUpdate[]

Definition at line 3722 of file WikiPage.php.

References $content, getContent(), Revision\RAW, and Hooks\run().

Referenced by doDeleteUpdates().

WikiPage::getHiddenCategories ( )

Returns a list of hidden categories this page is a member of.

Uses the page_props and categorylinks tables.

Returns
array Array of Title objects

Definition at line 3498 of file WikiPage.php.

References $dbr, $res, as, DB_REPLICA, getId(), Title\makeTitle(), NS_CATEGORY, and wfGetDB().

WikiPage::getLastPurgeTimestamp ( )

Get the last time a user explicitly purged the page via action=purge.

Returns
string|bool TS_MW timestamp or false
Since
1.28

Definition at line 1196 of file WikiPage.php.

References $cache, and ObjectCache\getLocalClusterInstance().

WikiPage::getLinksTimestamp ( )

Get the page_links_updated field.

Returns
string|null Containing GMT timestamp

Definition at line 550 of file WikiPage.php.

References $mLinksUpdated, and loadPageData().

Referenced by triggerOpportunisticLinksUpdate().

WikiPage::getMinorEdit ( )

Returns true if last revision was marked as "minor edit".

Returns
bool Minor edit indicator for the last article revision.

Definition at line 810 of file WikiPage.php.

References loadLastEdit().

WikiPage::getOldestRevision ( )

Get the Revision object of the oldest revision.

Returns
Revision|null

Definition at line 572 of file WikiPage.php.

References DB_MASTER, DB_REPLICA, Revision\newFromRow(), Revision\selectFields(), and wfGetDB().

Referenced by getCreator().

WikiPage::getParserOutput ( ParserOptions  $parserOptions,
  $oldid = null,
  $forceParse = false 
)

Get a ParserOutput for the given ParserOptions and revision ID.

The parser cache will be used if possible. Cache misses that result in parser runs are debounced with PoolCounter.

Since
1.19
Parameters
ParserOptions$parserOptionsParserOptions to use for the parse operation
null | int$oldidRevision ID to get the text from, passing null or 0 will get the current revision (default value)
bool$forceParseForce reindexing, regardless of cache settings
Returns
bool|ParserOutput ParserOutput or false if the revision was not found

Definition at line 1085 of file WikiPage.php.

References $parserOutput, getLatest(), ParserOptions\getStubThreshold(), shouldCheckParserCache(), ParserCache\singleton(), wfDebug(), and wfIncrStats().

Referenced by ApiParse\getParsedContent(), and DifferenceEngine\getParserOutput().

WikiPage::getRedirectTarget ( )

If this page is a redirect, get its target.

The target will be fetched from the redirect table if possible. If this page doesn't have an entry there, call insertRedirect()

Returns
Title|null Title object, or null if this page is not a redirect

Definition at line 871 of file WikiPage.php.

References $dbr, $mRedirectTarget, DB_REPLICA, getId(), insertRedirect(), Title\makeTitle(), and wfGetDB().

Referenced by followRedirect(), and EditPage\getPreloadedContent().

WikiPage::getRedirectURL (   $rt)

Get the Title object or URL to use for a redirect.

We use Title objects for same-wiki, non-special redirects and URLs for everything else.

Parameters
Title$rtRedirect target
Returns
bool|Title|string False, Title object of local target, or string with URL

Definition at line 973 of file WikiPage.php.

References $source.

Referenced by followRedirect().

WikiPage::getRevision ( )
WikiPage::getText (   $audience = Revision::FOR_PUBLIC,
User  $user = null 
)

Get the text of the current revision.

No side-effects...

Parameters
int$audienceOne of: Revision::FOR_PUBLIC to be displayed to all users Revision::FOR_THIS_USER to be displayed to the given user Revision::RAW get the text regardless of permissions
User$userUser object to check for, only if FOR_THIS_USER is passed to the $audience parameter
Returns
string|bool The text of the current revision
Deprecated:
since 1.21, getContent() should be used instead.

Definition at line 700 of file WikiPage.php.

References $user, loadLastEdit(), and wfDeprecated().

WikiPage::getTimestamp ( )
Returns
string MW timestamp of last article revision

Definition at line 713 of file WikiPage.php.

References loadLastEdit(), TS_MW, and wfTimestamp().

Referenced by doModify().

WikiPage::getTouched ( )

Get the page_touched field.

Returns
string Containing GMT timestamp

Definition at line 539 of file WikiPage.php.

References $mTouched, and loadPageData().

Referenced by triggerOpportunisticLinksUpdate().

WikiPage::getUndoContent ( Revision  $undo,
Revision  $undoafter = null 
)

Get the content that needs to be saved in order to undo all revisions between $undo and $undoafter.

Revisions must belong to the same page, must exist and must not be deleted

Parameters
Revision$undo
Revision$undoafterMust be an earlier revision than $undo
Returns
Content|bool Content on success, false on failure
Since
1.21 Before we had the Content object, this was done in getUndoText

Definition at line 1403 of file WikiPage.php.

References $handler, Revision\getContentHandler(), and getRevision().

WikiPage::getUser (   $audience = Revision::FOR_PUBLIC,
User  $user = null 
)
Parameters
int$audienceOne of: Revision::FOR_PUBLIC to be displayed to all users Revision::FOR_THIS_USER to be displayed to the given user Revision::RAW get the text regardless of permissions
User$userUser object to check for, only if FOR_THIS_USER is passed to the $audience parameter
Returns
int User ID for the user that made the last article revision

Definition at line 740 of file WikiPage.php.

References $user, and loadLastEdit().

Referenced by doModify(), and getContributors().

WikiPage::getUserText (   $audience = Revision::FOR_PUBLIC,
User  $user = null 
)
Parameters
int$audienceOne of: Revision::FOR_PUBLIC to be displayed to all users Revision::FOR_THIS_USER to be displayed to the given user Revision::RAW get the text regardless of permissions
User$userUser object to check for, only if FOR_THIS_USER is passed to the $audience parameter
Returns
string Username of the user that made the last article revision

Definition at line 778 of file WikiPage.php.

References $user, and loadLastEdit().

Referenced by doModify().

WikiPage::hasViewableContent ( )

Check if this page is something we're going to be showing some sort of sensible content for.

If we return false, page views (plain action=view) will return an HTTP 404 response, so spiders and robots can know they're following a bad link.

Returns
bool

Definition at line 472 of file WikiPage.php.

WikiPage::insertOn (   $dbw,
  $pageId = null 
)

Insert a new empty page record for this article.

This must be followed up by creating a revision and running $this->updateRevisionOn( ... ); or else the record will be left in a funky state. Best if all done inside a transaction.

Parameters
IDatabase$dbw
int | null$pageIdCustom page ID that will be used for the insert statement
Returns
bool|int The newly created page_id key; false if the row was not inserted, e.g. because the title already existed or because the specified page ID is already in use.

Definition at line 1216 of file WikiPage.php.

References wfRandom().

Referenced by doCreate().

WikiPage::insertProtectNullRevision (   $revCommentMsg,
array  $limit,
array  $expiry,
  $cascade,
  $reason,
  $user = null 
)

Insert a new null revision for this page.

Parameters
string$revCommentMsgComment message key for the revision
array$limitSet of restriction keys
array$expiryPer restriction type expiration
int$cascadeSet to false if cascading protection isn't allowed.
string$reason
User | null$user
Returns
Revision|null Null on error

Definition at line 2675 of file WikiPage.php.

References $user, $wgContLang, DB_MASTER, getId(), global, Revision\newNullRevision(), protectDescription(), text, updateRevisionOn(), wfGetDB(), and wfMessage().

Referenced by doUpdateRestrictions().

WikiPage::insertRedirect ( )

Insert an entry for this page into the redirect table if the content is a redirect.

The database update will be deferred via DeferredUpdates

Don't call this function directly unless you know what you're doing.

Returns
Title|null Title object or null if not a redirect

Definition at line 910 of file WikiPage.php.

References $content, $retval, DeferredUpdates\addCallableUpdate(), DB_MASTER, getContent(), getLatest(), DeferredUpdates\POSTSEND, use, and wfGetDB().

Referenced by getRedirectTarget().

WikiPage::insertRedirectEntry ( Title  $rt,
  $oldLatest = null 
)

Insert or update the redirect table entry for this page to indicate it redirects to $rt.

Parameters
Title$rtRedirect target
int | null$oldLatestPrior page_latest for check and set

Definition at line 936 of file WikiPage.php.

References DB_MASTER, Title\getDBkey(), Title\getFragment(), getId(), Title\getInterwiki(), Title\getNamespace(), lockAndGetLatest(), and wfGetDB().

Referenced by updateRedirectOn().

WikiPage::isCountable (   $editInfo = false)

Determine whether a page would be suitable for being counted as an article in the site_stats table based on the title & its content.

Parameters
object | bool$editInfo(false): object returned by prepareTextForEdit(), if false, the current database state will be used
Returns
bool

Definition at line 827 of file WikiPage.php.

References $content, DB_REPLICA, getContent(), getId(), global, and wfGetDB().

Referenced by doDeleteUpdates(), doEditContent(), and doEditUpdates().

WikiPage::isLocal ( )

Whether this content displayed on this page comes from the local database.

Since
1.28
Returns
bool

Definition at line 3753 of file WikiPage.php.

WikiPage::isRedirect ( )

Tests if the article content represents a redirect.

Returns
bool

Definition at line 481 of file WikiPage.php.

References $mIsRedirect, and loadPageData().

Referenced by doEditContent(), and EditPage\getPreloadedContent().

WikiPage::loadFromRow (   $data,
  $from 
)

Load the object from a database row.

Since
1.20
Parameters
object | bool$dataDB row containing fields returned by selectFields() or false
string | int$fromOne of the following:
  • "fromdb" or WikiPage::READ_NORMAL if the data comes from a replica DB
  • "fromdbmaster" or WikiPage::READ_LATEST if the data comes from the master DB
  • "forupdate" or WikiPage::READ_LOCKING if the data comes from the master DB using SELECT FOR UPDATE

Definition at line 407 of file WikiPage.php.

References $from, $mLatest, clearCacheFields(), LinkCache\singleton(), TS_MW, wfTimestamp(), and wfTimestampOrNull().

Referenced by doDeleteUpdates(), and loadPageData().

WikiPage::loadLastEdit ( )
protected

Loads everything except the text This isn't necessary for all uses, so it's only done if needed.

Definition at line 610 of file WikiPage.php.

References $dbr, $flags, DB_REPLICA, getId(), getLatest(), Revision\newFromPageId(), Revision\newKnownCurrent(), IDBAccessObject\READ_LOCKING, setLastEdit(), and wfGetDB().

Referenced by getComment(), getContent(), getMinorEdit(), getRevision(), getText(), getTimestamp(), getUser(), and getUserText().

WikiPage::loadPageData (   $from = 'fromdb')

Load the object from a given source by title.

Parameters
object | string | int$fromOne of the following:
  • A DB query result object.
  • "fromdb" or WikiPage::READ_NORMAL to get from a replica DB.
  • "fromdbmaster" or WikiPage::READ_LATEST to get from the master DB.
  • "forupdate" or WikiPage::READ_LOCKING to get from the master DB using SELECT FOR UPDATE.
Returns
void

Definition at line 367 of file WikiPage.php.

References $from, DB_REPLICA, DBAccessObjectUtils\getDBOptions(), list, loadFromRow(), pageDataFromTitle(), wfGetDB(), and wfGetLB().

Referenced by checkTouched(), doDeleteArticleReal(), doEditContent(), doUpdateRestrictions(), exists(), getId(), getLatest(), getLinksTimestamp(), getTouched(), and isRedirect().

WikiPage::lockAndGetLatest ( )

Lock the page row for this title+id and return page_latest (or 0)

Returns
integer Returns 0 if no row was found with this title+id
Since
1.27

Definition at line 3046 of file WikiPage.php.

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

Referenced by doDeleteArticleReal(), doModify(), and insertRedirectEntry().

WikiPage::makeParserOptions (   $context)

Get parser options suitable for rendering the primary article wikitext.

See also
ContentHandler::makeParserOptions
Parameters
IContextSource | User | string$contextOne of the following:
  • IContextSource: Use the User and the Language of the provided context
  • User: Use the provided User object and $wgLang for the language, so use an IContextSource object if possible.
  • 'canonical': Canonical options (anonymous user with default preferences and content language).
Returns
ParserOptions

Definition at line 2060 of file WikiPage.php.

References $context, $options, getContentHandler(), and getTitle().

Referenced by DifferenceEngine\getParserOutput(), ContentHandler\getParserOutputForIndexing(), ApiParse\makeParserOptions(), and prepareContentForEdit().

static WikiPage::newFromID (   $id,
  $from = 'fromdb' 
)
static

Constructor from a page id.

Parameters
int$idArticle ID to load
string | int$fromOne of the following values:
  • "fromdb" or WikiPage::READ_NORMAL to select from a replica DB
  • "fromdbmaster" or WikiPage::READ_LATEST to select from the master database
Returns
WikiPage|null

Definition at line 153 of file WikiPage.php.

References $from, DB_MASTER, DB_REPLICA, and wfGetDB().

Referenced by RefreshLinks\fixLinksFromArticle(), RefreshLinks\fixRedirect(), SearchUpdate\getLatestPage(), ApiBase\getTitleOrPageId(), DeleteLinksJob\run(), and CategoryMembershipChangeJob\run().

static WikiPage::newFromRow (   $row,
  $from = 'fromdb' 
)
static

Constructor from a database row.

Since
1.20
Parameters
object$rowDatabase row containing at least fields returned by selectFields().
string | int$fromSource of $data:
  • "fromdb" or WikiPage::READ_NORMAL: from a replica DB
  • "fromdbmaster" or WikiPage::READ_LATEST: from the master DB
  • "forupdate" or WikiPage::READ_LOCKING: from the master DB using SELECT FOR UPDATE
Returns
WikiPage

Definition at line 180 of file WikiPage.php.

References $from, $page, and Title\newFromRow().

static WikiPage::onArticleCreate ( Title  $title)
static

The onArticle*() functions are supposed to be a kind of hooks which should be called whenever any of the specified actions are done.

This is a good place to put code to clear caches, for instance.

This is called on page move and undelete, as well as edit

Parameters
Title$title

Definition at line 3372 of file WikiPage.php.

References Title\deleteTitleProtection(), Title\getNamespace(), Title\getOtherPage(), Category\newFromTitle(), NS_CATEGORY, Title\purgeSquid(), and Title\touchLinks().

Referenced by MovePage\moveToInternal(), and Article\onArticleCreate().

static WikiPage::onArticleEdit ( Title  $title,
Revision  $revision = null 
)
static

Purge caches on page update etc.

Parameters
Title$title
Revision | null$revisionRevision that was just saved, may be null

Definition at line 3447 of file WikiPage.php.

References DeferredUpdates\addCallableUpdate(), DeferredUpdates\addUpdate(), HTMLFileCache\clearFileCache(), InfoAction\invalidateCache(), Title\purgeSquid(), and use.

Referenced by Article\onArticleEdit().

WikiPage::pageData (   $dbr,
  $conditions,
  $options = [] 
)
protected

Fetch a page record with the given conditions.

Parameters
IDatabase$dbr
array$conditions
array$options
Returns
object|bool Database result resource, or false on failure

Definition at line 316 of file WikiPage.php.

References $dbr, $options, and Hooks\run().

Referenced by pageDataFromId(), and pageDataFromTitle().

WikiPage::pageDataFromId (   $dbr,
  $id,
  $options = [] 
)

Fetch a page record matching the requested ID.

Parameters
IDatabase$dbr
int$id
array$options
Returns
object|bool Database result resource, or false on failure

Definition at line 351 of file WikiPage.php.

References $dbr, $options, and pageData().

WikiPage::pageDataFromTitle (   $dbr,
  $title,
  $options = [] 
)

Fetch a page record matching the Title object's namespace and title using a sanitized title string.

Parameters
IDatabase$dbr
Title$title
array$options
Returns
object|bool Database result resource, or false on failure

Definition at line 337 of file WikiPage.php.

References $dbr, $options, $title, and pageData().

Referenced by loadPageData().

WikiPage::prepareContentForEdit ( Content  $content,
  $revision = null,
User  $user = null,
  $serialFormat = null,
  $useCache = true 
)

Prepare content which is about to be saved.

Returns a stdClass with source, pst and output members

Parameters
Content$content
Revision | int | null$revisionRevision object. For backwards compatibility, a revision ID is also accepted, but this is deprecated.
User | null$user
string | null$serialFormat
bool$useCacheCheck shared prepared edit cache
Returns
object
Since
1.21

Definition at line 2103 of file WikiPage.php.

References $content, $mPreparedEdit, $parser, $title, $user, $wgContLang, $wgUser, ApiStashEdit\checkCache(), DB_MASTER, Title\equals(), getContent(), Content\getContentHandler(), ContentHandler\getContentText(), getTitle(), global, makeParserOptions(), Revision\newFromId(), ParserOptions\newFromUserAndLang(), object, Content\preSaveTransform(), Revision\RAW, Hooks\run(), use, wfGetDB(), and wfTimestampNow().

Referenced by doEditContent(), doEditUpdates(), ApiStashEdit\parseAndStash(), and prepareTextForEdit().

WikiPage::prepareTextForEdit (   $text,
  $revid = null,
User  $user = null 
)

Prepare text which is about to be saved.

Returns a stdClass with source, pst and output members

Parameters
string$text
int | null$revid
User | null$user
Deprecated:
since 1.21: use prepareContentForEdit instead.
Returns
object

Definition at line 2082 of file WikiPage.php.

References $content, $user, getTitle(), ContentHandler\makeContent(), prepareContentForEdit(), and wfDeprecated().

WikiPage::protectDescription ( array  $limit,
array  $expiry 
)

Builds the description to serve as comment for the edit.

Parameters
array$limitSet of restriction keys
array$expiryPer restriction type expiration
Returns
string

Definition at line 2743 of file WikiPage.php.

References as, formatExpiry(), and wfMessage().

Referenced by insertProtectNullRevision().

WikiPage::protectDescriptionLog ( array  $limit,
array  $expiry 
)

Builds the description to serve as comment for the log entry.

Some bots may parse IRC lines, which are generated from log entries which contain plain protect description text. Keep them in old format to avoid breaking compatibility. TODO: Fix protection log to store structured description and format it on-the-fly.

Parameters
array$limitSet of restriction keys
array$expiryPer restriction type expiration
Returns
string

Definition at line 2785 of file WikiPage.php.

References $wgContLang, as, formatExpiry(), and global.

Referenced by doUpdateRestrictions().

WikiPage::replaceSectionAtRev (   $sectionId,
Content  $sectionContent,
  $sectionTitle = '',
  $baseRevId = null 
)
Parameters
string | number | null | bool$sectionIdSection identifier as a number or string (e.g. 0, 1 or 'T-1'), null/false or an empty string for the whole page or 'new' for a new section.
Content$sectionContentNew content of the section.
string$sectionTitleNew section's subject, only if $section is "new".
int | null$baseRevId
Exceptions
MWException
Returns
Content|null New complete article content, or null if error.
Since
1.24

Definition at line 1475 of file WikiPage.php.

References $rev, $sectionContent, getContent(), getContentHandler(), getId(), Revision\newFromId(), supportsSections(), and wfDebug().

Referenced by replaceSectionContent().

WikiPage::replaceSectionContent (   $sectionId,
Content  $sectionContent,
  $sectionTitle = '',
  $edittime = null 
)
Parameters
string | number | null | bool$sectionIdSection identifier as a number or string (e.g. 0, 1 or 'T-1'), null/false or an empty string for the whole page or 'new' for a new section.
Content$sectionContentNew content of the section.
string$sectionTitleNew section's subject, only if $section is "new".
string$edittimeRevision timestamp or null to use the current revision.
Exceptions
MWException
Returns
Content|null New complete article content, or null if error.
Since
1.21
Deprecated:
since 1.24, use replaceSectionAtRev instead

Definition at line 1436 of file WikiPage.php.

References $dbr, $rev, DB_MASTER, DB_REPLICA, Revision\loadFromTimestamp(), replaceSectionAtRev(), wfGetDB(), and wfGetLB().

static WikiPage::selectFields ( )
static

Return the list of revision fields that should be selected to create a new page.

Returns
array

Definition at line 281 of file WikiPage.php.

References global.

Referenced by Title\getLinksFrom(), Article\selectFields(), and ArticleTest\testStaticFunctions().

WikiPage::setLastEdit ( Revision  $revision)
protected

Set the latest revision.

Parameters
Revision$revision

Definition at line 650 of file WikiPage.php.

References Revision\getTimestamp().

Referenced by loadLastEdit(), and updateRevisionOn().

WikiPage::setTimestamp (   $ts)

Set the page timestamp (use only to avoid DB queries)

Parameters
string$tsMW timestamp of last article revision
Returns
void

Definition at line 727 of file WikiPage.php.

References TS_MW, and wfTimestamp().

WikiPage::shouldCheckParserCache ( ParserOptions  $parserOptions,
  $oldId 
)

Should the parser cache be used?

Parameters
ParserOptions$parserOptionsParserOptions to check
int$oldId
Returns
bool

Definition at line 1065 of file WikiPage.php.

References exists(), getContentHandler(), getLatest(), and ParserOptions\getStubThreshold().

Referenced by getParserOutput().

WikiPage::supportsSections ( )

Returns true if this page's content model supports sections.

Returns
bool
Todo:

The skin should check this and not offer section functionality if sections are not supported.

The EditPage should check this and not offer section functionality if sections are not supported.

Definition at line 1418 of file WikiPage.php.

References getContentHandler().

Referenced by replaceSectionAtRev().

WikiPage::triggerOpportunisticLinksUpdate ( ParserOutput  $parserOutput)
WikiPage::updateCategoryCounts ( array  $added,
array  $deleted,
  $id = 0 
)

Update all the appropriate counts in the category table, given that we've added the categories $added and deleted the categories $deleted.

Parameters
array$addedThe names of categories that were added
array$deletedThe names of categories that were deleted
integer$idPage ID (this should be the original deleted page ID)

Definition at line 3563 of file WikiPage.php.

References as, DB_MASTER, getId(), getTitle(), Category\newFromName(), Category\newFromRow(), NS_CATEGORY, NS_FILE, Hooks\run(), use, and wfGetDB().

WikiPage::updateIfNewerOn (   $dbw,
  $revision 
)

If the given revision is newer than the currently set page_latest, update the page record.

Otherwise, do nothing.

Deprecated:
since 1.24, use updateRevisionOn instead
Parameters
IDatabase$dbw
Revision$revision
Returns
bool

Definition at line 1366 of file WikiPage.php.

References $ret, getId(), TS_MW, updateRevisionOn(), and wfTimestamp().

WikiPage::updateRedirectOn (   $dbw,
  $redirectTitle,
  $lastRevIsRedirect = null 
)

Add row to the redirect table if this is a redirect, remove otherwise.

Parameters
IDatabase$dbw
Title$redirectTitleTitle object pointing to the redirect target, or NULL if this is not a redirect
null | bool$lastRevIsRedirectIf given, will optimize adding and removing rows in redirect table.
Returns
bool True on success, false on failure
Access:
private

Definition at line 1331 of file WikiPage.php.

References getId(), getTitle(), insertRedirectEntry(), NS_FILE, and RepoGroup\singleton().

Referenced by updateRevisionOn().

WikiPage::updateRevisionOn (   $dbw,
  $revision,
  $lastRevision = null,
  $lastRevIsRedirect = null 
)

Update the page record to point to a newly saved revision.

Parameters
IDatabase$dbw
Revision$revisionFor ID number, and text used to set length and redirect status fields
int$lastRevisionIf given, will not overwrite the page field when different from the currently set value. Giving 0 indicates the new page flag should be set on.
bool$lastRevIsRedirectIf given, will optimize adding and removing rows in redirect table.
Returns
bool Success; false if the page row was missing or page_latest changed

Definition at line 1260 of file WikiPage.php.

References $content, getId(), global, setLastEdit(), LinkCache\singleton(), and updateRedirectOn().

Referenced by doCreate(), doModify(), insertProtectNullRevision(), and updateIfNewerOn().

Member Data Documentation

WikiPage::$mDataLoaded = false

{

Access:
protected

Definition at line 43 of file WikiPage.php.

int WikiPage::$mDataLoadedFrom = self::READ_NONE
protected

One of the READ_* constants.

Definition at line 59 of file WikiPage.php.

int WikiPage::$mId = null
protected

Definition at line 54 of file WikiPage.php.

Referenced by getId().

WikiPage::$mIsRedirect = false

{

Access:
protected

Definition at line 44 of file WikiPage.php.

Referenced by isRedirect().

Revision WikiPage::$mLastRevision = null
protected

Definition at line 69 of file WikiPage.php.

Referenced by getRevision().

WikiPage::$mLatest = false

{

Access:
protected

Definition at line 45 of file WikiPage.php.

Referenced by getLatest(), and loadFromRow().

string WikiPage::$mLinksUpdated = '19700101000000'
protected

Definition at line 84 of file WikiPage.php.

Referenced by getLinksTimestamp().

stdClass WikiPage::$mPreparedEdit = false

Map of cache fields (text, parser output, ect) for a proposed/new edit.

Definition at line 49 of file WikiPage.php.

Referenced by doEditUpdates(), and prepareContentForEdit().

Title WikiPage::$mRedirectTarget = null
protected

Definition at line 64 of file WikiPage.php.

Referenced by WikiFilePage\getRedirectTarget(), and getRedirectTarget().

string WikiPage::$mTimestamp = ''
protected

Timestamp of the current revision or empty string if not loaded.

Definition at line 74 of file WikiPage.php.

Title WikiPage::$mTitle = null
string WikiPage::$mTouched = '19700101000000'
protected

Definition at line 79 of file WikiPage.php.

Referenced by getTouched().

const WikiPage::PURGE_ALL = 7

Definition at line 89 of file WikiPage.php.

Referenced by ApiPurge\execute(), and PurgeAction\onSubmit().

const WikiPage::PURGE_CDN_CACHE = 1

Definition at line 86 of file WikiPage.php.

const WikiPage::PURGE_CLUSTER_PCACHE = 2

Definition at line 87 of file WikiPage.php.

const WikiPage::PURGE_GLOBAL_PCACHE = 4

Definition at line 88 of file WikiPage.php.

Referenced by ApiPurge\execute().


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