Módulo:Nível efetivo de proteção

Fonte: Wikinotícias
Documentação Documentação de módulo


Descrição

Este Módulo implementa a predefinição {{Lua}}. Por favor consulte a predefinição para mais instruções.

== Uso ==
Esta documentação se encontra na subpágina Módulo:Nível efetivo de proteção/doc (editar | histórico)
Por favor inclua as categorias à subpágina /doc. Subpáginas deste módulo.

local p = {}

function p._main(action, pagename)
    local title
    if type(pagename) == 'table' and pagename.prefixedText then
        title = pagename
    elseif pagename then
        title = mw.title.new(pagename)
    else
        title = mw.title.getCurrentTitle()
    end
    pagename = title.prefixedText
    if action == 'autoreview' then
        local level = mw.ext.FlaggedRevs.getStabilitySettings(title)
        level = level and level.autoreview
        if level == 'review' then
            return 'reviewer'
        elseif level ~= '' then
            return level
        else
            return nil
        end
    elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' then
        error( 'First parameter must be one of edit, move, create, upload, autoreview', 2 )
    end
    if title.namespace == 8 then -- MediaWiki namespace
        return 'sysop'
    elseif title.namespace == 2 and title.isSubpage and ( title.contentModel == 'javascript' or title.contentModel == 'css' ) then -- user JS or CSS page
        return 'sysop'
    end
    local level = title.protectionLevels[action] and title.protectionLevels[action][1]
    if level == 'sysop' or level == 'editprotected' then
        return 'sysop'
    elseif title.cascadingProtection.restrictions[action] and title.cascadingProtection.restrictions[action][1] then -- used by a cascading-protected page
        return 'sysop'
    elseif level == 'templateeditor' then
        return 'templateeditor'
    elseif action == 'move' then
        local blacklistentry = mw.ext.TitleBlacklist.test('edit', pagename)
        if blacklistentry and not blacklistentry.params.autoconfirmed then
            return 'templateeditor'
        elseif title.namespace == 6 then
            return 'filemover'
        elseif level == 'extendedconfirmed' then
            return 'extendedconfirmed'
        else
            return 'autoconfirmed'
        end
    end
    local blacklistentry = mw.ext.TitleBlacklist.test(action, pagename)
    if blacklistentry then
        if not blacklistentry.params.autoconfirmed then
            return 'templateeditor'
        elseif level == 'extendedconfirmed' then
            return 'extendedconfirmed'
        else
            return 'autoconfirmed'
        end
    elseif level == 'editsemiprotected' then
        return 'autoconfirmed'
    elseif level then
        return level
    elseif action == 'upload' then
        return 'autoconfirmed'
    elseif action == 'create' and title.namespace % 2 == 0 and title.namespace ~= 118 then
        return 'user'
    else
        return '*'
    end
end

setmetatable(p, { __index = function(t, k)
    return function(frame)
        return t._main(k, frame.args[1])
    end
end })

return p