User:MastCell/user-rights.js

/* * User rights script * By MastCell * -- * Adds information on user rights (sysop, checkuser, etc) to the heading on user pages. * Heavily borrowed and lightly adapted from User:Splarka/sysopdectector.js */

/* * Namespace check: Add user rights info if this is a userpage or talkpage * If this is a user or usertalk subpage (e.g. "User:Example/subpage"), we'll leave out * the info. We'll also leave it out if we're editing or submitting an edit. */

if ((mw.config.get('wgNamespaceNumber') == 2 || mw.config.get('wgNamespaceNumber') == 3)	&& mw.config.get('wgTitle').indexOf('/') == -1	&& mw.config.get('wgAction') != 'edit'	&& mw.config.get('wgAction') != 'submit') { addOnloadHook(mcShowUserGroups); }

function mcShowUserGroups { var url = mw.config.get('wgServer') + mw.config.get('wgScriptPath'); url += '/api.php?action=query&format=json&list=users&usprop=groups|blockinfo|editcount|registration'; url += '&callback=mcDisplayUserRightsInfo&maxage=3600&smaxage=3600&ususers='; url += encodeURIComponent(mw.config.get('wgTitle')); importScriptURI(url); }

function mcDisplayUserRightsInfo(queryObj) { // Check to make sure the query returned a user; otherwise, return if (!queryObj['query'] || !queryObj['query']['users']) { return; }	var user = queryObj['query']['users']; if (user.length === 0) { return; }	user = user[0]; // If the user is an IP ("invalid") or unregistered ("missing"), return if (user['invalid'] === "" || user['missing'] === "") return; var userRightStr = ""; // Get registration Date if (user['registration']) { var regDate = user['registration'].split("T")[0]; var regDateObj = new Date(regDate); userRightStr += ("Registered " + (regDateObj.getMonth + 1) + "/" + regDateObj.getDate + "/" + regDateObj.getFullYear + "; "); }	// Get edit count if (user['editcount']) { userRightStr += (user['editcount'] + " edits"); }	// Get user rights if (user['groups']) { var numRights = 0; var groupLength = user['groups'].length; for (var i = 0; i < groupLength; i++) { // We'll ignore the groups "*" and "users", since everyone belongs to them var currentGroup = user['groups'][i]; if ((currentGroup != "*") && (currentGroup != "user")) { if (numRights === 0) { userRightStr += "; "; } else { userRightStr += ", "; }

if (currentGroup == "sysop") { userRightStr += " "; userRightStr += currentGroup; userRightStr += " "; } else if (currentGroup == "bureaucrat") { userRightStr += " "; userRightStr += currentGroup; userRightStr += " "; } else if (currentGroup == "checkuser") { userRightStr += " "; userRightStr += currentGroup; userRightStr += " "; } else if (currentGroup == "oversight") { userRightStr += " "; userRightStr += currentGroup; userRightStr += " "; } else { userRightStr += currentGroup; }				numRights++; }		}	}	// If currently blocked, mention it	if (user['blockedby']) { var blockLogURL = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + "/index.php?title=Special:Log/block&page=" + encodeURIComponent(mw.config.get('wgPageName')); userRightStr += "; currently blocked"; }	// Attach the info where we want it	$('#siteSub').before(" " + userRightStr + " "); }