Duration: 2hrs
We need some way of storing flag clicks associated with a collection and then be able to filter against them.
Review the tasks this blocks and find a solution that satisfies them all.
Outcome:
A proposal for how to implement this.
----
Proposal:
* DB schema:
** new table `gather_list_flags(user_id, user_ip, collection_id)` (`user_id` is null for anons, `user_ip` is null for non-anons).
*** flag count query does not need to be efficient for now, we'll check first how much flagging happens
** new value for `gl_perm`: `CLEARED`
* Hooks:
** on editing name/title of a list ???
** delete flags on list deletion
** update user id on user merge/rename
* API:
** `mode=flag/clearflags` for `editlist` (with duplicate userid/IP detection for `flag`)
** `filter=notablyflagged` option for the `listpages` API (>N flags and `gl_perm` state is `PUBLIC`)
** `flagged` property in the `lists` API (current user/IP flagged this)
*** this will disable caching, is that OK?
** `flagCount` property in the `lists` API (?)
* Special pages:
** `Special:Gatherlists/flagged` to show the flagged queue