Demon has submitted this change and it was merged.
Change subject: Various edit conflict handling fixes
......................................................................
Various edit conflict handling fixes
bug: 33481
Change-Id: Ic068e82ecc9f94b423cf3966531a885249e1fefc
---
M backend/FlaggedRevs.hooks.php
M frontend/FlaggablePageView.php
2 files changed, 19 insertions(+), 6 deletions(-)
Approvals:
Demon: Verified; Looks good to me, approved
diff --git a/backend/FlaggedRevs.hooks.php b/backend/FlaggedRevs.hooks.php
index b22e50c..cbd319d 100644
--- a/backend/FlaggedRevs.hooks.php
+++ b/backend/FlaggedRevs.hooks.php
@@ -415,14 +415,21 @@
# (a) this new revision creates a new page and new page
autoreview is enabled
# (b) this new revision is based on an old, reviewed, revision
if ( $title->getUserPermissionsErrors( 'autoreview', $user )
=== array() ) {
- // For rollback/null edits, use the previous ID as the
alternate base ID.
- // Otherwise, use the 'altBaseRevId' parameter passed
in by the request.
+ # For rollback/null edits, use the previous ID as the
alternate base ID.
+ # Otherwise, use the 'altBaseRevId' parameter passed in
by the request.
$altBaseRevId = $isOldRevCopy ? $prevRevId :
$wgRequest->getInt( 'altBaseRevId' );
if ( !$prevRevId ) { // New pages
$reviewableNewPage =
FlaggedRevs::autoReviewNewPages();
$reviewableChange = false;
} else { // Edits to existing pages
$reviewableNewPage = false; // had previous rev
+ # If a edit was automatically merged, do not
trust 'baseRevId' (bug 33481)
+ if ( $editTimestamp
+ && $editTimestamp !==
Revision::getTimestampFromId( $title, $prevRevId ) )
+ {
+ $baseRevId = $prevRevId;
+ $altBaseRevId = 0;
+ }
# Check if the base revision was reviewed...
if ( FlaggedRevs::autoReviewEdits() ) {
$frev = FlaggedRevision::newFromTitle(
$title, $baseRevId, FR_MASTER );
@@ -432,7 +439,7 @@
}
$reviewableChange = (bool)$frev;
}
- // Is this an edit directly to a reviewed version or a
new page?
+ # Is this an edit directly to a reviewed version or a
new page?
if ( $reviewableNewPage || $reviewableChange ) {
if ( $isOldRevCopy && $frev ) {
$flags = $frev->getTags(); // null
edits & rollbacks keep previous tags
@@ -453,11 +460,11 @@
$baseRevId == $srev->getRevId() && // restored
stable rev
$title->getUserPermissionsErrors(
'autoreviewrestore', $user ) === array()
);
- # Check for self-reversions...
+ # Check for self-reversions (checks text hashes)...
if ( !$reviewableChange ) {
$reviewableChange = self::isSelfRevertToStable(
$rev, $srev, $baseRevId, $user );
}
- // Is this a rollback or self-reversion to the stable
rev?
+ # Is this a rollback or self-reversion to the stable
rev?
if ( $reviewableChange ) {
$flags = $srev->getTags(); // use old tags
# Review this revision of the page...
@@ -530,7 +537,7 @@
return false; // only looking for self-reverts
}
# Confirm the text because we can't trust this user.
- return ( $rev->getText() == $srev->getRevText() );
+ return ( $rev->getSha1() === $srev->getSha1() );
}
/**
diff --git a/frontend/FlaggablePageView.php b/frontend/FlaggablePageView.php
index f7ee5b6..bc399a4 100644
--- a/frontend/FlaggablePageView.php
+++ b/frontend/FlaggablePageView.php
@@ -1874,6 +1874,9 @@
* @return int
*/
protected static function getBaseRevId( EditPage $editPage, WebRequest
$request ) {
+ if ( $editPage->isConflict ) {
+ return 0; // throw away these values (bug 33481)
+ }
if ( !isset( $editPage->fr_baseRevId ) ) {
$article = $editPage->getArticle(); // convenience
$latestId = $article->getLatest(); // current rev
@@ -1904,6 +1907,9 @@
* @return int
*/
protected static function getAltBaseRevId( EditPage $editPage,
WebRequest $request ) {
+ if ( $editPage->isConflict ) {
+ return 0; // throw away these values (bug 33481)
+ }
if ( !isset( $editPage->fr_altBaseRevId ) ) {
$article = $editPage->getArticle(); // convenience
$latestId = $article->getLatest(); // current rev
--
To view, visit https://gerrit.wikimedia.org/r/72265
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ic068e82ecc9f94b423cf3966531a885249e1fefc
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/FlaggedRevs
Gerrit-Branch: master
Gerrit-Owner: Aaron Schulz <[email protected]>
Gerrit-Reviewer: Demon <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits