Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F585106
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/includes/Storage/DerivedPageDataUpdater.php b/includes/Storage/DerivedPageDataUpdater.php
index a2d3f980c50..9d1e84219c4 100644
--- a/includes/Storage/DerivedPageDataUpdater.php
+++ b/includes/Storage/DerivedPageDataUpdater.php
@@ -40,6 +40,7 @@ use MediaWiki\HookContainer\HookRunner;
use MediaWiki\JobQueue\JobQueueGroup;
use MediaWiki\JobQueue\Jobs\ParsoidCachePrewarmJob;
use MediaWiki\Language\Language;
+use MediaWiki\Logging\LogPage;
use MediaWiki\MainConfigNames;
use MediaWiki\Page\Event\PageRevisionUpdatedEvent;
use MediaWiki\Page\PageIdentity;
@@ -1770,14 +1771,20 @@ class DerivedPageDataUpdater implements LoggerAwareInterface, PreparedUpdate {
* @param int $revisionId
*/
private function maybeAddRecreateChangeTag( WikiPage $wikiPage, int $revisionId ) {
- if ( $this->loadbalancerFactory->getReplicaDatabase()->newSelectQueryBuilder()
+ $dbr = $this->loadbalancerFactory->getReplicaDatabase();
+
+ if ( $dbr->newSelectQueryBuilder()
->select( [ '1' ] )
->from( 'logging' )
->where( [
'log_type' => 'delete',
'log_title' => $wikiPage->getTitle()->getDBkey(),
'log_namespace' => $wikiPage->getNamespace(),
- ] )->caller( __METHOD__ )->limit( 1 )->fetchField() ) {
+ ] )
+ ->where(
+ $dbr->bitAnd( 'log_deleted', LogPage::DELETED_ACTION ) .
+ ' != ' . LogPage::DELETED_ACTION // T385792
+ )->caller( __METHOD__ )->limit( 1 )->fetchField() ) {
$this->changeTagsStore->addTags(
[ ChangeTags::TAG_RECREATE ],
null,
diff --git a/tests/phpunit/includes/Storage/DerivedPageDataUpdaterTest.php b/tests/phpunit/includes/Storage/DerivedPageDataUpdaterTest.php
index 658e33d89b1..a788425b0b1 100644
--- a/tests/phpunit/includes/Storage/DerivedPageDataUpdaterTest.php
+++ b/tests/phpunit/includes/Storage/DerivedPageDataUpdaterTest.php
@@ -1393,7 +1393,7 @@ class DerivedPageDataUpdaterTest extends MediaWikiIntegrationTestCase {
* @covers \MediaWiki\Storage\DerivedPageDataUpdater::doUpdates()
* @covers \MediaWiki\Storage\DerivedPageDataUpdater::maybeAddRecreateChangeTag
*/
- public function testDoUpdatesTagsEditAsRecreatedWhenDeletedLogEntry() {
+ public function testDoUpdatesTagsEditAsRecreatedWhenDeletionLogEntry() {
$page = $this->getPage( __METHOD__ );
$title = $this->getTitle( __METHOD__ );
@@ -1403,7 +1403,6 @@ class DerivedPageDataUpdaterTest extends MediaWikiIntegrationTestCase {
$deleteLogEntry = new ManualLogEntry( 'delete', 'delete' );
$deleteLogEntry->setPerformer( $this->getTestUser()->getUser() );
$deleteLogEntry->setTarget( $title );
- $deleteLogEntry->setDeleted( LogPage::DELETED_ACTION );
$logId = $deleteLogEntry->insert( $this->getDb() );
$deleteLogEntry->publish( $logId );
@@ -1429,7 +1428,6 @@ class DerivedPageDataUpdaterTest extends MediaWikiIntegrationTestCase {
$deleteLogEntry = new ManualLogEntry( 'delete', 'delete' );
$deleteLogEntry->setPerformer( $this->getTestUser()->getUser() );
$deleteLogEntry->setTarget( $title );
- $deleteLogEntry->setDeleted( LogPage::DELETED_ACTION );
$logId = $deleteLogEntry->insert( $this->getDb() );
$deleteLogEntry->publish( $logId );
@@ -1443,7 +1441,7 @@ class DerivedPageDataUpdaterTest extends MediaWikiIntegrationTestCase {
* @covers \MediaWiki\Storage\DerivedPageDataUpdater::doUpdates()
* @covers \MediaWiki\Storage\DerivedPageDataUpdater::maybeAddRecreateChangeTag
*/
- public function testDoUpdatesTagsEditAsRecreatedWhenDeletedLogEntryAndUndelete() {
+ public function testDoUpdatesDoesNotTagEditAsRecreatedWhenDeletionLogEntryAndUndelete() {
$page = $this->getPage( __METHOD__ );
$title = $this->getTitle( __METHOD__ );
$user = $this->getMutableTestUser()->getUser();
@@ -1462,7 +1460,6 @@ class DerivedPageDataUpdaterTest extends MediaWikiIntegrationTestCase {
$deleteLogEntry = new ManualLogEntry( 'delete', 'delete' );
$deleteLogEntry->setPerformer( $this->getTestUser()->getUser() );
$deleteLogEntry->setTarget( $title );
- $deleteLogEntry->setDeleted( LogPage::DELETED_ACTION );
$logId = $deleteLogEntry->insert( $this->getDb() );
$deleteLogEntry->publish( $logId );
// undelete the page
@@ -1478,7 +1475,7 @@ class DerivedPageDataUpdaterTest extends MediaWikiIntegrationTestCase {
* @covers \MediaWiki\Storage\DerivedPageDataUpdater::doUpdates()
* @covers \MediaWiki\Storage\DerivedPageDataUpdater::maybeAddRecreateChangeTag
*/
- public function testDoUpdatesDoesNotTagEditAsRecreatedWhenNoDeletedLogEntry() {
+ public function testDoUpdatesDoesNotTagEditAsRecreatedWhenNoDeletionLogEntry() {
$page = $this->getPage( __METHOD__ );
$content = [ SlotRecord::MAIN => new WikitextContent( 'rev ID ver #1: {{REVISIONID}}' ) ];
@@ -1488,6 +1485,35 @@ class DerivedPageDataUpdaterTest extends MediaWikiIntegrationTestCase {
$this->getDb(), null, $rev->getId() ) );
}
+ /**
+ * See T385792
+ *
+ * @covers \MediaWiki\Storage\DerivedPageDataUpdater::doUpdates()
+ * @covers \MediaWiki\Storage\DerivedPageDataUpdater::maybeAddRecreateChangeTag
+ */
+ public function testDoUpdatesDoesNotTagEditAsRecreatedWhenDeletionLogEntryActionHidden() {
+ $page = $this->getPage( __METHOD__ );
+ $title = $this->getTitle( __METHOD__ );
+
+ $content = [ SlotRecord::MAIN => new WikitextContent( 'rev ID ver #1: {{REVISIONID}}' ) ];
+
+ // create a deletion log entry
+ $deleteLogEntry = new ManualLogEntry( 'delete', 'delete' );
+ $deleteLogEntry->setPerformer( $this->getTestUser()->getUser() );
+ $deleteLogEntry->setTarget( $title );
+
+ // hide the target of the deletion log entry
+ $deleteLogEntry->setDeleted( LogPage::DELETED_ACTION );
+
+ $logId = $deleteLogEntry->insert( $this->getDb() );
+ $deleteLogEntry->publish( $logId );
+
+ $rev = $this->createRevision( $page, 'first', $content );
+
+ $this->assertSame( [], $this->getServiceContainer()->getChangeTagsStore()->getTags(
+ $this->getDb(), null, $rev->getId() ) );
+ }
+
public static function provideEnqueueRevertedTagUpdateJob() {
return [
'not patrolled' => [ true, 0, 0 ],
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sat, Jul 5, 5:32 AM (11 h, 58 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
227529
Default Alt Text
(5 KB)
Attached To
Mode
rMW mediawiki
Attached
Detach File
Event Timeline
Log In to Comment