MediaWiki  REL1_21
deleteDefaultMessages.php
Go to the documentation of this file.
00001 <?php
00025 require_once( __DIR__ . '/Maintenance.php' );
00026 
00033 class DeleteDefaultMessages extends Maintenance {
00034         public function __construct() {
00035                 parent::__construct();
00036                 $this->mDescription = "Deletes all pages in the MediaWiki namespace" .
00037                                                                 " which were last edited by \"MediaWiki default\"";
00038         }
00039 
00040         public function execute() {
00041                 global $wgUser;
00042 
00043                 $this->output( "Checking existence of old default messages..." );
00044                 $dbr = wfGetDB( DB_SLAVE );
00045                 $res = $dbr->select( array( 'page', 'revision' ),
00046                         array( 'page_namespace', 'page_title' ),
00047                         array(
00048                                 'page_namespace' => NS_MEDIAWIKI,
00049                                 'page_latest=rev_id',
00050                                 'rev_user_text' => 'MediaWiki default',
00051                         )
00052                 );
00053 
00054                 if( $dbr->numRows( $res ) == 0 ) {
00055                         # No more messages left
00056                         $this->output( "done.\n" );
00057                         return;
00058                 }
00059 
00060                 # Deletions will be made by $user temporarly added to the bot group
00061                 # in order to hide it in RecentChanges.
00062                 $user = User::newFromName( 'MediaWiki default' );
00063                 if ( !$user ) {
00064                         $this->error( "Invalid username", true );
00065                 }
00066                 $user->addGroup( 'bot' );
00067                 $wgUser = $user;
00068 
00069                 # Handle deletion
00070                 $this->output( "\n...deleting old default messages (this may take a long time!)...", 'msg' );
00071                 $dbw = wfGetDB( DB_MASTER );
00072 
00073                 foreach ( $res as $row ) {
00074                         wfWaitForSlaves();
00075                         $dbw->ping();
00076                         $title = Title::makeTitle( $row->page_namespace, $row->page_title );
00077                         $page = WikiPage::factory( $title );
00078                         $dbw->begin( __METHOD__ );
00079                         $error = ''; // Passed by ref
00080                         $page->doDeleteArticle( 'No longer required', false, 0, false, $error, $user );
00081                         $dbw->commit( __METHOD__ );
00082                 }
00083 
00084                 $this->output( "done!\n", 'msg' );
00085         }
00086 }
00087 
00088 $maintClass = "DeleteDefaultMessages";
00089 require_once( RUN_MAINTENANCE_IF_MAIN );