MediaWiki  1.28.0
LinksUpdate Class Reference

Class the manages updates of *_link tables as well as similar extension-managed tables. More...

Inheritance diagram for LinksUpdate:
Collaboration diagram for LinksUpdate:

Public Member Functions

 __construct (Title $title, ParserOutput $parserOutput, $recursive=true)
 Constructor. More...
 
 doUpdate ()
 Update link tables with outgoing links from an updated article. More...
 
 getAddedLinks ()
 Fetch page links added by this LinksUpdate. More...
 
 getAddedProperties ()
 Fetch page properties added by this LinksUpdate. More...
 
 getAsJobSpecification ()
 
 getImages ()
 Return the list of images used as generated by the parser. More...
 
 getParserOutput ()
 Returns parser output. More...
 
 getPropertyDeletions ($existing)
 Get array of properties which should be deleted. More...
 
 getPropertyInsertions ($existing=[])
 Get an array of page property insertions. More...
 
 getRemovedLinks ()
 Fetch page links removed by this LinksUpdate. More...
 
 getRemovedProperties ()
 Fetch page properties removed by this LinksUpdate. More...
 
 getRevision ()
 
 getTitle ()
 Return the title object of the page being updated. More...
 
 getTriggeringUser ()
 
 invalidateCategories ($cats)
 
 invalidateImageDescriptions ($images)
 
 setRevision (Revision $revision)
 Set the revision corresponding to this LinksUpdate. More...
 
 setTriggeringUser (User $user)
 Set the User who triggered this LinksUpdate. More...
 
 updateCategoryCounts ($added, $deleted)
 Update all the appropriate counts in the category table. More...
 
- Public Member Functions inherited from DataUpdate
 __construct ()
 
 setTransactionTicket ($ticket)
 

Static Public Member Functions

static acquirePageLock (IDatabase $dbw, $pageId, $why= 'atomicity')
 Acquire a lock for performing link table updates for a page on a DB. More...
 
static queueRecursiveJobsForTable (Title $title, $table)
 Queue a RefreshLinks job for any table. More...
 
- Static Public Member Functions inherited from DataUpdate
static runUpdates (array $updates)
 Convenience method, calls doUpdate() on every DataUpdate in the array. More...
 

Public Attributes

array $mCategories
 Map of category names to sort keys. More...
 
array $mExternals
 URLs of external links, array key only. More...
 
int $mId
 Page ID of the article linked from. More...
 
array $mImages
 DB keys of the images used, in the array key only. More...
 
array $mInterlangs
 Map of language codes to titles. More...
 
array $mInterwikis
 2-D map of (prefix => DBK => 1) More...
 
array $mLinks
 Map of title strings to IDs for the links in the document. More...
 
ParserOutput $mParserOutput
 
array $mProperties
 Map of arbitrary name to value. More...
 
bool $mRecursive
 Whether to queue jobs for recursive updates. More...
 
array $mTemplates
 Map of title strings to IDs for the template references, including broken ones. More...
 
Title $mTitle
 Title object of the article linked from. More...
 

Protected Member Functions

 doIncrementalUpdate ()
 
 queueRecursiveJobs ()
 Queue recursive jobs for this page. More...
 

