MediaWiki REL1_39
DeleteLinksJob.php
Go to the documentation of this file.
1<?php
27
36class DeleteLinksJob extends Job {
37 public function __construct( Title $title, array $params ) {
38 parent::__construct( 'deleteLinks', $title, $params );
39 $this->removeDuplicates = true;
40 }
41
42 public function run() {
43 if ( $this->title === null ) {
44 $this->setLastError( "deleteLinks: Invalid title" );
45 return false;
46 }
47
48 $pageId = $this->params['pageId'];
49
50 // Serialize links updates by page ID so they see each others' changes
51 $scopedLock = LinksUpdate::acquirePageLock( wfGetDB( DB_PRIMARY ), $pageId, 'job' );
52 if ( $scopedLock === null ) {
53 $this->setLastError( 'LinksUpdate already running for this page, try again later.' );
54 return false;
55 }
56
57 $services = MediaWikiServices::getInstance();
58 $wikiPageFactory = $services->getWikiPageFactory();
59 if ( $wikiPageFactory->newFromID( $pageId, WikiPage::READ_LATEST ) ) {
60 // The page was restored somehow or something went wrong
61 $this->setLastError( "deleteLinks: Page #$pageId exists" );
62 return false;
63 }
64
65 $factory = $services->getDBLoadBalancerFactory();
66 $timestamp = $this->params['timestamp'] ?? null;
67 $page = $wikiPageFactory->newFromTitle( $this->title ); // title when deleted
68
69 $update = new LinksDeletionUpdate( $page, $pageId, $timestamp );
70 $update->setTransactionTicket( $factory->getEmptyTransactionTicket( __METHOD__ ) );
71 $update->doUpdate();
72
73 return true;
74 }
75}
wfGetDB( $db, $groups=[], $wiki=false)
Get a Database object.
Job to prune link tables for pages that were deleted.
__construct(Title $title, array $params)
run()
Run the job.
Class to both describe a background job and handle jobs.
Definition Job.php:39
setLastError( $error)
Definition Job.php:469
Update object handling the cleanup of links tables after a page was deleted.
Class the manages updates of *_link tables as well as similar extension-managed tables.
Service locator for MediaWiki core services.
Represents a title within MediaWiki.
Definition Title.php:49
const DB_PRIMARY
Definition defines.php:28