MediaWiki master
DeleteLinksJob.php
Go to the documentation of this file.
1<?php
25
33class DeleteLinksJob extends Job {
34 public function __construct( Title $title, array $params ) {
35 parent::__construct( 'deleteLinks', $title, $params );
36 $this->removeDuplicates = true;
37 }
38
39 public function run() {
40 if ( $this->title === null ) {
41 $this->setLastError( "deleteLinks: Invalid title" );
42 return false;
43 }
44
45 $pageId = $this->params['pageId'];
46
47 // Serialize links updates by page ID so they see each others' changes
48 $dbw = MediaWikiServices::getInstance()->getConnectionProvider()->getPrimaryDatabase();
49 $scopedLock = LinksUpdate::acquirePageLock( $dbw, $pageId, 'job' );
50 if ( $scopedLock === null ) {
51 $this->setLastError( 'LinksUpdate already running for this page, try again later.' );
52 return false;
53 }
54
55 $services = MediaWikiServices::getInstance();
56 $wikiPageFactory = $services->getWikiPageFactory();
57 if ( $wikiPageFactory->newFromID( $pageId, IDBAccessObject::READ_LATEST ) ) {
58 // The page was restored somehow or something went wrong
59 $this->setLastError( "deleteLinks: Page #$pageId exists" );
60 return false;
61 }
62
63 $dbProvider = $services->getConnectionProvider();
64 $timestamp = $this->params['timestamp'] ?? null;
65 $page = $wikiPageFactory->newFromTitle( $this->title ); // title when deleted
66
67 $update = new LinksDeletionUpdate( $page, $pageId, $timestamp );
68 $update->setTransactionTicket( $dbProvider->getEmptyTransactionTicket( __METHOD__ ) );
69 $update->doUpdate();
70
71 return true;
72 }
73}
array $params
The job parameters.
setLastError( $error)
This is actually implemented in the Job class.
Job to prune link tables for pages that were deleted.
__construct(Title $title, array $params)
run()
Run the job.
Describe and execute a background job.
Definition Job.php:40
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:78