Este módulo fornece uma maneira de recuperar o grupo necessário para executar uma determinada ação em uma página.[a] Atualmente ele testa os seguintes critérios:
A página sendo protegida por alterações pendentes: autoconfirmed
A página sendo uma subpágina de JavaScript (J.S.) ou de folhas de estilos em cascatas (F.E.C.)[b] no espaço de usuário ou no espaço nomeado MediaWiki: interfaceadmin
A página sendo do espaço nomeado MediaWiki: sysop
A página sendo uma subpágina de notação de objeto JavaScript (N.O.J.S.)[c] no espaço do usuário: sysop
A página que está sendo protegida: sysop, templateeditor, extendedconfirmed, ou autoconfirmed
A página que está sendo usada em uma página protegida em cascata: sysop
O título da página que corresponde à lista negra de títulos: templateeditor ou autoconfirmed
Um arquivo sendo movido: filemover
Uma página sendo movida ou um arquivo sendo carregado: autoconfirmed
Uma página que não é de discussão e não é rascunho sendo criada: user
Qualquer outra coisa: *
Observe que, se um arquivo protegido por predefinição for movido, "filemover" e "templateeditor" serão necessários, mas ele retornará apenas "templateeditor". Não é provável que isso seja alterado tão cedo, já que a proteção de predefinição atualmente não deve ser usada em arquivos.
Uso
Aviso: Este módulo usará até 4 chamadas caras de função de analisador cada vez que for executado. Só deve ser usado se o nível de proteção efetivo exato for necessário. Se não, considere usar "title.protectionLevels" em vez dele.
A partir de outros módulos
Para carregar este módulo:
localeffectiveProtectionLevel=require('Módulo:Nível efetivo de proteção')._main
A função aceita dois parâmetros. A primeira é uma sequência[d] contendo a ação a ser verificada, que deve ser "editar", "criar", "mover", "carregar", "desfazer exclusão" ou "revisão automática" ("edit", "create", "move", "upload", "undelete", ou "autoreview"). O segundo é opcional e pode ser o nome da página a ser verificada ou um título retornado das funções "mw.title". Se o segundo parâmetro for omitido, a página que está sendo mostrada é a verificada. O valor de retorno é uma sequência[d] contendo o nome do grupo necessário para executar a ação especificada.
localp={}-- Retorna a permissão necessária para executar uma determinada ação em um determinado título.-- Se nenhum título for especificado, o título da página mostrada será usado.functionp._main(action,pagename)localtitleiftype(pagename)=='table'andpagename.prefixedTextthentitle=pagenameelseifpagenamethentitle=mw.title.new(pagename)elsetitle=mw.title.getCurrentTitle()endpagename=title.prefixedTextifaction=='autoreview'thenlocallevel=mw.ext.FlaggedRevs.getStabilitySettings(title)level=levelandlevel.autoreviewiflevel=='review'thenreturn'reviewer'elseiflevel~=''thenreturnlevelelsereturnnil-- Não '*'. Uma página que não está protegida por proteção em cascata é diferente de uma página protegida por proteção em cascata com qualquer pessoa capaz de revisar. Também não '', pois isso significaria proteção para proteção em cascata, mas ninguém pode revisar.endelseifaction~='edit'andaction~='move'andaction~='create'andaction~='upload'andaction~='undelete'thenerror('O primeiro parâmetro deve ser um dos seguintes: edit, move, create, upload, undelete, autoreview',2)endiftitle.namespace==8then-- Espaço nomeado MediaWiki. iftitle.text:sub(-3)=='.js'ortitle.text:sub(-4)=='.css'ortitle.contentModel=='javascript'ortitle.contentModel=='css'then-- página de 'JavaScript' ('JS.') ou de folhas de estilos em cascatas (F.E.C., 'C.S.S.').return'interfaceadmin'else-- qualquer página que não é de 'JavaScript' ('JS.') ou de folhas de estilos em cascatas (F.E.C., 'C.S.S.') em MediaWiki.return'sysop'endelseiftitle.namespace==2andtitle.isSubpagetheniftitle.contentModel=='javascript'ortitle.contentModel=='css'then-- página de 'JavaScript' ('JS.') ou de folhas de estilos em cascatas (F.E.C., 'C.S.S.') de usuário.return'interfaceadmin'elseiftitle.contentModel=='json'then-- página de notação de objeto 'JavaScript' (N.O.'JS.', 'JS.O.N.') de usuário.return'sysop'endendifaction=='undelete'thenreturn'sysop'endlocallevel=title.protectionLevels[action]andtitle.protectionLevels[action][1]iflevel=='sysop'orlevel=='editprotected'thenreturn'sysop'elseiftitle.cascadingProtection.restrictions[action]andtitle.cascadingProtection.restrictions[action][1]then-- Usado por uma página protegida em cascata.return'sysop'elseiflevel=='templateeditor'thenreturn'templateeditor'elseifaction=='move'thenlocalblacklistentry=mw.ext.TitleBlacklist.test('edit',pagename)-- Testando se a ação "edit" está correta, já que esta é para a página de origem. O nome da página de destino é testado com a ação "move".ifblacklistentryandnotblacklistentry.params.autoconfirmedthenreturn'templateeditor'elseiftitle.namespace==6thenreturn'filemover'elseiflevel=='extendedconfirmed'thenreturn'extendedconfirmed'elsereturn'autoconfirmed'endendlocalblacklistentry=mw.ext.TitleBlacklist.test(action,pagename)ifblacklistentrythenifnotblacklistentry.params.autoconfirmedthenreturn'templateeditor'elseiflevel=='extendedconfirmed'thenreturn'extendedconfirmed'elsereturn'autoconfirmed'endelseiflevel=='editsemiprotected'then-- Criar páginas semiprotegidas retorna isso por algum motivo.return'autoconfirmed'elseiflevelthenreturnlevelelseifaction=='upload'thenreturn'autoconfirmed'elseifaction=='create'andtitle.namespace%2==0andtitle.namespace~=118then-- Você precisa ser registrado, mas não autoconfirmado, para criar páginas que não são de discussão que não sejam rascunhos/esboços.return'user'elsereturn'*'endendsetmetatable(p,{__index=function(t,k)returnfunction(frame)returnt._main(k,frame.args[1])endend})returnp