Pass created revision to TitleMoveComplete hook
The EventBus extension needs to forward the created (null) revision ID as part of the page move event. Looking this value up when the hook fires is problematic, because without a connection to the master DB the query might very well return nothing (if it races in before the entry is replicated to the slave). This changeset passes the newly created Revision on to the hook so that it doesn't need to be queried separately. Bug: T116786 Change-Id: I1b48e2904fc8d99f2cde604f274f79a2b47d7fc2
This commit is contained in:
parent
9d674be62c
commit
9cc2f62bf5
2 changed files with 14 additions and 2 deletions
|
|
@ -3040,6 +3040,7 @@ $user: user who does the move
|
|||
$pageid: database ID of the page that's been moved
|
||||
$redirid: database ID of the created redirect
|
||||
$reason: reason for the move
|
||||
$revision: the revision created by the move
|
||||
|
||||
'TitleMoveCompleting': After moving an article (title), pre-commit.
|
||||
$old: old title
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
@ -376,7 +376,15 @@ class MovePage {
|
|||
|
||||
$dbw->endAtomic( __METHOD__ );
|
||||
|
||||
$params = array( &$this->oldTitle, &$this->newTitle, &$user, $pageid, $redirid, $reason );
|
||||
$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
|
||||
|
|
@ -396,6 +404,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 ) {
|
||||
|
|
@ -552,5 +561,7 @@ class MovePage {
|
|||
# Log the move
|
||||
$logid = $logEntry->insert();
|
||||
$logEntry->publish( $logid );
|
||||
|
||||
return $nullRevision;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue