Module:Effective protection level

Dokumentasie vir hierdie module kan geskep word by: Module:Effective protection level/doc

local p = {}-- Returns the permission required to perform a given action on a given title.-- If no title is specified, the title of the page being displayed is used.function p._main(action, pagename)local titleif type(pagename) == 'table' and pagename.prefixedText thentitle = pagenameelseif pagename thentitle = mw.title.new(pagename)elsetitle = mw.title.getCurrentTitle()endpagename = title.prefixedTextif action == 'autoreview' thenlocal level = mw.ext.FlaggedRevs.getStabilitySettings(title)level = level and level.autoreviewif level == 'review' thenreturn 'reviewer'elseif level ~= '' thenreturn levelelsereturn nil -- not '*'. a page not being PC-protected is distinct from it being PC-protected with anyone able to review. also not '', as that would mean PC-protected but nobody can reviewendelseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' thenerror( 'First parameter must be one of edit, move, create, upload, autoreview', 2 )endif title.namespace == 8 then -- MediaWiki namespacereturn 'sysop'elseif title.namespace == 2 and title.isSubpage and ( title.contentModel == 'javascript' or title.contentModel == 'css' ) then -- user JS or CSS pagereturn 'sysop'endlocal level = title.protectionLevels[action] and title.protectionLevels[action][1]if level == 'sysop' or level == 'editprotected' thenreturn 'sysop'elseif title.cascadingProtection.restrictions[action] and title.cascadingProtection.restrictions[action][1] then -- used by a cascading-protected pagereturn 'sysop'elseif level == 'templateeditor' thenreturn 'templateeditor'elseif action == 'move' thenlocal blacklistentry = mw.ext.TitleBlacklist.test('edit', pagename) -- Testing action edit is correct, since this is for the source page. The target page name gets tested with action move.if blacklistentry and not blacklistentry.params.autoconfirmed thenreturn 'templateeditor'elseif title.namespace == 6 thenreturn 'filemover'elseif level == 'extendedconfirmed' thenreturn 'extendedconfirmed'elsereturn 'autoconfirmed'endendlocal blacklistentry = mw.ext.TitleBlacklist.test(action, pagename)if blacklistentry thenif not blacklistentry.params.autoconfirmed thenreturn 'templateeditor'elseif level == 'extendedconfirmed' thenreturn 'extendedconfirmed'elsereturn 'autoconfirmed'endelseif level == 'editsemiprotected' then -- create-semiprotected pages return this for some reasonreturn 'autoconfirmed'elseif level thenreturn levelelseif action == 'upload' thenreturn 'autoconfirmed'elseif action == 'create' and title.namespace % 2 == 0 and title.namespace ~= 118 then -- You need to be registered, but not autoconfirmed, to create non-talk pages other than draftsreturn 'user'elsereturn '*'endendsetmetatable(p, { __index = function(t, k)return function(frame)return t._main(k, frame.args[1])endend })return p