MediaWiki REL1_34
DeleteLinksJob.php
Go to the documentation of this file.
1<?php
25
34class DeleteLinksJob extends Job {
35 function __construct( Title $title, array $params ) {
36 parent::__construct( 'deleteLinks', $title, $params );
37 $this->removeDuplicates = true;
38 }
39
40 function run() {
41 if ( is_null( $this->title ) ) {
42 $this->setLastError( "deleteLinks: Invalid title" );
43 return false;
44 }
45
46 $pageId = $this->params['pageId'];
47
48 // Serialize links updates by page ID so they see each others' changes
49 $scopedLock = LinksUpdate::acquirePageLock( wfGetDB( DB_MASTER ), $pageId, 'job' );
50 if ( $scopedLock === null ) {
51 $this->setLastError( 'LinksUpdate already running for this page, try again later.' );
52 return false;
53 }
54
55 if ( WikiPage::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 = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
62 $timestamp = $this->params['timestamp'] ?? null;
63 $page = WikiPage::factory( $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:30
Title $title
Definition Job.php:41
setLastError( $error)
Definition Job.php:418
array $params
Array of job parameters.
Definition Job.php:35
Update object handling the cleanup of links tables after a page was deleted.
MediaWikiServices is the service locator for the application scope of MediaWiki.
Represents a title within MediaWiki.
Definition Title.php:42
const DB_MASTER
Definition defines.php:26