MediaWiki
1.32.0
|
Class the manages updates of *_link tables as well as similar extension-managed tables. More...
Public Member Functions | |
__construct (Title $title, ParserOutput $parserOutput, $recursive=true) | |
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 () | |
setRevision (Revision $revision) | |
Set the revision corresponding to this LinksUpdate. More... | |
setTriggeringUser (User $user) | |
Set the User who triggered this LinksUpdate. More... | |
Public Member Functions inherited from DataUpdate | |
__construct () | |
getCauseAction () | |
getCauseAgent () | |
setCause ( $action, $user) | |
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, $action='unknown', $userName='unknown') |
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... | |
invalidateCategories ( $cats) | |
invalidateImageDescriptions (array $images) | |
invalidateProperties ( $changed) | |
Invalidate any necessary link lists related to page property changes. More... | |
updateCategoryCounts (array $added, array $deleted) | |
Update all the appropriate counts in the category table. 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 | |
string | $causeAction = 'unknown' |
Short update cause action description. More... | |
string | $causeAgent = 'unknown' |
Short update cause user description. More... | |
mixed | $ticket |
Result from LBFactory::getEmptyTransactionTicket() More... | |
Class the manages updates of *_link tables as well as similar extension-managed tables.
See docs/deferred.txt
Definition at line 35 of file LinksUpdate.php.
LinksUpdate::__construct | ( | Title | $title, |
ParserOutput | $parserOutput, | ||
$recursive = true |
|||
) |
Title | $title | Title of the page we're updating |
ParserOutput | $parserOutput | Output from a full parse of this page |
bool | $recursive | Queue jobs for recursive updates? |
MWException |
Definition at line 111 of file LinksUpdate.php.
References $link, $linksUpdate, $title, as, Title\GAID_FOR_UPDATE, ParserOutput\getCategories(), ParserOutput\getExternalLinks(), ParserOutput\getImages(), ParserOutput\getInterwikiLinks(), ParserOutput\getLanguageLinks(), ParserOutput\getLinks(), ParserOutput\getProperties(), ParserOutput\getTemplates(), list, and Hooks\run().
|
static |
Acquire a lock for performing link table updates for a page on a DB.
IDatabase | $dbw | |
int | $pageId | |
string | $why | One of (job, atomicity) |
Definition at line 200 of file LinksUpdate.php.
References Wikimedia\Rdbms\IDatabase\getScopedLockAndFlush().
Referenced by LinksDeletionUpdate\doUpdate(), doUpdate(), DeleteLinksJob\run(), and RefreshLinksJob\runForTitle().
|
protected |
Definition at line 215 of file LinksUpdate.php.
References $propertyInsertions, getCategoryDeletions(), getCategoryInsertions(), getExistingCategories(), getExistingExternals(), getExistingImages(), getExistingInterlangs(), getExistingInterwikis(), getExistingLinks(), getExistingProperties(), getExistingTemplates(), getExternalDeletions(), getExternalInsertions(), getImageDeletions(), getImageInsertions(), getInterlangDeletions(), getInterlangInsertions(), getInterwikiDeletions(), getInterwikiInsertions(), getLinkDeletions(), getLinkInsertions(), getPropertyDeletions(), getPropertyInsertions(), getTemplateDeletions(), getTemplateInsertions(), incrTableUpdate(), invalidateCategories(), invalidateImageDescriptions(), invalidateProperties(), queueRecursiveJobs(), updateCategoryCounts(), and updateLinksTimestamp().
Referenced by doUpdate().
LinksUpdate::doUpdate | ( | ) |
Update link tables with outgoing links from an updated article.
Implements DeferrableUpdate.
Definition at line 162 of file LinksUpdate.php.
References $linksUpdate, acquirePageLock(), DeferredUpdates\addUpdate(), doIncrementalUpdate(), getDB(), and Hooks\run().
LinksUpdate::getAddedLinks | ( | ) |
Fetch page links added by this LinksUpdate.
Only available after the update is complete.
Definition at line 1071 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.
Definition at line 1108 of file LinksUpdate.php.
References $propertyInsertions.
LinksUpdate::getAsJobSpecification | ( | ) |
Implements EnqueueableDataUpdate.
Definition at line 1148 of file LinksUpdate.php.
References $mRecursive, DataUpdate\getCauseAction(), DataUpdate\getCauseAgent(), getDB(), getTitle(), WikiMap\getWikiIdFromDomain(), true, and user.
|
private |
Given an array of existing categories, returns those categories which are not in $this and thus should be deleted.
array | $existing |
Definition at line 803 of file LinksUpdate.php.
Referenced by doIncrementalUpdate().
|
private |
Get an array of category insertions.
array | $existing | Mapping existing category names to sort keys. If both match a link in $this, the link will be omitted from the output |
Definition at line 591 of file LinksUpdate.php.
References $mId, $name, $type, $wgCategoryCollation, as, MWNamespace\getCategoryLinkType(), getDB(), Title\makeTitleSafe(), NS_CATEGORY, and Collation\singleton().
Referenced by doIncrementalUpdate().
|
private |
Definition at line 1140 of file LinksUpdate.php.
References $db, DB_MASTER, and wfGetDB().
Referenced by doUpdate(), getAsJobSpecification(), getCategoryInsertions(), getExistingCategories(), getExistingExternals(), getExistingImages(), getExistingInterlangs(), getExistingInterwikis(), getExistingLinks(), getExistingProperties(), getExistingTemplates(), incrTableUpdate(), invalidateCategories(), invalidateImageDescriptions(), updateCategoryCounts(), and updateLinksTimestamp().
|
private |
Get an array of existing categories, with the name in the key and sort key in the value.
Definition at line 920 of file LinksUpdate.php.
References $res, as, and getDB().
Referenced by doIncrementalUpdate().
|
private |
Get an array of existing external links, URLs in the keys.
Definition at line 904 of file LinksUpdate.php.
References $res, as, and getDB().
Referenced by doIncrementalUpdate().
|
private |
Get an array of existing images, image names in the keys.
Definition at line 888 of file LinksUpdate.php.
References $res, as, and getDB().
Referenced by doIncrementalUpdate().
|
private |
Get an array of existing interlanguage links, with the language code in the key and the title in the value.
Definition at line 937 of file LinksUpdate.php.
References $res, as, and getDB().
Referenced by doIncrementalUpdate().
|
private |
Get an array of existing inline interwiki links, as a 2-D array.
Definition at line 952 of file LinksUpdate.php.
References $res, as, and getDB().
Referenced by doIncrementalUpdate().
|
private |
Get an array of existing links, as a 2-D array.
Definition at line 850 of file LinksUpdate.php.
References $res, as, and getDB().
Referenced by doIncrementalUpdate().
|
private |
Get an array of existing categories, with the name in the key and sort key in the value.
Definition at line 971 of file LinksUpdate.php.
References $res, as, and getDB().
Referenced by doIncrementalUpdate().
|
private |
Get an array of existing templates, as a 2-D array.
Definition at line 869 of file LinksUpdate.php.
References $res, as, and getDB().
Referenced by doIncrementalUpdate().
|
private |
Given an array of existing external links, returns those links which are not in $this and thus should be deleted.
array | $existing |
Definition at line 793 of file LinksUpdate.php.
Referenced by doIncrementalUpdate().
|
private |
Get an array of externallinks insertions.
Skips the names specified in $existing
array | $existing |
Definition at line 566 of file LinksUpdate.php.
References $mId, as, and wfMakeUrlIndexes().
Referenced by doIncrementalUpdate().
|
private |
Given an array of existing images, returns those images which are not in $this and thus should be deleted.
array | $existing |
Definition at line 783 of file LinksUpdate.php.
Referenced by doIncrementalUpdate().
|
private |
Get an array of image insertions Skips the names specified in $existing.
array | $existing |
Definition at line 547 of file LinksUpdate.php.
Referenced by doIncrementalUpdate().
LinksUpdate::getImages | ( | ) |
Return the list of images used as generated by the parser.
Definition at line 1003 of file LinksUpdate.php.
References $mImages.
|
private |
Given an array of existing interlanguage links, returns those links which are not in $this and thus should be deleted.
array | $existing |
Definition at line 813 of file LinksUpdate.php.
Referenced by doIncrementalUpdate().
|
private |
Get an array of interlanguage link insertions.
array | $existing | Mapping existing language codes to titles |
Definition at line 630 of file LinksUpdate.php.
References $lang, $mId, $title, and as.
Referenced by doIncrementalUpdate().
|
private |
Given an array of existing interwiki links, returns those links which are not in $this and thus should be deleted.
array | $existing |
Definition at line 832 of file LinksUpdate.php.
References as.
Referenced by doIncrementalUpdate().
|
private |
Get an array of interwiki insertions for passing to the DB Skips the titles specified by the 2-D array $existing.
array | $existing |
Definition at line 720 of file LinksUpdate.php.
Referenced by doIncrementalUpdate().
|
private |
Given an array of existing links, returns those links which are not in $this and thus should be deleted.
array | $existing |
Definition at line 745 of file LinksUpdate.php.
References as.
Referenced by doIncrementalUpdate().
|
private |
Get an array of pagelinks insertions for passing to the DB Skips the titles specified by the 2-D array $existing.
array | $existing |
Definition at line 500 of file LinksUpdate.php.
Referenced by doIncrementalUpdate().
|
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().
string | $prop | The name of the property. |
Definition at line 676 of file LinksUpdate.php.
References $mId, $value, $wgPagePropsHaveSortkey, and getPropertySortKeyValue().
Referenced by getPropertyInsertions().
LinksUpdate::getParserOutput | ( | ) |
Returns parser output.
Definition at line 995 of file LinksUpdate.php.
References $mParserOutput.
LinksUpdate::getPropertyDeletions | ( | $existing | ) |
Get array of properties which should be deleted.
array | $existing |
Definition at line 822 of file LinksUpdate.php.
Referenced by doIncrementalUpdate().
LinksUpdate::getPropertyInsertions | ( | $existing = [] | ) |
Get an array of page property insertions.
array | $existing |
Definition at line 649 of file LinksUpdate.php.
References $name, as, and getPagePropRowData().
Referenced by doIncrementalUpdate().
|
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.
mixed | $value |
Definition at line 706 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.
Definition at line 1088 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.
Definition at line 1118 of file LinksUpdate.php.
References $propertyDeletions.
LinksUpdate::getRevision | ( | ) |
Definition at line 1022 of file LinksUpdate.php.
References $mRevision.
|
private |
Given an array of existing templates, returns those templates which are not in $this and thus should be deleted.
array | $existing |
Definition at line 764 of file LinksUpdate.php.
References as.
Referenced by doIncrementalUpdate().
|
private |
Get an array of template insertions.
Like getLinkInsertions()
array | $existing |
Definition at line 524 of file LinksUpdate.php.
Referenced by doIncrementalUpdate().
LinksUpdate::getTitle | ( | ) |
Return the title object of the page being updated.
Definition at line 986 of file LinksUpdate.php.
References $mTitle.
Referenced by getAsJobSpecification().
LinksUpdate::getTriggeringUser | ( | ) |
|
private |
Update a table by doing a delete query then an insert query.
string | $table | Table name |
string | $prefix | Field name prefix |
array | $deletions | |
array | $insertions | Rows to insert |
Definition at line 419 of file LinksUpdate.php.
References $mId, $services, as, captcha-old\count, getDB(), and Hooks\run().
Referenced by doIncrementalUpdate().
|
private |
array | $cats |
Definition at line 370 of file LinksUpdate.php.
References getDB(), PurgeJobUtils\invalidatePages(), and NS_CATEGORY.
Referenced by doIncrementalUpdate().
|
private |
array | $images |
Definition at line 408 of file LinksUpdate.php.
References getDB(), PurgeJobUtils\invalidatePages(), and NS_FILE.
Referenced by doIncrementalUpdate().
|
private |
Invalidate any necessary link lists related to page property changes.
array | $changed |
Definition at line 1048 of file LinksUpdate.php.
References $name, $value, $wgPagePropLinkInvalidations, DeferredUpdates\addUpdate(), and as.
Referenced by doIncrementalUpdate().
|
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 312 of file LinksUpdate.php.
References $title, as, DataUpdate\getCauseAction(), DataUpdate\getCauseAgent(), RefreshLinksJob\newPrioritized(), NS_FILE, queueRecursiveJobsForTable(), and JobQueueGroup\singleton().
Referenced by doIncrementalUpdate().
|
static |
Queue a RefreshLinks job for any table.
Title | $title | Title to do job for |
string | $table | Table to use (e.g. 'templatelinks') |
string | $action | Triggering action |
string | $userName | Triggering user name |
Definition at line 349 of file LinksUpdate.php.
References $job, $title, Job\newRootJobParams(), and JobQueueGroup\singleton().
Referenced by WikiPage\doDeleteUpdates(), queueRecursiveJobs(), and LocalFile\recordUpload2().
LinksUpdate::setRevision | ( | Revision | $revision | ) |
Set the revision corresponding to this LinksUpdate.
Revision | $revision |
Definition at line 1014 of file LinksUpdate.php.
LinksUpdate::setTriggeringUser | ( | User | $user | ) |
Set the User who triggered this LinksUpdate.
User | $user |
Definition at line 1032 of file LinksUpdate.php.
Update all the appropriate counts in the category table.
array | $added | Associative array of category name => sort key |
array | $deleted | Associative array of category name => sort key |
Definition at line 379 of file LinksUpdate.php.
References $wgUpdateRowsPerQuery, as, WikiPage\factory(), and getDB().
Referenced by doIncrementalUpdate().
|
private |
Update links table freshness.
Definition at line 1125 of file LinksUpdate.php.
References getDB().
Referenced by doIncrementalUpdate().
|
private |
Definition at line 103 of file LinksUpdate.php.
Referenced by getDB().
|
private |
Deleted links if calculated.
Definition at line 85 of file LinksUpdate.php.
|
private |
Added links if calculated.
Definition at line 80 of file LinksUpdate.php.
array LinksUpdate::$mCategories |
Map of category names to sort keys.
Definition at line 60 of file LinksUpdate.php.
array LinksUpdate::$mExternals |
URLs of external links, array key only.
Definition at line 57 of file LinksUpdate.php.
int LinksUpdate::$mId |
Page ID of the article linked from.
Definition at line 39 of file LinksUpdate.php.
Referenced by getCategoryInsertions(), getExternalInsertions(), getImageInsertions(), getInterlangInsertions(), getInterwikiInsertions(), getLinkInsertions(), getPagePropRowData(), getTemplateInsertions(), and incrTableUpdate().
array LinksUpdate::$mImages |
DB keys of the images used, in the array key only.
Definition at line 51 of file LinksUpdate.php.
Referenced by getImages().
array LinksUpdate::$mInterlangs |
Map of language codes to titles.
Definition at line 63 of file LinksUpdate.php.
array LinksUpdate::$mInterwikis |
2-D map of (prefix => DBK => 1)
Definition at line 66 of file LinksUpdate.php.
array LinksUpdate::$mLinks |
Map of title strings to IDs for the links in the document.
Definition at line 48 of file LinksUpdate.php.
ParserOutput LinksUpdate::$mParserOutput |
Definition at line 45 of file LinksUpdate.php.
Referenced by getParserOutput().
array LinksUpdate::$mProperties |
Map of arbitrary name to value.
Definition at line 69 of file LinksUpdate.php.
bool LinksUpdate::$mRecursive |
Whether to queue jobs for recursive updates.
Definition at line 72 of file LinksUpdate.php.
Referenced by getAsJobSpecification().
|
private |
Revision for which this update has been triggered.
Definition at line 75 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 54 of file LinksUpdate.php.
Title LinksUpdate::$mTitle |
Title object of the article linked from.
Definition at line 42 of file LinksUpdate.php.
Referenced by getTitle().
|
private |
Deleted properties if calculated.
Definition at line 95 of file LinksUpdate.php.
Referenced by getRemovedProperties().
|
private |
Added properties if calculated.
Definition at line 90 of file LinksUpdate.php.
Referenced by doIncrementalUpdate(), and getAddedProperties().
|
private |
Definition at line 100 of file LinksUpdate.php.
Referenced by getTriggeringUser(), and setTriggeringUser().