X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2Fpage%2FWikiPage.php;h=c37566bdf6d8c05f52930c81da1508bf17dceec8;hp=8b349288feab0a90dbb76d41b6cbd0ca8618b86b;hb=3d95da4952619f9f773298c4461ccfc646fb18a9;hpb=52e76843e268180a6f7add00f1105c42bf6a4ee8 diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php index 8b349288fe..c37566bdf6 100644 --- a/includes/page/WikiPage.php +++ b/includes/page/WikiPage.php @@ -23,6 +23,7 @@ use MediaWiki\Edit\PreparedEdit; use \MediaWiki\Logger\LoggerFactory; use \MediaWiki\MediaWikiServices; +use Wikimedia\Assert\Assert; use Wikimedia\Rdbms\FakeResultWrapper; use Wikimedia\Rdbms\IDatabase; use Wikimedia\Rdbms\DBError; @@ -194,15 +195,15 @@ class WikiPage implements Page, IDBAccessObject { */ private static function convertSelectType( $type ) { switch ( $type ) { - case 'fromdb': - return self::READ_NORMAL; - case 'fromdbmaster': - return self::READ_LATEST; - case 'forupdate': - return self::READ_LOCKING; - default: - // It may already be an integer or whatever else - return $type; + case 'fromdb': + return self::READ_NORMAL; + case 'fromdbmaster': + return self::READ_LATEST; + case 'forupdate': + return self::READ_LOCKING; + default: + // It may already be an integer or whatever else + return $type; } } @@ -671,7 +672,7 @@ class WikiPage implements Page, IDBAccessObject { $revision = Revision::newFromPageId( $this->getId(), $latest, $flags ); } else { $dbr = wfGetDB( DB_REPLICA ); - $revision = Revision::newKnownCurrent( $dbr, $this->getId(), $latest ); + $revision = Revision::newKnownCurrent( $dbr, $this->getTitle(), $latest ); } if ( $revision ) { // sanity @@ -1264,8 +1265,11 @@ class WikiPage implements Page, IDBAccessObject { $conditions['page_latest'] = $lastRevision; } + $revId = $revision->getId(); + Assert::parameter( $revId > 0, '$revision->getId()', 'must be > 0' ); + $row = [ /* SET */ - 'page_latest' => $revision->getId(), + 'page_latest' => $revId, 'page_touched' => $dbw->timestamp( $revision->getTimestamp() ), 'page_is_new' => ( $lastRevision === 0 ) ? 1 : 0, 'page_is_redirect' => $rt !== null ? 1 : 0, @@ -1305,7 +1309,7 @@ class WikiPage implements Page, IDBAccessObject { * Add row to the redirect table if this is a redirect, remove otherwise. * * @param IDatabase $dbw - * @param Title $redirectTitle Title object pointing to the redirect target, + * @param Title|null $redirectTitle Title object pointing to the redirect target, * or NULL if this is not a redirect * @param null|bool $lastRevIsRedirect If given, will optimize adding and * removing rows in redirect table. @@ -1617,13 +1621,15 @@ class WikiPage implements Page, IDBAccessObject { $old_revision = $this->getRevision(); // current revision $old_content = $this->getContent( Revision::RAW ); // current revision's content - if ( $old_content && $old_content->getModel() !== $content->getModel() ) { - $tags[] = 'mw-contentmodelchange'; + $handler = $content->getContentHandler(); + $tag = $handler->getChangeTag( $old_content, $content, $flags ); + // If there is no applicable tag, null is returned, so we need to check + if ( $tag ) { + $tags[] = $tag; } - // Provide autosummaries if one is not provided and autosummaries are enabled + // Provide autosummaries if summary is not provided and autosummaries are enabled if ( $wgUseAutomaticEditSummaries && ( $flags & EDIT_AUTOSUMMARY ) && $summary == '' ) { - $handler = $content->getContentHandler(); $summary = $handler->getAutosummary( $old_content, $content, $flags ); } @@ -3211,6 +3217,10 @@ class WikiPage implements Page, IDBAccessObject { $targetContent = $target->getContent(); $changingContentModel = $targetContent->getModel() !== $current->getContentModel(); + if ( in_array( 'mw-rollback', ChangeTags::getSoftwareTags() ) ) { + $tags[] = 'mw-rollback'; + } + // Actually store the edit $status = $this->doEditContent( $targetContent, @@ -3287,7 +3297,8 @@ class WikiPage implements Page, IDBAccessObject { 'summary' => $summary, 'current' => $current, 'target' => $target, - 'newid' => $revId + 'newid' => $revId, + 'tags' => $tags ]; return [];