$status->fatal( 'spamprotectiontext' );
}
- # The move is allowed only if (1) the target doesn't exist, or
- # (2) the target is a redirect to the source, and has no history
- # (so we can undo bad moves right after they're done).
-
- if ( $this->newTitle->getArticleID() ) { # Target exists; check for validity
- if ( !$this->isValidMoveTarget() ) {
- $status->fatal( 'articleexists' );
- }
- } else {
- $tp = $this->newTitle->getTitleProtection();
- if ( $tp !== false ) {
- if ( !$user->isAllowed( $tp['permission'] ) ) {
- $status->fatal( 'cantmove-titleprotected' );
- }
- }
+ $tp = $this->newTitle->getTitleProtection();
+ if ( $tp !== false && !$user->isAllowed( $tp['permission'] ) ) {
+ $status->fatal( 'cantmove-titleprotected' );
}
Hooks::run( 'MovePageCheckPermissions',
$status->fatal( 'badarticleerror' );
}
+ # The move is allowed only if (1) the target doesn't exist, or
+ # (2) the target is a redirect to the source, and has no history
+ # (so we can undo bad moves right after they're done).
+ if ( $this->newTitle->getArticleID() && !$this->isValidMoveTarget() ) {
+ $status->fatal( 'articleexists' );
+ }
+
// Content model checks
if ( !$wgContentHandlerUseDB &&
$this->oldTitle->getContentModel() !== $this->newTitle->getContentModel() ) {
protected function isValidFileMove() {
$status = new Status();
$file = wfLocalFile( $this->oldTitle );
+ $file->load( File::READ_LATEST );
if ( $file->exists() ) {
if ( $this->newTitle->getText() != wfStripIllegalFilenameChars( $this->newTitle->getText() ) ) {
$status->fatal( 'imageinvalidfilename' );
# Is it an existing file?
if ( $this->newTitle->inNamespace( NS_FILE ) ) {
$file = wfLocalFile( $this->newTitle );
+ $file->load( File::READ_LATEST );
if ( $file->exists() ) {
wfDebug( __METHOD__ . ": file exists\n" );
return false;
$dbw = wfGetDB( DB_MASTER );
if ( $this->oldTitle->getNamespace() == NS_FILE ) {
$file = wfLocalFile( $this->oldTitle );
+ $file->load( File::READ_LATEST );
if ( $file->exists() ) {
$status = $file->move( $this->newTitle );
if ( !$status->isOk() ) {
$redirectContent = null;
}
+ // Figure out whether the content model is no longer the default
+ $oldDefault = ContentHandler::getDefaultModelFor( $this->oldTitle );
+ $contentModel = $this->oldTitle->getContentModel();
+ $newDefault = ContentHandler::getDefaultModelFor( $nt );
+ $defaultContentModelChanging = ( $oldDefault !== $newDefault
+ && $oldDefault === $contentModel );
+
// bug 57084: log_page should be the ID of the *moved* page
$oldid = $this->oldTitle->getArticleID();
$logTitle = clone $this->oldTitle;
$newpage->doEditUpdates( $nullRevision, $user,
array( 'changed' => false, 'moved' => true, 'oldcountable' => $oldcountable ) );
+ // If the default content model changes, we need to populate rev_content_model
+ if ( $defaultContentModelChanging ) {
+ $dbw->update(
+ 'revision',
+ array( 'rev_content_model' => $contentModel ),
+ array( 'rev_page' => $nt->getArticleID(), 'rev_content_model IS NULL' ),
+ __METHOD__
+ );
+ }
+
if ( !$moveOverRedirect ) {
WikiPage::onArticleCreate( $nt );
}