Diff: Module:Effective protection expiry
Comparing revision #1 (2022-02-23 10:59:29) with revision #2 (2023-02-02 05:25:37).
| Old | New |
|---|---|
local p = {} |
local p = {} |
-- Returns the expiry of a restriction of an action on a given title, or unknown if it cannot be known. |
-- 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. |
-- If no title is specified, the title of the page being displayed is used. |
function p._main(action, pagename) |
function p._main(action, pagename) |
local title |
local title |
if type(pagename) == 'table' and pagename.prefixedText then |
if type(pagename) == 'table' and pagename.prefixedText then |
title = pagename |
title = pagename |
elseif pagename then |
elseif pagename then |
title = mw.title.new(pagename) |
title = mw.title.new(pagename) |
else |
else |
title = mw.title.getCurrentTitle() |
title = mw.title.getCurrentTitle() |
end |
end |
pagename = title.prefixedText |
pagename = title.prefixedText |
if action == 'autoreview' then |
if action == 'autoreview' then |
local stabilitySettings = mw.ext.FlaggedRevs.getStabilitySettings(title) |
local stabilitySettings = mw.ext.FlaggedRevs.getStabilitySettings(title) |
return stabilitySettings and stabilitySettings.expiry or 'unknown' |
return stabilitySettings and stabilitySettings.expiry or 'unknown' |
elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' then |
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 ) |
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) |
if rawExpiry == 'infinity' then |
if rawExpiry == 'infinity' then |
return 'infinity' |
return 'infinity' |
elseif rawExpiry == '' then |
elseif rawExpiry == '' then |
return 'unknown' |
return 'unknown' |
else |
else |
local year, month, day, hour, minute, second = rawExpiry:match( |
local year, month, day, hour, minute, second = rawExpiry:match( |
'^(%d%d%d%d)(%d%d)(%d%d)(%d%d)(%d%d)(%d%d)$' |
'^(%d%d%d%d)(%d%d)(%d%d)(%d%d)(%d%d)(%d%d)$' |
) |
) |
if year then |
if year then |
return string.format( |
return string.format( |
'%s-%s-%sT%s:%s:%s', |
'%s-%s-%sT%s:%s:%s', |
year, month, day, hour, minute, second |
year, month, day, hour, minute, second |
) |
) |
else |
else |
error('internal error in Module:Effective protection expiry; malformed expiry timestamp') |
error('internal error in Module:Effective protection expiry; malformed expiry timestamp') |
end |
end |
end |
end |
end |
end |
setmetatable(p, { __index = function(t, k) |
setmetatable(p, { __index = function(t, k) |
return function(frame) |
return function(frame) |
return t._main(k, frame.args[1]) |
return t._main(k, frame.args[1]) |
end |
end |
end }) |
end }) |
return p |
return p |