public function move( User $user, $reason, $createRedirect, array $changeTags = [] ) {
global $wgCategoryCollation;
- Hooks::run( 'TitleMove', [ $this->oldTitle, $this->newTitle, $user ] );
+ $status = Status::newGood();
+ Hooks::run( 'TitleMove', [ $this->oldTitle, $this->newTitle, $user, $reason, &$status ] );
+ if ( !$status->isOK() ) {
+ // Move was aborted by the hook
+ return $status;
+ }
// If it is a file, move it first.
// It is done before all other moving stuff is done because it's hard to revert.
# Save a null revision in the page's history notifying of the move
$nullRevision = Revision::newNullRevision( $dbw, $oldid, $comment, true, $user );
if ( !is_object( $nullRevision ) ) {
- throw new MWException( 'No valid null revision produced in ' . __METHOD__ );
+ throw new MWException( 'Failed to create null revision while moving page ID '
+ . $oldid . ' to ' . $nt->getPrefixedDBkey() );
}
$nullRevId = $nullRevision->insertOn( $dbw );
$logEntry->setAssociatedRevId( $nullRevId );
+ /**
+ * T163966
+ * Increment user_editcount during page moves
+ * Moved from SpecialMovepage.php per T195550
+ */
+ $user->incEditCount();
+
if ( !$redirectContent ) {
// Clean up the old title *before* reset article id - T47348
WikiPage::onArticleDelete( $this->oldTitle );