Private Member Functions

 getCategoryDeletions ($existing)
 Given an array of existing categories, returns those categories which are not in $this and thus should be deleted. More...
 
 getCategoryInsertions ($existing=[])
 Get an array of category insertions. More...
 
 getDB ()
 
 getExistingCategories ()
 Get an array of existing categories, with the name in the key and sort key in the value. More...
 
 getExistingExternals ()
 Get an array of existing external links, URLs in the keys. More...
 
 getExistingImages ()
 Get an array of existing images, image names in the keys. More...
 
 getExistingInterlangs ()
 Get an array of existing interlanguage links, with the language code in the key and the title in the value. More...
 
 getExistingInterwikis ()
 Get an array of existing inline interwiki links, as a 2-D array. More...
 
 getExistingLinks ()
 Get an array of existing links, as a 2-D array. More...
 
 getExistingProperties ()
 Get an array of existing categories, with the name in the key and sort key in the value. More...
 
 getExistingTemplates ()
 Get an array of existing templates, as a 2-D array. More...
 
 getExternalDeletions ($existing)
 Given an array of existing external links, returns those links which are not in $this and thus should be deleted. More...
 
 getExternalInsertions ($existing=[])
 Get an array of externallinks insertions. More...
 
 getImageDeletions ($existing)
 Given an array of existing images, returns those images which are not in $this and thus should be deleted. More...
 
 getImageInsertions ($existing=[])
 Get an array of image insertions Skips the names specified in $existing. More...
 
 getInterlangDeletions ($existing)
 Given an array of existing interlanguage links, returns those links which are not in $this and thus should be deleted. More...
 
 getInterlangInsertions ($existing=[])
 Get an array of interlanguage link insertions. More...
 
 getInterwikiDeletions ($existing)
 Given an array of existing interwiki links, returns those links which are not in $this and thus should be deleted. More...
 
 getInterwikiInsertions ($existing=[])
 Get an array of interwiki insertions for passing to the DB Skips the titles specified by the 2-D array $existing. More...
 
 getLinkDeletions ($existing)
 Given an array of existing links, returns those links which are not in $this and thus should be deleted. More...
 
 getLinkInsertions ($existing=[])
 Get an array of pagelinks insertions for passing to the DB Skips the titles specified by the 2-D array $existing. More...
 
 getPagePropRowData ($prop)
 Returns an associative array to be used for inserting a row into the page_props table. More...
 
 getPropertySortKeyValue ($value)
 Determines the sort key for the given property value. More...
 
 getTemplateDeletions ($existing)
 Given an array of existing templates, returns those templates which are not in $this and thus should be deleted. More...
 
 getTemplateInsertions ($existing=[])
 Get an array of template insertions. More...
 
 incrTableUpdate ($table, $prefix, $deletions, $insertions)
 Update a table by doing a delete query then an insert query. More...
 
 invalidateProperties ($changed)
 Invalidate any necessary link lists related to page property changes. More...
 
 updateLinksTimestamp ()
 Update links table freshness. More...
 

Private Attributes

IDatabase $db
 
null array $linkDeletions = null
 Deleted links if calculated. More...
 
null array $linkInsertions = null
 Added links if calculated. More...
 
Revision $mRevision
 Revision for which this update has been triggered. More...
 
null array $propertyDeletions = null
 Deleted properties if calculated. More...
 
null array $propertyInsertions = null
 Added properties if calculated. More...
 
User null $user
 

Additional Inherited Members

- Protected Attributes inherited from DataUpdate
mixed $ticket
 Result from LBFactory::getEmptyTransactionTicket() More...
 

Detailed Description

Class the manages updates of *_link tables as well as similar extension-managed tables.

Note
: LinksUpdate is managed by DeferredUpdates::execute(). Do not run this in a transaction.

See docs/deferred.txt

Definition at line 33 of file LinksUpdate.php.

Constructor & Destructor Documentation

LinksUpdate::__construct ( Title  $title,
ParserOutput  $parserOutput,
  $recursive = true 
)

Constructor.

Parameters
Title$titleTitle of the page we're updating
ParserOutput$parserOutputOutput from a full parse of this page
bool$recursiveQueue jobs for recursive updates?
Exceptions
MWException

Definition at line 111 of file LinksUpdate.php.

References $link, $parserOutput, $title, as, Title\GAID_FOR_UPDATE, Title\getArticleID(), ParserOutput\getCategories(), ParserOutput\getExternalLinks(), ParserOutput\getImages(), ParserOutput\getInterwikiLinks(), ParserOutput\getLanguageLinks(), ParserOutput\getLinks(), ParserOutput\getProperties(), ParserOutput\getTemplates(), list, and Hooks\run().

Member Function Documentation

static LinksUpdate::acquirePageLock ( IDatabase  $dbw,
  $pageId,
  $why = 'atomicity' 
)
static

Acquire a lock for performing link table updates for a page on a DB.

Parameters
IDatabase$dbw
integer$pageId
string$whyOne of (job, atomicity)
Returns
ScopedCallback
Exceptions
RuntimeException
Since
1.27

Definition at line 196 of file LinksUpdate.php.

References IDatabase\getScopedLockAndFlush().

Referenced by LinksDeletionUpdate\doUpdate(), DeleteLinksJob\run(), and RefreshLinksJob\runForTitle().

LinksUpdate::doUpdate ( )

Update link tables with outgoing links from an updated article.

Note
: this is managed by DeferredUpdates::execute(). Do not run this in a transaction.

Implements DeferrableUpdate.

Definition at line 165 of file LinksUpdate.php.

References doIncrementalUpdate(), getDB(), and Hooks\run().

LinksUpdate::getAddedLinks ( )

Fetch page links added by this LinksUpdate.

Only available after the update is complete.

Since
1.22
Returns
null|array Array of Titles

Definition at line 1010 of file LinksUpdate.php.

References as, and Title\makeTitle().

LinksUpdate::getAddedProperties ( )

Fetch page properties added by this LinksUpdate.

Only available after the update is complete.

Since
1.28
Returns
null|array

Definition at line 1047 of file LinksUpdate.php.

References $propertyInsertions.

LinksUpdate::getAsJobSpecification ( )
Returns
array (wiki => wiki ID, job => IJobSpecification)

Implements EnqueueableDataUpdate.

Definition at line 1087 of file LinksUpdate.php.

References $mRecursive, getDB(), getTitle(), true, and user.

LinksUpdate::getCategoryDeletions (   $existing)
private

Given an array of existing categories, returns those categories which are not in $this and thus should be deleted.

Parameters
array$existing
Returns
array

Definition at line 744 of file LinksUpdate.php.

Referenced by doIncrementalUpdate().

LinksUpdate::getCategoryInsertions (   $existing = [])
private

Get an array of category insertions.

Parameters
array$existingMapping existing category names to sort keys. If both match a link in $this, the link will be omitted from the output
Returns
array

Definition at line 527 of file LinksUpdate.php.

References $mId, $name, $type, $wgContLang, as, getDB(), global, Title\makeTitleSafe(), NS_CATEGORY, NS_FILE, and Collation\singleton().

Referenced by doIncrementalUpdate().

LinksUpdate::getExistingCategories ( )
private

Get an array of existing categories, with the name in the key and sort key in the value.

Returns
array

Definition at line 861 of file LinksUpdate.php.

References $res, as, and getDB().

Referenced by doIncrementalUpdate().

LinksUpdate::getExistingExternals ( )
private

Get an array of existing external links, URLs in the keys.

Returns
array

Definition at line 845 of file LinksUpdate.php.

References $res, as, and getDB().

Referenced by doIncrementalUpdate().

LinksUpdate::getExistingImages ( )
private

Get an array of existing images, image names in the keys.

Returns
array

Definition at line 829 of file LinksUpdate.php.

References $res, as, and getDB().

Referenced by doIncrementalUpdate().

LinksUpdate::getExistingInterlangs ( )
private

Get an array of existing interlanguage links, with the language code in the key and the title in the value.

Returns
array

Definition at line 878 of file LinksUpdate.php.

References $res, as, and getDB().

Referenced by doIncrementalUpdate().

LinksUpdate::getExistingInterwikis ( )
private

Get an array of existing inline interwiki links, as a 2-D array.

Returns
array (prefix => array(dbkey => 1))

Definition at line 893 of file LinksUpdate.php.

References $res, as, and getDB().

Referenced by doIncrementalUpdate().

LinksUpdate::getExistingLinks ( )
private

Get an array of existing links, as a 2-D array.

Returns
array

Definition at line 791 of file LinksUpdate.php.

References $res, as, and getDB().

Referenced by doIncrementalUpdate().

LinksUpdate::getExistingProperties ( )
private

Get an array of existing categories, with the name in the key and sort key in the value.

Returns
array Array of property names and values

Definition at line 912 of file LinksUpdate.php.

References $res, as, and getDB().

Referenced by doIncrementalUpdate().

LinksUpdate::getExistingTemplates ( )
private

Get an array of existing templates, as a 2-D array.

Returns
array

Definition at line 810 of file LinksUpdate.php.

References $res, as, and getDB().

