Difference between revisions of "Module:Effective protection expiry"
module>Hasley m (Protected "Module:Effective protection expiry": Highly visible page or template ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only autoconfirmed users] (indefinite))) |
m (1 revision imported) |
||
(One intermediate revision by the same user not shown) | |||
Line 13: | Line 13: | ||
end | end | ||
pagename = title.prefixedText | pagename = title.prefixedText | ||
− | if action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' then | + | if action == 'autoreview' then |
− | error( 'First parameter must be one of edit, move, create, upload', 2 ) | + | 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 | end | ||
local rawExpiry = mw.getCurrentFrame():callParserFunction('PROTECTIONEXPIRY', action, pagename) | local rawExpiry = mw.getCurrentFrame():callParserFunction('PROTECTIONEXPIRY', action, pagename) | ||
Line 22: | Line 25: | ||
return 'unknown' | return 'unknown' | ||
else | else | ||
− | local year = | + | local year, month, day, hour, minute, second = rawExpiry:match( |
− | + | '^(%d%d%d%d)(%d%d)(%d%d)(%d%d)(%d%d)(%d%d)$' | |
− | + | ) | |
− | return | + | 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 | ||
end | end |
Latest revision as of 05:50, 31 July 2020
This {{<tvar|1>#switch:Module|File</>=Image|page}} is a candidate for deletion. The given reason is: Only used by other pages I've nominated for deletion
If discussion is still ongoing, it should remain until a consensus is reached, after which the page will either be deleted or this notice removed. If you disagree with its deletion, please discuss your reasons on this page or on its associated talk page, as applicable. Remember to check [[<tvar|1>Special:Whatlinkshere/Module:Effective protection expiry</>|if anything links here]] and [<tvar |
This module is rated as ready for general use. It has reached a mature form and is thought to be bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by sandbox 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[edit]
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]
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", or "upload". 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[edit]
The parameters are the same as when it is called directly.
{{#invoke:Effective protection expiry|action|title}}
See also[edit]
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