Thismodule is rated asready for general use. It has reached a mature state, is considered relatively stable and bug-free, and may be used wherever appropriate. It can be mentioned onhelp pages and other Wikipedia resources as an option for new users. To minimise server load and avoid disruptive output, improvements should be developed throughsandbox testing rather than repeated trial-and-error editing.
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 ifModule:Effective protection level was already called.
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 inYY-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 withModule:Effective protection level.
From wikitext
The parameters are the same as when it is called directly.
localp={}-- 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.functionp._main(action,pagename)localtitleiftype(pagename)=='table'andpagename.prefixedTextthentitle=pagenameelseifpagenamethentitle=mw.title.new(pagename)elsetitle=mw.title.getCurrentTitle()endpagename=title.prefixedTextifaction=='autoreview'thenlocalstabilitySettings=mw.ext.FlaggedRevs.getStabilitySettings(title)returnstabilitySettingsandstabilitySettings.expiryor'unknown'elseifaction~='edit'andaction~='move'andaction~='create'andaction~='upload'thenerror('First parameter must be one of edit, move, create, upload, autoreview',2)endlocalrawExpiry=mw.getCurrentFrame():callParserFunction('PROTECTIONEXPIRY',action,pagename)ifrawExpiry=='infinity'thenreturn'infinity'elseifrawExpiry==''thenreturn'unknown'elselocalyear,month,day,hour,minute,second=rawExpiry:match('^(%d%d%d%d)(%d%d)(%d%d)(%d%d)(%d%d)(%d%d)$')ifyearthenreturnstring.format('%s-%s-%sT%s:%s:%s',year,month,day,hour,minute,second)elseerror('internal error in Module:Effective protection expiry; malformed expiry timestamp')endendendsetmetatable(p,{__index=function(t,k)returnfunction(frame)returnt._main(k,frame.args[1])endend})returnp