Header
From Gamedatawiki
<style type="text/css">
/*
Notes:
-You must log as admin to edit this page
-Whatever you enter in this page will be added to the html in the header after the standard style sheet, so you can override styles.
-if you want your code to look nice on this page, put a space at the beginning of each line
-This is the default style sheet that you can override : http://editthis.info/wiki/skins/monobook/main.css
For example uncomment this next section to turn all the text green:
*/
/*
body {
color: green;
}
*/
</style>
<script type="text/javascript"> //$wgExtensionFunctions[] = "wfExtensionSpecialDeleteOldRevisions";
$wgExtensionCredits['specialpage'][] = array(
'name' => 'Special:DeleteOldRevisions',
'description' => 'adds a special page to delete all history from the wiki',
'url' => 'http://meta.wikimedia.org/wiki/SpecialDeleteOldRevisions',
'author' => 'Marc Noirot',
'version' => '1.0'
);
require_once "$IP/includes/HTMLForm.php"; require_once "$IP/includes/SpecialPage.php";
/**
* Support function for cleaning up redundant text records */
function PurgeRedundantText( $delete = false ) {
global $wgOut;
# Data should come off the master, wrapped in a transaction $dbw =& wfGetDB( DB_MASTER ); $dbw->begin();
$tbl_arc = $dbw->tableName( 'archive' ); $tbl_rev = $dbw->tableName( 'revision' ); $tbl_txt = $dbw->tableName( 'text' );
# Get "active" text records from the revisions table
$wgOut->addHTML("Searching for active text records in revisions table... ");
$res = $dbw->query( "SELECT DISTINCTROW rev_text_id FROM $tbl_rev" );
while( $row = $dbw->fetchObject( $res ) ) {
$cur[] = $row->rev_text_id;
}
$wgOut->addHTML( "done.\
" );
# Get "active" text records from the archive table
$wgOut->addHTML( "Searching for active text records in archive table... " );
$res = $dbw->query( "SELECT DISTINCTROW ar_text_id FROM $tbl_arc" );
while( $row = $dbw->fetchObject( $res ) ) {
$cur[] = $row->ar_text_id;
}
$wgOut->addHTML( "done.\
" );
# Get the IDs of all text records not in these sets
$wgOut->addHTML( "Searching for inactive text records... " );
$set = implode( ', ', $cur );
$res = $dbw->query( "SELECT old_id FROM $tbl_txt WHERE old_id NOT IN ( $set )" );
while( $row = $dbw->fetchObject( $res ) ) {
$old[] = $row->old_id;
}
$wgOut->addHTML( "done.\
" );
# Inform the user of what we're going to do $count = count( $old ); $wgOut->addHTML( "$count inactive items found.\
" );
# Delete as appropriate
if( $delete && $count ) {
$wgOut->addHTML( "Deleting... " );
$set = implode( ', ', $old );
$dbw->query( "DELETE FROM $tbl_txt WHERE old_id IN ( $set )" );
$wgOut->addHTML( "done.\
" );
}
# Done $dbw->commit();
}
/**
* Support function for deleting old revisions */
function DeleteOldRevisions( $delete = false ) {
global $wgOut;
# Data should come off the master, wrapped in a transaction $dbw =& wfGetDB( DB_MASTER ); $dbw->begin();
$tbl_pag = $dbw->tableName( 'page' ); $tbl_rev = $dbw->tableName( 'revision' );
# Get "active" revisions from the page table
$wgOut->addHTML( "Searching for active revisions... " );
$res = $dbw->query( "SELECT page_latest FROM $tbl_pag" );
while( $row = $dbw->fetchObject( $res ) ) {
$cur[] = $row->page_latest;
}
$wgOut->addHTML( "done.\
" );
# Get all revisions that aren't in this set
$wgOut->addHTML( "Searching for inactive revisions... " );
$set = implode( ', ', $cur );
$res = $dbw->query( "SELECT rev_id FROM $tbl_rev WHERE rev_id NOT IN ( $set )" );
while( $row = $dbw->fetchObject( $res ) ) {
$old[] = $row->rev_id;
}
$wgOut->addHTML( "done.\
" );
# Inform the user of what we're going to do $count = count( $old ); $wgOut->addHTML( "$count old revisions found.\
" );
# Delete as appropriate
if( $delete && $count ) {
$wgOut->addHTML( "Deleting... " );
$set = implode( ', ', $old );
$dbw->query( "DELETE FROM $tbl_rev WHERE rev_id IN ( $set )" );
$wgOut->addHTML( "done.\
" );
}
# This bit's done # Purge redundant text records $dbw->commit(); PurgeRedundantText( $delete );
}
/**
* The simple form used to delete the revisions. */
class DeleteOldRevisionsForm extends HTMLForm {
var $mPosted, $mRequest, $mSaveprefs, $action;
function DeleteOldRevisionsForm($request) {
$this->mPosted = $request->wasPosted();
$this->mRequest =& $request;
$this->mName = 'deleteoldrevisions';
$titleObj = Title::makeTitle( NS_SPECIAL, 'DeleteOldRevisions' );
$this->action = $titleObj->escapeLocalURL();
}
function execute() {
global $wgOut;
$wgOut->addHTML("<form name=\\"uluser\\" action=\\"$this->action\\" method=\\"post\\" " .
"onsubmit=\\"return confirm('" . wfMsg('deleteoldrevisions-confirm') . "')\\">\
");
$wgOut->addHTML('' . wfMsg('deleteoldrevisions-label') . '
' ); $wgOut->addHTML(wfElement( 'input', array(
'type' => 'submit',
'name' => 'delete',
'value' => wfMsg('deleteoldrevisions-button'))));
$wgOut->addHTML("</form>");
if( $this->mPosted ) {
global $wgOut;
$wgOut->addHTML('');
DeleteOldRevisions(true);
$wgOut->addHTML('</pre>');
$wgOut->addHTML('<p><strong>' . wfMsg('deleteoldrevisions-removalok') . '<strong></p>');
}
}
}
/**
* The special page itself.
*/
class DeleteOldRevisionsPage extends SpecialPage {
function DeleteOldRevisionsPage() {
SpecialPage::SpecialPage('DeleteOldRevisions', 'userrights');
}
function execute() {
global $wgUser, $wgOut;
if ( ! $wgUser->isSysop() ) {
$wgOut->sysopRequired();
return;
}
$this->setHeaders();
global $wgRequest;
$form = new DeleteOldRevisionsForm($wgRequest);
$form->execute();
}
}
/**
* The extension entry-point.
* Supported languages: french and english.
*/
function wfExtensionSpecialDeleteOldRevisions() {
global $wgMessageCache, $wgLanguageCode;
if ($wgLanguageCode == 'fr') {
$wgMessageCache->addMessage('deleteoldrevisions', 'Suppression des anciennes revisions');
$wgMessageCache->addMessage('deleteoldrevisions-label', 'Cliquez sur \'Effacer\' pour effacer toutes les anciennes revisions du wiki.');
$wgMessageCache->addMessage('deleteoldrevisions-button', 'Effacer');
$wgMessageCache->addMessage('deleteoldrevisions-confirm', "Etes-vous sûr de vouloir effacer toutes les anciennes révisions ?\\\
Cette opération ne peut etre annulée.");
$wgMessageCache->addMessage('deleteoldrevisions-removalok', "Les anciennes révisions ont été effacées avec succès.");
}
else {
$wgMessageCache->addMessage('deleteoldrevisions', 'Delete old revisions');
$wgMessageCache->addMessage('deleteoldrevisions-label', 'Click on \'Delete\' to delete all the wiki\'s old revisions.');
$wgMessageCache->addMessage('deleteoldrevisions-button', 'Delete');
$wgMessageCache->addMessage('deleteoldrevisions-confirm', "Are you sure you want to delete all the old revisions ?\\\
This operation cannot be undone.");
$wgMessageCache->addMessage('deleteoldrevisions-removalok', "The old revisions were successfully deleted.");
}
SpecialPage::addPage(new DeleteOldRevisionsPage());
}
?></nowiki>
</script>