Referenced by doIncrementalUpdate().

LinksUpdate::getExternalDeletions (   $existing)
private

Given an array of existing external links, returns those links which are not in $this and thus should be deleted.

Parameters
array$existing
Returns
array

Definition at line 734 of file LinksUpdate.php.

Referenced by doIncrementalUpdate().

LinksUpdate::getExternalInsertions (   $existing = [])
private

Get an array of externallinks insertions.

Skips the names specified in $existing

Parameters
array$existing
Returns
array

Definition at line 502 of file LinksUpdate.php.

References $mId, as, getDB(), and wfMakeUrlIndexes().

Referenced by doIncrementalUpdate().

LinksUpdate::getImageDeletions (   $existing)
private

Given an array of existing images, returns those images which are not in $this and thus should be deleted.

Parameters
array$existing
Returns
array

Definition at line 724 of file LinksUpdate.php.

Referenced by doIncrementalUpdate().

LinksUpdate::getImageInsertions (   $existing = [])
private

Get an array of image insertions Skips the names specified in $existing.

Parameters
array$existing
Returns
array

Definition at line 483 of file LinksUpdate.php.

References $mId, and as.

Referenced by doIncrementalUpdate().

LinksUpdate::getImages ( )

Return the list of images used as generated by the parser.

Returns
array

Definition at line 944 of file LinksUpdate.php.

References $mImages.

LinksUpdate::getInterlangDeletions (   $existing)
private

Given an array of existing interlanguage links, returns those links which are not in $this and thus should be deleted.

Parameters
array$existing
Returns
array

Definition at line 754 of file LinksUpdate.php.

Referenced by doIncrementalUpdate().

LinksUpdate::getInterlangInsertions (   $existing = [])
private

Get an array of interlanguage link insertions.

Parameters
array$existingMapping existing language codes to titles
Returns
array

Definition at line 571 of file LinksUpdate.php.

References $lang, $mId, $title, and as.

Referenced by doIncrementalUpdate().

LinksUpdate::getInterwikiDeletions (   $existing)
private

Given an array of existing interwiki links, returns those links which are not in $this and thus should be deleted.

Parameters
array$existing
Returns
array

Definition at line 773 of file LinksUpdate.php.

References as.

Referenced by doIncrementalUpdate().

LinksUpdate::getInterwikiInsertions (   $existing = [])
private

Get an array of interwiki insertions for passing to the DB Skips the titles specified by the 2-D array $existing.

Parameters
array$existing
Returns
array

Definition at line 661 of file LinksUpdate.php.

References $mId, and as.

Referenced by doIncrementalUpdate().

LinksUpdate::getLinkDeletions (   $existing)
private

Given an array of existing links, returns those links which are not in $this and thus should be deleted.

Parameters
array$existing
Returns
array

Definition at line 686 of file LinksUpdate.php.

References as.

Referenced by doIncrementalUpdate().

LinksUpdate::getLinkInsertions (   $existing = [])
private

Get an array of pagelinks insertions for passing to the DB Skips the titles specified by the 2-D array $existing.

Parameters
array$existing
Returns
array

Definition at line 436 of file LinksUpdate.php.

References $mId, and as.

Referenced by doIncrementalUpdate().

LinksUpdate::getPagePropRowData (   $prop)
private

Returns an associative array to be used for inserting a row into the page_props table.

Besides the given property name, this will include the page id from $this->mId and any property value from $this->mProperties.

The array returned will include the pp_sortkey field if this is present in the database (as indicated by $wgPagePropsHaveSortkey). The sortkey value is currently determined by getPropertySortKeyValue().

Note
this assumes that $this->mProperties[$prop] is defined.
Parameters
string$propThe name of the property.
Returns
array

Definition at line 617 of file LinksUpdate.php.

References $mId, $value, getPropertySortKeyValue(), and global.

Referenced by getPropertyInsertions().

LinksUpdate::getParserOutput ( )

Returns parser output.

Since
1.19
Returns
ParserOutput

Definition at line 936 of file LinksUpdate.php.

References $mParserOutput.

LinksUpdate::getPropertyDeletions (   $existing)

Get array of properties which should be deleted.

