Module:Global lock

local p = {}

local getArgs = require('Module:Arguments').getArgs local isIpOrRange = require('Module:IPAddress').isIpOrRange

local middot = ' •&#32;'

local extlink = function(url, text) return '[' .. tostring(url) .. (text and ' ' .. text or '') .. ']' end local link = function(page, param, text) return extlink(mw.uri.fullUrl(page, param), text) end

function p.multi_lock(frame) local args = getArgs(frame) local text = '' local users = {} local params = {} local wpTarget = '' for k, v in pairs(args) do		if v and (v ~= '') then if type(k) == 'number' then users[k] = mw.text.trim(v) else params[k] = mw.text.trim(v) end end end if #users == 0 then error('You must specify at least one user', 0) end for k, v in pairs(users) do wpTarget = wpTarget .. v .. '\n' params[1] = v text = text .. '\n* ' .. p._lock_hide(params) end wpTarget = mw.text.trim(wpTarget) local link = tostring(mw.uri.fullUrl('Special:MultiLock', {wpTarget=wpTarget})) text = ' [' .. link .. ' Lock all]:' .. text return text end

function p.lock_hide(frame) local args = getArgs(frame, {		trim = true,		removeBlanks = true	}) return p._lock_hide({		[1] = args[1],		[2] = args[2],		hidename = args['hidename']	}) end

function p._lock_hide(args) local username = args[1] or 'Example user' local interwiki = args[2] or '' local hidename = not not args['hidename'] or false local hide = function(text, fallback) return hidename and ' ' .. (			fallback and ' .. text .. ' or text		) .. ' ' or (fallback or text) end local srga = mw.title.getCurrentTitle:isSubpageOf(		mw.title.new('Steward requests/Global')	) if srga then return  .. (			hide('name hidden', username)		) ..  end local text = { ' ',		extlink(			mw.title.new(interwiki .. 'User:' .. username):fullUrl,			hide('name hidden', username)		), ' ',		'(',		 ..			hide('talk') ..		,		middot,		 ..			hide('contribs') ..		,		middot,		 ..			hide('block') ..		,		middot,		( isIpOrRange({args = {username}}) == 'range' and extlink(				'https://xtools.wmflabs.org/globalcontribs/ipr-' .. username,				'xwiki-contribs'			) or			link('toollabs:guc', {				user = username,				blocks = true			}, 'xwiki-contribs') .. middot .. link('toollabs:guc', {				user = username,				by = 'date',				blocks = true			}, 'xwiki-date') .. ' ' ..			' (' ..				link('xtools:globalcontribs/' .. username, nil, 'alt') ..			') ' ),		middot,		 ..			hide('CA') ..		,		middot,		' ' ..			link('toolforge:meta/stalktoy/' .. username, nil, 'ST') ..		' ',		middot,		' ' ..			extlink( tostring(mw.uri.new('//login.wikimedia.org/w/index.php'):extend({ title = 'Special:CheckUser', user = username, uselang = 'en', reason = 'per request' })),				'lwcheckuser' ) ..		' ',		')',		' ',		'__NOINDEX__' }	return table.concat(text, '') end

return p