Use the specified page ID for LinksDeletionUpdate
authorAaron Schulz <aschulz@wikimedia.org>
Mon, 13 Jun 2016 09:20:49 +0000 (02:20 -0700)
committerAaron Schulz <aschulz@wikimedia.org>
Mon, 13 Jun 2016 09:20:49 +0000 (02:20 -0700)
This makes LinksDeleteJob use the correct page ID when a new
page was later created at the title. The links and protection
rows to clear should always be for the ID of the actual page
being deleted.

This fixes a bug when pages are moved over redirects.

Bug: T128624
Change-Id: Id67a021539b97020e8dd32d56dba1b77c806f31c

includes/deferred/LinksDeletionUpdate.php

index b8bd747..c227ecd 100644 (file)
@@ -37,10 +37,10 @@ class LinksDeletionUpdate extends SqlDataUpdate implements EnqueueableDataUpdate
                parent::__construct( false ); // no implicit transaction
 
                $this->page = $page;
-               if ( $page->exists() ) {
+               if ( $pageId ) {
+                       $this->pageId = $pageId; // page ID at time of deletion
+               } elseif ( $page->exists() ) {
                        $this->pageId = $page->getId();
-               } elseif ( $pageId ) {
-                       $this->pageId = $pageId;
                } else {
                        throw new InvalidArgumentException( "Page ID not known. Page doesn't exist?" );
                }