X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FMovePage.php;h=fb0ca8c89a093f96d47263348e3f62c11a000abc;hb=5fe5201f5e3e3dcc1d932c66d732009599c0a030;hp=0f9374a7e3b5b186e647857402693fb399b9e244;hpb=2cb813ff13f1b005fbb106b40fb9262430a528e1;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/MovePage.php b/includes/MovePage.php index 0f9374a7e3..fb0ca8c89a 100644 --- a/includes/MovePage.php +++ b/includes/MovePage.php @@ -252,7 +252,7 @@ class MovePage { $protected = $this->oldTitle->isProtected(); // Do the actual move - $this->moveToInternal( $user, $this->newTitle, $reason, $createRedirect ); + $nullRevision = $this->moveToInternal( $user, $this->newTitle, $reason, $createRedirect ); // Refresh the sortkey for this row. Be careful to avoid resetting // cl_timestamp, which may disturb time-based lists on some sites. @@ -369,10 +369,26 @@ class MovePage { WatchedItem::duplicateEntries( $this->oldTitle, $this->newTitle ); } + Hooks::run( + 'TitleMoveCompleting', + array( $this->oldTitle, $this->newTitle, + $user, $pageid, $redirid, $reason, $nullRevision ) + ); + $dbw->endAtomic( __METHOD__ ); - $params = array( $this->oldTitle, $this->newTitle, $user, $pageid, $redirid, $reason ); - $dbw->onTransactionIdle( function () use ( $params ) { + $params = array( + &$this->oldTitle, + &$this->newTitle, + &$user, + $pageid, + $redirid, + $reason, + $nullRevision + ); + $dbw->onTransactionIdle( function () use ( $params, $dbw ) { + // Keep each single hook handler atomic + $dbw->setFlag( DBO_TRX ); // flag is automatically reset by DB layer Hooks::run( 'TitleMoveComplete', $params ); } ); @@ -389,6 +405,7 @@ class MovePage { * @param string $reason The reason for the move * @param bool $createRedirect Whether to leave a redirect at the old title. Does not check * if the user has the suppressredirect right + * @return Revision the revision created by the move * @throws MWException */ private function moveToInternal( User $user, &$nt, $reason = '', $createRedirect = true ) { @@ -545,5 +562,7 @@ class MovePage { # Log the move $logid = $logEntry->insert(); $logEntry->publish( $logid ); + + return $nullRevision; } }