Parameters
array$existing
Returns
array

Definition at line 763 of file LinksUpdate.php.

Referenced by doIncrementalUpdate().

LinksUpdate::getPropertyInsertions (   $existing = [])

Get an array of page property insertions.

Parameters
array$existing
Returns
array

Definition at line 590 of file LinksUpdate.php.

References $name, as, and getPagePropRowData().

Referenced by doIncrementalUpdate().

LinksUpdate::getPropertySortKeyValue (   $value)
private

Determines the sort key for the given property value.

This will return $value if it is a float or int, 1 or resp. 0 if it is a bool, and null otherwise.

Note
In the future, we may allow the sortkey to be specified explicitly in ParserOutput::setProperty.
Parameters
mixed$value
Returns
float|null

Definition at line 647 of file LinksUpdate.php.

References $value.

Referenced by getPagePropRowData().

LinksUpdate::getRemovedLinks ( )

Fetch page links removed by this LinksUpdate.

Only available after the update is complete.

Since
1.22
Returns
null|array Array of Titles

Definition at line 1027 of file LinksUpdate.php.

References $title, $titles, as, and Title\makeTitle().

LinksUpdate::getRemovedProperties ( )

Fetch page properties removed by this LinksUpdate.

Only available after the update is complete.

Since
1.28
Returns
null|array

Definition at line 1057 of file LinksUpdate.php.

References $propertyDeletions.

LinksUpdate::getRevision ( )
Since
1.28
Returns
null|Revision

Definition at line 963 of file LinksUpdate.php.

References $mRevision.

LinksUpdate::getTemplateDeletions (   $existing)
private

Given an array of existing templates, returns those templates which are not in $this and thus should be deleted.

Parameters
array$existing
Returns
array

Definition at line 705 of file LinksUpdate.php.

References as.

Referenced by doIncrementalUpdate().

LinksUpdate::getTemplateInsertions (   $existing = [])
private

Get an array of template insertions.

Like getLinkInsertions()

Parameters
array$existing
Returns
array

Definition at line 460 of file LinksUpdate.php.

References $mId, and as.

Referenced by doIncrementalUpdate().

LinksUpdate::getTitle ( )

Return the title object of the page being updated.

Returns
Title

Definition at line 927 of file LinksUpdate.php.

References $mTitle.

Referenced by getAsJobSpecification().

LinksUpdate::getTriggeringUser ( )
Since
1.27
Returns
null|User

Definition at line 981 of file LinksUpdate.php.

References $user.

LinksUpdate::incrTableUpdate (   $table,
  $prefix,
  $deletions,
  $insertions 
)
private

Update a table by doing a delete query then an insert query.

Parameters
string$tableTable name
string$prefixField name prefix
array$deletions
array$insertionsRows to insert

Definition at line 357 of file LinksUpdate.php.

References $mId, $services, as, getDB(), and Hooks\run().

Referenced by doIncrementalUpdate().

LinksUpdate::invalidateCategories (   $cats)
Parameters
array$cats

Definition at line 327 of file LinksUpdate.php.

References getDB(), PurgeJobUtils\invalidatePages(), and NS_CATEGORY.

Referenced by doIncrementalUpdate().

LinksUpdate::invalidateImageDescriptions (   $images)
Parameters
array$images

Definition at line 346 of file LinksUpdate.php.

References getDB(), PurgeJobUtils\invalidatePages(), and NS_FILE.

Referenced by doIncrementalUpdate().

LinksUpdate::invalidateProperties (   $changed)
private

Invalidate any necessary link lists related to page property changes.

Parameters
array$changed

Definition at line 989 of file LinksUpdate.php.

References $name, $value, DeferredUpdates\addUpdate(), as, and global.

Referenced by doIncrementalUpdate().

LinksUpdate::queueRecursiveJobs ( )
protected

Queue recursive jobs for this page.

Which means do LinksUpdate on all pages that include the current page, using the job queue.

Definition at line 282 of file LinksUpdate.php.

References $title, as, RefreshLinksJob\newPrioritized(), NS_FILE, and JobQueueGroup\singleton().

Referenced by doIncrementalUpdate().

