User:Tks4Fish/nukeAll.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
//Tool for nuking all edits of a certain user
//by [[User:Martin Urbanec]] and [[User:Tks4Fish]]
function manualNuke() {
var username = mw.config.get("wgRelevantUserName");
new mw.Api().get({
"action": "query",
"format": "json",
"list": "allrevisions",
"arvprop": "ids|timestamp|flags|comment|user",
"arvlimit": "max",
"arvuser": username
}).then(function(data) {
mw.notify('Deleting all pages created by ' + username + '. To abort, close this tab.');
reason = prompt('Deletion reason');
manualNukeProcess(data, reason);
});
}
var countDeleted = 0;
function manualNukeProcessInternal(queue, reason) {
if ( queue.length === 0 ) {
return $.Deferred().resolve();
}
let id = queue.shift();
return new mw.Api().postWithEditToken({
action: "delete",
pageid: id,
reason: reason,
}).then(function(data){
if (data.error !== undefined)
{
console.log(data);
}
else
{
countDeleted = countDeleted + 1;
console.log(countDeleted);
}
return manualNukeProcessInternal(queue, reason);
});
}
function manualNukeProcess(data, reason) {
let ids = [];
for(var i = 0; i < data.query.allrevisions.length; i++) {
if(data.query.allrevisions[i].revisions[0].parentid !== 0) {
continue;
}
ids.push(data.query.allrevisions[i].pageid);
}
manualNukeProcessInternal(ids, reason).then(() => {
console.log (countDeleted);
mw.notify(countDeleted + ' pages were successfully deleted.');
});
}
$(document).ready(function()
{
if( mw.config.get("wgCanonicalSpecialPageName") == "Contributions" )
{
mw.loader.getScript("//meta.wikimedia.org/w/index.php?title=User:Tks4Fish/gsCheck.js&action=raw&ctype=text/javascript").then( function() {
verifyWiki(mw.config.get("wgDBname")).then(function(data) {
if (data === true) {
verifyUser(mw.config.get("wgUserName")).then(function(data) {
if (data === true) {
mw.loader.using("mediawiki.util").done( function ()
{
mw.util.addPortletLink('p-cactions','#',"nuke all","ca-nukeeverything","nuke all created pages displayed here");
$("#ca-nukeeverything").click( function(event)
{
if (confirm("Are you sure you want to delete all of this user's contributions?"))
{
event.preventDefault();
return manualNuke();
}
else return;
});
});
}
});
}
else if (/sysop/.test(mw.config.get("wgUserGroups"))) {
mw.loader.using("mediawiki.util").done( function ()
{
mw.util.addPortletLink('p-cactions','#',"nuke all","ca-nukeeverything","nuke all created pages displayed here");
$("#ca-nukeeverything").click( function(event)
{
if (confirm("Are you sure you want to delete all of this user's contributions?"))
{
event.preventDefault();
return manualNuke();
}
else return;
});
});
}
});
});
}
});