MediaWiki  master
DeleteLinksJob.php
Go to the documentation of this file.
1 <?php
24 
32 class DeleteLinksJob extends Job {
33  public function __construct( Title $title, array $params ) {
34  parent::__construct( 'deleteLinks', $title, $params );
35  $this->removeDuplicates = true;
36  }
37 
38  public function run() {
39  if ( $this->title === null ) {
40  $this->setLastError( "deleteLinks: Invalid title" );
41  return false;
42  }
43 
44  $pageId = $this->params['pageId'];
45 
46  // Serialize links updates by page ID so they see each others' changes
47  $scopedLock = LinksUpdate::acquirePageLock( wfGetDB( DB_PRIMARY ), $pageId, 'job' );
48  if ( $scopedLock === null ) {
49  $this->setLastError( 'LinksUpdate already running for this page, try again later.' );
50  return false;
51  }
52 
53  $services = MediaWikiServices::getInstance();
54  $wikiPageFactory = $services->getWikiPageFactory();
55  if ( $wikiPageFactory->newFromID( $pageId, WikiPage::READ_LATEST ) ) {
56  // The page was restored somehow or something went wrong
57  $this->setLastError( "deleteLinks: Page #$pageId exists" );
58  return false;
59  }
60 
61  $factory = $services->getDBLoadBalancerFactory();
62  $timestamp = $this->params['timestamp'] ?? null;
63  $page = $wikiPageFactory->newFromTitle( $this->title ); // title when deleted
64 
65  $update = new LinksDeletionUpdate( $page, $pageId, $timestamp );
66  $update->setTransactionTicket( $factory->getEmptyTransactionTicket( __METHOD__ ) );
67  $update->doUpdate();
68 
69  return true;
70  }
71 }
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
Title $title
Definition: Job.php:50
setLastError( $error)
Definition: Job.php:469
array $params
Array of job parameters.
Definition: Job.php:44
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.
Definition: LinksUpdate.php:55
Service locator for MediaWiki core services.
Represents a title within MediaWiki.
Definition: Title.php:52
const DB_PRIMARY
Definition: defines.php:28