MediaWiki  master
DeleteLinksJob.php
Go to the documentation of this file.
1 <?php
25 
34 class DeleteLinksJob extends Job {
35  public function __construct( Title $title, array $params ) {
36  parent::__construct( 'deleteLinks', $title, $params );
37  $this->removeDuplicates = true;
38  }
39 
40  public function run() {
41  if ( $this->title === null ) {
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 }
DeleteLinksJob
Job to prune link tables for pages that were deleted.
Definition: DeleteLinksJob.php:34
LinksUpdate\acquirePageLock
static acquirePageLock(IDatabase $dbw, $pageId, $why='atomicity')
Acquire a session-level lock for performing link table updates for a page on a DB.
Definition: LinksUpdate.php:217
MediaWiki\MediaWikiServices
MediaWikiServices is the service locator for the application scope of MediaWiki.
Definition: MediaWikiServices.php:163
Job\$title
Title $title
Definition: Job.php:43
Job\$params
array $params
Array of job parameters.
Definition: Job.php:37
Job\setLastError
setLastError( $error)
Definition: Job.php:461
Job
Class to both describe a background job and handle jobs.
Definition: Job.php:32
WikiPage\factory
static factory(Title $title)
Create a WikiPage object of the appropriate class for the given title.
Definition: WikiPage.php:159
wfGetDB
wfGetDB( $db, $groups=[], $wiki=false)
Get a Database object.
Definition: GlobalFunctions.php:2459
DB_MASTER
const DB_MASTER
Definition: defines.php:26
WikiPage\newFromID
static newFromID( $id, $from='fromdb')
Constructor from a page id.
Definition: WikiPage.php:174
LinksDeletionUpdate
Update object handling the cleanup of links tables after a page was deleted.
Definition: LinksDeletionUpdate.php:28
DeleteLinksJob\__construct
__construct(Title $title, array $params)
Definition: DeleteLinksJob.php:35
Title
Represents a title within MediaWiki.
Definition: Title.php:41
DeleteLinksJob\run
run()
Run the job.
Definition: DeleteLinksJob.php:40