×
Create a new article
Write your page title here:
We currently have 223 articles on Farthest Frontier. Type your article name above or create one of the articles listed here!



    Farthest Frontier

    Module:Effective protection expiry

    This module provides a way to retrieve the expiry of a restriction over a given action on a page.

    Usage[edit source]

    This module will use up to 1 expensive parser function call each time it is ran. It will not use any if Module:Effective protection level was already called.

    From other modules[edit source]

    To load this module:

    local effectiveProtectionExpiry = require('Module:Effective protection expiry')._main
    

    The function accepts two parameters. The first is a string containing the action to check, which must be one of "edit", "create", "move", "upload", or "autoreview". The second is optional, and can either be the name of the page to check, or a title returned from the mw.title functions. If the second parameter is omitted, the page being displayed is the one checked against.

    The return value is either a date string in YY-MM-DDThh:mm:ss format, or one of the following strings:

    • infinity - for pages protected indefinitely, or pages which exist and are not protected
    • unknown - for pages where the expiry is unknown, or pages which do not exist and are not protected

    Note that if an existing page is not protected for the requested action, this will return 'infinity'. You need to check separately with Module:Effective protection level.

    From wikitext[edit source]

    The parameters are the same as when it is called directly.

    {{#invoke:Effective protection expiry|action|title}}
    

    See also[edit source]


    local p = {}
    
    -- Returns the expiry of a restriction of an action on a given title, or unknown if it cannot be known.
    -- If no title is specified, the title of the page being displayed is used.
    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 stabilitySettings = mw.ext.FlaggedRevs.getStabilitySettings(title)
    		return stabilitySettings and stabilitySettings.expiry or 'unknown'
    	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
    	local rawExpiry = mw.getCurrentFrame():callParserFunction('PROTECTIONEXPIRY', action, pagename)
    	if rawExpiry == 'infinity' then
    		return 'infinity'
    	elseif rawExpiry == '' then
    		return 'unknown'
    	else
    		local year, month, day, hour, minute, second = rawExpiry:match(
    			'^(%d%d%d%d)(%d%d)(%d%d)(%d%d)(%d%d)(%d%d)$'
    		)
    		if year then
    			return string.format(
    				'%s-%s-%sT%s:%s:%s',
    				year, month, day, hour, minute, second
    			)
    		else
    			error('internal error in Module:Effective protection expiry; malformed expiry timestamp')
    		end
    	end
    end
    
    setmetatable(p, { __index = function(t, k)
    	return function(frame)
    		return t._main(k, frame.args[1])
    	end
    end })
    
    return p
    
    Cookies help us deliver our services. By using our services, you agree to our use of cookies.
    Cookies help us deliver our services. By using our services, you agree to our use of cookies.