Brad Jorsch <bjor...@wikimedia.org> changed:
What |Removed |Added
--- Comment #5 from Brad Jorsch <bjor...@wikimedia.org> ---
(In reply to Technical 13 from comment #4)
> Technically, I think to implement this, each protection level would have to
> be given it's own column in the table with an expiration date
That's not actually how the existing page_restrictions table is structured.
What would probably have to happen is that they unique index would have to
change from (pr_page,pr_type) to (pr_page,pr_type,pr_level). And then various
bits of code would need to be adjusted to deal with this.
> and the highest level of non-expired protection would be applied.
It's not necessarily possible to decide that one protection level is "higher"
than another. For example, you probably know that enwiki created a new
"templateeditor" protection level. What if enwiki decided they also wanted a
special protection level for policy pages, and created a "policyeditor"
protection level. Which would be higher, "templateeditor" or "policyeditor"?
So what would have to happen is that a page with multiple protection levels
active at once could be edited only by editors who could edit through each
protection level individually.
There does seem to already be some support along these lines in the code, for
example Title::getRestrictions() is defined to return an array of restrictions
and Title::checkPageRestrictions() checks whether the user is allowed to edit
through all of them. But I don't know for sure whether everything everywhere
will correctly handle it.
And despite Title handling multiple restriction levels for an action, there's
doesn't seem to be support for the different restriction levels expiring at
different times (e.g. Title::getRestrictionExpiry() assumes there's only one
relevant time). And then there are the UI issues too, with making a sensible
protection form dealing with different restriction levels expiring at different
: Yes, this example is *incredibly* unlikely. But it illustrates the point.
You are receiving this mail because:
You are the assignee for the bug.
You are on the CC list for the bug.
Wikibugs-l mailing list