MediaWiki
1.30.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 () | |
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... | |
invalidateCategories ( $cats) | |
invalidateImageDescriptions ( $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 | |
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 34 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 110 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) |
RuntimeException |
Definition at line 201 of file LinksUpdate.php.
References Wikimedia\Rdbms\IDatabase\getScopedLockAndFlush().
Referenced by LinksDeletionUpdate\doUpdate(), doUpdate(), DeleteLinksJob\run(), and RefreshLinksJob\runForTitle().
|
protected |
Definition at line 211 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 166 of file LinksUpdate.php.
References $linksUpdate, acquirePageLock(), doIncrementalUpdate(), getDB(), and Hooks\run().
LinksUpdate::getAddedLinks | ( | ) |
Fetch page links added by this LinksUpdate.
Only available after the update is complete.
Definition at line 1056 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 1093 of file LinksUpdate.php.
References $propertyInsertions.
LinksUpdate::getAsJobSpecification | ( | ) |
Implements EnqueueableDataUpdate.
Definition at line 1133 of file LinksUpdate.php.
References $mRecursive, 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 790 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 573 of file LinksUpdate.php.
References $mId, $name, $type, $wgCategoryCollation, $wgContLang, as, getDB(), global, Title\makeTitleSafe(), NS_CATEGORY, NS_FILE, and Collation\singleton().
Referenced by doIncrementalUpdate().
|
private |
Definition at line 1125 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 907 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 891 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 875 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 924 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 939 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 837 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 958 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 856 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 780 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 549 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 770 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 530 of file LinksUpdate.php.
Referenced by doIncrementalUpdate().
LinksUpdate::getImages | ( | ) |
Return the list of images used as generated by the parser.
Definition at line 990 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 800 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 617 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 819 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 707 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 732 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 483 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 663 of file LinksUpdate.php.
References $mId, $value, $wgPagePropsHaveSortkey, getPropertySortKeyValue(), and global.
Referenced by getPropertyInsertions().
LinksUpdate::getParserOutput | ( | ) |
Returns parser output.
Definition at line 982 of file LinksUpdate.php.
References $mParserOutput.
LinksUpdate::getPropertyDeletions | ( | $existing | ) |
Get array of properties which should be deleted.
array | $existing |
Definition at line 809 of file LinksUpdate.php.
Referenced by doIncrementalUpdate().
LinksUpdate::getPropertyInsertions | ( | $existing = [] | ) |
Get an array of page property insertions.
array | $existing |
Definition at line 636 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 693 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 1073 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 1103 of file LinksUpdate.php.
References $propertyDeletions.
LinksUpdate::getRevision | ( | ) |
Definition at line 1009 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 751 of file LinksUpdate.php.
References as.
Referenced by doIncrementalUpdate().
|
private |
Get an array of template insertions.
Like getLinkInsertions()
array | $existing |
Definition at line 507 of file LinksUpdate.php.
Referenced by doIncrementalUpdate().
LinksUpdate::getTitle | ( | ) |
Return the title object of the page being updated.
Definition at line 973 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 402 of file LinksUpdate.php.
References $mId, $services, as, captcha-old\count, getDB(), and Hooks\run().
Referenced by doIncrementalUpdate().
|
private |
array | $cats |
Definition at line 353 of file LinksUpdate.php.
References getDB(), PurgeJobUtils\invalidatePages(), and NS_CATEGORY.
Referenced by doIncrementalUpdate().
|
private |
array | $images |
Definition at line 391 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 1035 of file LinksUpdate.php.
References $name, $value, $wgPagePropLinkInvalidations, DeferredUpdates\addUpdate(), as, and global.
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 308 of file LinksUpdate.php.
References $title, as, RefreshLinksJob\newPrioritized(), NS_FILE, queueRecursiveJobsForTable(), and JobQueueGroup\singleton().
Referenced by doIncrementalUpdate().
|
static |
Queue a RefreshLinks job for any table.
Definition at line 334 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 1001 of file LinksUpdate.php.
LinksUpdate::setTriggeringUser | ( | User | $user | ) |
Set the User who triggered this LinksUpdate.
User | $user |
Definition at line 1019 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 362 of file LinksUpdate.php.
References $wgUpdateRowsPerQuery, as, WikiPage\factory(), getDB(), and global.
Referenced by doIncrementalUpdate().
|
private |
Update links table freshness.
Definition at line 1110 of file LinksUpdate.php.
References getDB().
Referenced by doIncrementalUpdate().
|
private |
Definition at line 102 of file LinksUpdate.php.
Referenced by getDB().
|
private |
Deleted links if calculated.
Definition at line 84 of file LinksUpdate.php.
|
private |
Added links if calculated.
Definition at line 79 of file LinksUpdate.php.
array LinksUpdate::$mCategories |
Map of category names to sort keys.
Definition at line 59 of file LinksUpdate.php.
array LinksUpdate::$mExternals |
URLs of external links, array key only.
Definition at line 56 of file LinksUpdate.php.
int LinksUpdate::$mId |
Page ID of the article linked from.
Definition at line 38 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 50 of file LinksUpdate.php.
Referenced by getImages().
array LinksUpdate::$mInterlangs |
Map of language codes to titles.
Definition at line 62 of file LinksUpdate.php.
array LinksUpdate::$mInterwikis |
2-D map of (prefix => DBK => 1)
Definition at line 65 of file LinksUpdate.php.
array LinksUpdate::$mLinks |
Map of title strings to IDs for the links in the document.
Definition at line 47 of file LinksUpdate.php.
ParserOutput LinksUpdate::$mParserOutput |
Definition at line 44 of file LinksUpdate.php.
Referenced by getParserOutput().
array LinksUpdate::$mProperties |
Map of arbitrary name to value.
Definition at line 68 of file LinksUpdate.php.
bool LinksUpdate::$mRecursive |
Whether to queue jobs for recursive updates.
Definition at line 71 of file LinksUpdate.php.
Referenced by getAsJobSpecification().
|
private |
Revision for which this update has been triggered.
Definition at line 74 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 53 of file LinksUpdate.php.
Title LinksUpdate::$mTitle |
Title object of the article linked from.
Definition at line 41 of file LinksUpdate.php.
Referenced by getTitle().
|
private |
Deleted properties if calculated.
Definition at line 94 of file LinksUpdate.php.
Referenced by getRemovedProperties().
|
private |
Added properties if calculated.
Definition at line 89 of file LinksUpdate.php.
Referenced by doIncrementalUpdate(), and getAddedProperties().
|
private |
Definition at line 99 of file LinksUpdate.php.
Referenced by getTriggeringUser(), and setTriggeringUser().