Module:Effective protection expiry
This module provides a way to retrieve the expiry of a restriction over a given action on a page.
Usage
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
To load this module: <syntaxhighlight lang="lua"> local effectiveProtectionExpiry = require('Module:Effective protection expiry')._main </syntaxhighlight>
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 indefinitelyunknown
- for pages which are not protected or where the expiry is unknown
Note that if the page is not protected for the requested action, this will return 'infinity'. You need to check separately with Module:Effective protection level.
From wikitext
The parameters are the same as when it is called directly.
Template:Tlinv
See also
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