]> scripts.mit.edu Git - autoinstalls/mediawiki.git/blob - maintenance/tidyUpBug37714.php
MediaWiki 1.30.2-scripts2
[autoinstalls/mediawiki.git] / maintenance / tidyUpBug37714.php
1 <?php
2 require_once __DIR__ . '/Maintenance.php';
3
4 /**
5  * Fixes all rows affected by https://bugzilla.wikimedia.org/show_bug.cgi?id=37714
6  */
7 class TidyUpBug37714 extends Maintenance {
8         public function execute() {
9                 // Search for all log entries which are about changing the visability of other log entries.
10                 $result = $this->getDB( DB_REPLICA )->select(
11                         'logging',
12                         [ 'log_id', 'log_params' ],
13                         [
14                                 'log_type' => [ 'suppress', 'delete' ],
15                                 'log_action' => 'event',
16                                 'log_namespace' => NS_SPECIAL,
17                                 'log_title' => SpecialPage::getTitleFor( 'Log' )->getText()
18                         ],
19                         __METHOD__
20                 );
21
22                 foreach ( $result as $row ) {
23                         $ids = explode( ',', explode( "\n", $row->log_params )[0] );
24                         $result = $this->getDB( DB_REPLICA )->select( // Work out what log entries were changed here.
25                                 'logging',
26                                 'log_type',
27                                 [ 'log_id' => $ids ],
28                                 __METHOD__,
29                                 'DISTINCT'
30                         );
31                         if ( $result->numRows() === 1 ) {
32                                 // If there's only one type, the target title can be set to include it.
33                                 $logTitle = SpecialPage::getTitleFor( 'Log', $result->current()->log_type )->getText();
34                                 $this->output( 'Set log_title to "' . $logTitle . '" for log entry ' . $row->log_id . ".\n" );
35                                 $this->getDB( DB_MASTER )->update(
36                                         'logging',
37                                         [ 'log_title' => $logTitle ],
38                                         [ 'log_id' => $row->log_id ],
39                                         __METHOD__
40                                 );
41                                 wfWaitForSlaves();
42                         }
43                 }
44         }
45 }
46
47 $maintClass = 'TidyUpBug37714';
48 require_once RUN_MAINTENANCE_IF_MAIN;