မေႃႇၵျူး:Checkuser
Appearance
This module is rated as ready for general use. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by sandbox testing rather than repeated trial-and-error editing. |
Lua module ဢၼ်ၼႆႉ လႆႈၸႂ်ႉဝႆႉ တီႈၼႃႈလိၵ်ႈ many ၼႃႈလိၵ်ႈ လႄႈ လွင်ႈလႅၵ်ႈလၢႆႈၸိူဝ်းၼႆႉ တေႁႂ်ႈၽၢင်ႉမႅၼ်ႈၺႃး ၵႂၢင်ႈၵႂၢင်ႈၶႂၢင်ၶႂၢင်။ ၸၢမ်းတူၺ်း လွင်ႈလႅၵ်ႈလၢႆႈ တီႈၼႂ်း မေႃႇၵျူး's /sandbox ဢမ်ႇၼၼ် ၼႃႈလိၵ်ႈၽႄ /testcases . ဝူၼ်ႉသွၼ်ႇ ဢုပ်ႇဢူဝ်း လွင်ႈလႅၵ်ႈလၢႆႈ တီႈၼႂ်း ၼႃႈလိၵ်ႈ တႃႇဢုပ်ႇ ၽွင်းမိူဝ်ႈပႆႇ ၵေႃႇသၢင်ႈၶဝ်ၼၼ်ႉ။
ႁူဝ်ၼပ်ႉ လွင်ႈၶဝ်ႈပႃးၼႆႉ မၼ်းႁဵတ်းဢၢပ်ႉတဵတ်ႉဝႆႉႁင်းမၼ်း (တူၺ်းတီႈ ၽိုၼ်လိၵ်ႈ)။ |
local p = {}
local getArgs = function(fr)
return require('Module:Arguments').getArgs(fr, {
trim = true,
removeBlanks = true
})
end
local noping = function(name)
return require('Module:No ping')._main({name})
end
local middot = ' <b>·</b> '
local spi = 'Wikipedia:Sockpuppet investigations'
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.user(frame)
local args = getArgs(frame)
return p._user(args['User'] or args[1], args['master name'], args['master'])
end
function p._user(sock, mastername, master)
if not sock then
return (
'<strong class="error">No username provided.</strong>' ..
'[[Category:Checkuser with no specified user]]'
)
end
local span = mw.html.create('span'):attr('class', 'plainlinks cuEntry')
local curtitle = mw.title.getCurrentTitle()
local links = {
'[[User talk:' .. sock .. '|talk]]' ..
'<sup><span style="font-size: 120%;">' ..
link('User talk:' .. sock, {
action = 'edit',
section = 'new'
}, '<span style="color: grey;">+</span>') ..
'</span></sup>',
link('User:' .. sock, (function()
local param = {
action = 'edit',
preload = 'Template:Checkuser/Preload' .. (master == 'yes' and ' master' or '')
}
if master ~= 'yes' then
param['preloadparams[]'] = (
mastername and
mastername or
'<!-- insert sock master here -->'
)
end
return param
end)(), 'tag'),
'[[Special:Contributions/' .. sock .. '|contribs]]' ..
'<span class="sysop-show">',
'[[Special:DeletedContributions/' .. sock .. '|deleted contribs]]' ..
'</span>',
link('Special:Log', {
user = sock
}, 'logs'),
link('Special:AbuseLog', {
wpSearchUser = sock
}, 'filter log') ..
'<span class="sysop-show">',
'[[Special:Block/' .. sock .. '|block user]]' ..
(function()
if curtitle:isSubpageOf(mw.title.new(spi)) then
return (
middot .. link('Special:Block', {
wpBlockAddress = sock,
wpExpiry = 'indefinite',
wpReason = 'Abusing [[WP:Sock puppetry|multiple accounts]]',
['wpReason-other'] = 'Please see: [[:w:en:' .. spi .. '/' ..
mw.text.split(curtitle.text, '/')[2] ..
']]'
}, 'spi block')
)
else
return ''
end
end)() ..
'</span>',
link('Special:Log/block', {
page = 'User:' .. sock
}, 'block log'),
'[[:m:Special:CentralAuth/' .. sock .. '|CA]]' ..
'<span class="cuLink checkuser-show">',
link('Special:CheckUser', (function()
local param = {
user = sock
}
if mw.text.split(curtitle.prefixedText, '/')[1] == spi then
param['reason'] = sock .. ' from [[' .. curtitle.prefixedText .. ']]'
end
return param
end)(), 'CheckUser') ..
'(' .. link('Special:CheckUserLog', {
cuSearch = sock
}, 'log') .. ')',
link('Special:Investigate', (function()
local param = {
targets = sock
}
if curtitle.prefixedText == spi .. '/' .. table.concat({
mw.text.split(curtitle.prefixedText, '/')[2],
mw.text.split(curtitle.prefixedText, '/')[3]
}, '/') then
param['reason'] = sock .. ' from [[' .. curtitle.prefixedText .. ']]'
end
return param
end)(), 'investigate'),
extlink(
tostring(mw.uri.new('//checkuser.wikimedia.org/w/index.php'):extend({
title = 'Special:Search',
search = sock,
ns0 = 1,
ns2 = 1,
ns14 = 1
})),
'cuwiki'
) ..
'</span>'
}
span = span:wikitext(table.concat({
noping(sock),
'(' .. table.concat(links, middot) .. ')'
}, ' '))
return tostring(span) .. '__NOINDEX__'
end
function p.ip(frame)
local args = getArgs(frame)
return p._ip(args['User'] or args[1], args['master name'])
end
function p._ip(ip, mastername)
if not ip then
return (
'<strong class="error">No username provided.</strong>' ..
'[[Category:Checkip with no specified IP]]'
)
end
local span = mw.html.create('span'):attr('class', 'plainlinks neverexpand cuEntry')
local curtitle = mw.title.getCurrentTitle()
local links = {
'[[User talk:' .. ip .. '|talk]]' ..
'<sup><span style="font-size: 120%;">' ..
link('User talk:' .. ip, {
action = 'edit',
section = 'new'
}, '<span style="color: grey">+</span>') ..
'</span></sup>',
link('User:' .. ip, {
action = 'edit',
preload = 'Template:Checkip/Preload',
['preloadparams[]'] = (
mastername and
mastername or
'<!-- Insert sock master name here -->'
)
}, 'tag'),
'[[Special:Contributions/' .. ip .. '|contribs]]',
link('Special:AbuseLog', {
wpSearchUser = ip
}, 'filter log'),
extlink(
tostring(mw.uri.new('//tools.wmflabs.org/whois/gateway.py'):extend({
lookup = 'true',
ip = ip
})),
'WHOIS'
),
extlink(
tostring(mw.uri.new('//www.robtex.com/rbls/' .. ip .. '.html')),
'RBLs'
),
extlink(
tostring(mw.uri.new('//ipcheck.toolforge.org/index.php'):extend({
ip = ip
})),
'proxy check'
) ..
'<span class="sysop-show">',
'[[Special:Block/' .. ip .. '|block user]]' .. (function()
if curtitle:isSubpageOf(mw.title.new(spi)) then
return (
middot .. link('Special:Block', {
wpTarget = ip,
wpReason = 'Abusing [[WP:Sock puppetry|multiple accounts]]',
['wpReason-other'] = 'Please see: [[:w:en:' .. spi .. '/' ..
mw.text.split(curtitle.text, '/')[2] ..
']]'
}, 'spi block')
)
else
return ''
end
end)() ..
'</span>',
link('Special:Log/block', {
page = 'User:' .. ip
}, 'block log'),
extlink(
tostring(mw.uri.new('//guc.toolforge.org/'):extend({
by = 'date',
user = ip
})),
'cross-wiki contribs'
) ..
'<span class="cuLink checkuser-show">',
link('Special:CheckUser', (function()
local param = {
ip = ip
}
if curtitle.prefixedText == spi .. '/' .. table.concat({
mw.text.split(curtitle.prefixedText, '/')[2],
mw.text.split(curtitle.prefixedText, '/')[3]
}, '/') then
param['reason'] = '[[' .. curtitle.prefixedText .. ']]'
end
return param
end)(), 'CheckUser') .. ' ' ..
'(' .. link('Special:CheckUserLog', {
cuSearch = ip
}, 'log') .. ')' ..
'</span>'
}
span = span:wikitext(table.concat({
noping(ip),
'(' .. table.concat(links, middot) .. ')'
}, ' '))
return tostring(span)
end
return p