static LinksUpdate::queueRecursiveJobsForTable ( Title  $title,
  $table 
)
static

Queue a RefreshLinks job for any table.

Parameters
Title$titleTitle to do job for
string$tableTable to use (e.g. 'templatelinks')

Definition at line 308 of file LinksUpdate.php.

References $job, Title\getBacklinkCache(), Job\newRootJobParams(), and JobQueueGroup\singleton().

Referenced by WikiPage\doDeleteUpdates(), and LocalFile\recordUpload2().

LinksUpdate::setRevision ( Revision  $revision)

Set the revision corresponding to this LinksUpdate.

Since
1.27
Parameters
Revision$revision

Definition at line 955 of file LinksUpdate.php.

LinksUpdate::setTriggeringUser ( User  $user)

Set the User who triggered this LinksUpdate.

Since
1.27
Parameters
User$user

Definition at line 973 of file LinksUpdate.php.

References $user, and user.

LinksUpdate::updateCategoryCounts (   $added,
  $deleted 
)

Update all the appropriate counts in the category table.

Parameters
array$addedAssociative array of category name => sort key
array$deletedAssociative array of category name => sort key

Definition at line 336 of file LinksUpdate.php.

References WikiPage\factory().

Referenced by doIncrementalUpdate().

LinksUpdate::updateLinksTimestamp ( )
private

Update links table freshness.

Definition at line 1064 of file LinksUpdate.php.

References $timestamp, and getDB().

Referenced by doIncrementalUpdate().

Member Data Documentation

IDatabase LinksUpdate::$db
private

Definition at line 101 of file LinksUpdate.php.

Referenced by getDB().

null array LinksUpdate::$linkDeletions = null
private

Deleted links if calculated.

Definition at line 83 of file LinksUpdate.php.

null array LinksUpdate::$linkInsertions = null
private

Added links if calculated.

Definition at line 78 of file LinksUpdate.php.

array LinksUpdate::$mCategories

Map of category names to sort keys.

Definition at line 58 of file LinksUpdate.php.

array LinksUpdate::$mExternals

URLs of external links, array key only.

Definition at line 55 of file LinksUpdate.php.

array LinksUpdate::$mImages

DB keys of the images used, in the array key only.

Definition at line 49 of file LinksUpdate.php.

Referenced by getImages().

array LinksUpdate::$mInterlangs

Map of language codes to titles.

Definition at line 61 of file LinksUpdate.php.

array LinksUpdate::$mInterwikis

2-D map of (prefix => DBK => 1)

Definition at line 64 of file LinksUpdate.php.

array LinksUpdate::$mLinks

Map of title strings to IDs for the links in the document.

Definition at line 46 of file LinksUpdate.php.

ParserOutput LinksUpdate::$mParserOutput

Definition at line 43 of file LinksUpdate.php.

Referenced by getParserOutput().

array LinksUpdate::$mProperties

Map of arbitrary name to value.

Definition at line 67 of file LinksUpdate.php.

bool LinksUpdate::$mRecursive

Whether to queue jobs for recursive updates.

Definition at line 70 of file LinksUpdate.php.

Referenced by getAsJobSpecification().

Revision LinksUpdate::$mRevision
private

Revision for which this update has been triggered.

Definition at line 73 of file LinksUpdate.php.

Referenced by getRevision().

array LinksUpdate::$mTemplates

Map of title strings to IDs for the template references, including broken ones.

Definition at line 52 of file LinksUpdate.php.

Title LinksUpdate::$mTitle

Title object of the article linked from.

Definition at line 40 of file LinksUpdate.php.

Referenced by getTitle().

null array LinksUpdate::$propertyDeletions = null
private

Deleted properties if calculated.

Definition at line 93 of file LinksUpdate.php.

Referenced by getRemovedProperties().

null array LinksUpdate::$propertyInsertions = null
private

Added properties if calculated.

Definition at line 88 of file LinksUpdate.php.

Referenced by doIncrementalUpdate(), and getAddedProperties().

User null LinksUpdate::$user
private

Definition at line 98 of file LinksUpdate.php.

Referenced by getTriggeringUser(), and setTriggeringUser().


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