Extension:FlaggedRevs

For detailed usage information of this extension, see Help:Extension:FlaggedRevs

Article validation allows for Editor and Reviewer users to rate revisions of articles and set those revisions as the default revision to show upon normal page view. These revisions will remain the same even if included templates are changed or images are overwritten. This allows for MediaWiki to act more as a Content Management System (CMS).

Setup
To install FlaggedRevs you need to follow the following steps:
 * 1) Download FlaggedRevs (here). Taking care to match the version of FlaggedRevs to the version of MediaWiki that you are using! (i.e. if you're using MediaWiki 1.15, use FlaggedRevs 1.15)
 * 2) Extract the downloaded file to
 * tar -xzf FlaggedRevs-MW1.15-r60856.tar.gz -C /var/www/mediawiki/extensions
 * 1) Run php /maintenance/populateSha1.php if you haven't done so already.
 * 2) Ensure   is web-readable (required for CSS/JS).
 * 3) To enable article validation statistics, $wgPhpCli must be set correctly. This is not necessary if you set a cron job to run /FlaggedRevs/maintenance/updateStats.php every so often, which is preferable.
 * 4) To enable FlaggedRevs add to   (see LocalSettings.php)
 * 5) Run php /maintenance/update.php. Note: If you can't do so (i.e. if you don't have command line access), you will need to import /extensions/FlaggedRevs/FlaggedRevs.sql into the database (after making the changes that are described in the file).
 * 6) Run php /extensions/FlaggedRevs/maintenance/updateAutoPromote.php. You can ignore this if you aren't using $wgFlaggedRevsAutopromote.
 * 1) Run php /extensions/FlaggedRevs/maintenance/updateAutoPromote.php. You can ignore this if you aren't using $wgFlaggedRevsAutopromote.

Note: It is important that the sha1</tt> column is populated (in the populateSha1.php</tt> step). This allows for image injection via key rather than the (name,timestamp) pair. In the future, image moves may be supported by MediaWiki, breaking the later method.

Be sure to set the  variable in FlaggedRevs.php. It should be an array of 2 string items:

Any (secret) text will do, though it shouldn't be less than about 16 characters (less secure) or very long (waste of resources).

Initially, no user can see the reviewer's widget. To fix this, login as a wiki sysop and go to Special:UserRights. Promote a user to reviewer/editor and log out. When you login as the promoted user you will see the reviewer's widget on the bottom of an editable page.

User rights
By default, nobody can review anything, so the first step is to set up user rights. FlaggedRevs creates or modifies the following user rights:


 * review</tt> -- user can review revisions
 * validate</tt> -- user can validate revisions
 * autoreview</tt> -- any edits made by the user are automatically marked as sighted
 * unreviewedpages</tt> -- user can view Special:UnreviewedPages

and the following new user groups:


 * Editors</tt> -- receive autoreview, autoconfirmed, autopatrol, patrol, review</tt> and unreviewedpages</tt>
 * Reviewers</tt> -- receive review</tt> and validate</tt>
 * Autoreviewers</tt> -- receive autoreview</tt>

Either assign these user rights to existing user groups in LocalSettings.php:

$wgGroupPermissions['sysop']['review'] = true; //allow administrators to review revisions</tt>

or manually add user accounts to the appropriate groups via Special:UserRights. By default, Bureaucrats can add/remove both Editors and Reviewers, and Administrators can add/remove Editors.

Basic settings
FlaggedRevs.php comes with a number of configurable variables. These should be configured in LocalSettings.php.


 * - Sets what namespaces to allow for reviewing. This is an array of integers. Look at the beginning of includes/defines.php to see what integer the default namespaces map to.


 * - An associative array with keys corresponding to each flag type and values that are arrays of three settings - 'levels','quality', and 'pristine. 'levels' controls the number of review levels, while 'quality' decides what level the tag must be for a revision to be 'quality'. The same goes for 'pristine'.

''For example, for the tag configurations, suppose one wants to have "accuracy", "depth", and "tone" tags, with 3 levels each. The admin also want revisions with at least "accuracy" and "depth" of the 2nd levels to count as "quality". The following settings will do that:''

Each tag corresponds to a MediaWiki namespace page. For example, the first level of the "accuracy" tag corresponds to the text at MediaWiki:revreview-accuracy-1. This can therefore be customized.


 * - Whether the stable version is the default content for pages.
 * Individual pages can be configured to have the stable or draft version as the default content by administrators.
 * - Makes FlaggedRevs available only for pages that are set to use them by default. If a page doesn't have the stable version as the default, then it is not reviewable and there is no flagging UI for that page.

For example:
 * - Allow Editors/reviewers to add notes to the bottom of the page.
 * - An array with keys corresponding to each flag type, and values that are arrays of rights and how high users with it can rate the flags (integral tag level).


 * - Array of string titles. These titles are pages that are exempt from FlaggedRevs. They are unreviewable and have no flagging UI.

User interface

 * - When enabled, a simpler, icon based UI is used. Does not affect the tags shown in edit mode.
 * - This setting hides the review status box/bar for pages that are reviewed in their latest version. Explanatory text is also removed from some places.

Workflow
For example, to make all tags auto-reviewable up to level 1:
 * - Makes users in these groups see the current revision by default.
 * - If enabled, Editors will jump to the diff against the last stable version after they make edits, unless it could be auto-reviewed or the page has no stable version.
 * - If enabled, every edit by a reviewer user is automatically reviewed upon save. There is no need to hit the "submit review" button. This feature requires that the previous revision was also reviewed. Otherwise, auto review will be disabled.
 * - If  is enabled, this settings controls how high each tag can be auto-reviewed. If allowed, tags will be auto-reviewed to the same level the previous revision tags were. This is an associative array; each key is a tag and each value is a tag level.
 * Changes in templates and images are auto-reviewed (per-page). This could possibly cause bad versions to be reviewed. Users should be encouraged to use preview or review the page after saving. You may want to set  and   as   or  ;
 * - Whether to automatically review new pages by editors to the basic minimal level.

Automatic user promotion

 * - An array with keys for days, edits, time spacing, benchmarks, emailconfirmed, recent content page edits, total content edits, content pages edited, edit summaries used, IP uniqueness, and userpage existence as keys. The values correspond to how many days/edits are needed for a user account to be autopromoted to Editor status and whether they must be emailconfirmed and have a user page do so. The user must have at least X edits that are Y or more days apart, where X is the number of benchmarks and Y is the time spacing. Set this variable to false to disable this entirely.
 * If a user has their Editor rights removed, they will not automatically be re-granted (the editor status log is checked for revocations).
 * Some of these counts are not retroactive, so you may notice a delay in promotions.

For example, for $wgFlaggedRevsAutopromote, one might have:

Site access

 * - For sites that restrict viewing of the wiki, this setting makes the stable version of pages visible to people in certain groups (or all visitors). This variable is an array of user groups. Setting it to  will let all visitors be able to see the stable version of pages. To restrict viewing of your wiki, set   and  . This is useful for smaller wikis with an internal team of writers/editors.
 * This does not work well with img_auth.php, as non-user viewers will not be able to see images. You will probably just want to leave images public but under hashed directories to make them harder to find. This is acceptable if there are no private files and the main concern is just not to release unverified content.
 * This will probably be useless without having.
 * Make sure that  is set properly. You will at least want something like  . You may also want visible directory or category pages. Otherwise, the wiki will be hard to browse for readers.
 * Use  to allow viewing of all talk pages by these users.
 * You will probably want to edit MediaWiki:loginreqpagetext to make it more detailed. It will come up in various situations and thus should explain the approval system setup.

Advanced
See FlaggedRevs.php for a complete list of configuration options (with some explanatory comments). Be sure to change only localsettings.php to set configuration options rather than editing this file.

Use

 * See also: Help:FlaggedRevs

Approving pages
Users with some level of review status will have a small rating form on page view and diffs that lets them review revisions. Each tag must at least meet the minimal level of approval. Users should look at the whole page, included templates and images, before reviewing. The (diff to stable) link is very useful for speeding up this process.

A user cannot review a page he cannot edit. They cannot lower the level of a revision from a level they cannot set. Blocked users cannot do anything.



At Special:Stableversions, you can list out all of the reviewed revisions for a certain page or view reviewed revisions.



Upkeep
At Special:Unreviewedpages, there is a list of pages that have not yet been reviewed, for Editors only. A namespace must be selected and an optional category filter is also present.



At Special:OldReviewedpages, there is a list of pages that have been reviewed, but have edits pending. This is for Editors only. An optional category filter is also present.



Pages that cannot be reviewed can still be patrolled for anti-vandalism purposes by Editors to see what has been checked already.

A list of reviewed pages at the main review levels can be found at Special:Reviewedpages.



Logging
All relevant actions are permanently logged, so everything can be tracked and overseen properly.


 * A log of promotion/demotion of editors and the reasons is kept at Special:Log/userrights.
 * A log of the approval/unapproval of revisions is kept at Special:Log/review.
 * A log of changes to the stable versioning configuration to pages is logged at Special:Log/stable.

Also, a new page, Special:QualityOversight shows only flaggings log entries related to quality revisions. This is useful if the main log is too flooded with page "sightings".

API
FlaggedRevs adds API modules for reviewing revisions and configuring "stabilization" of pages, a module for retrieving flag configuration, and three list modules corresponding to the special pages for reviewed pages, unreviewed pages and "old" reviewed pages.

action = review
Reviews a page.


 * Parameters
 * : The revision ID for which to set the flags
 * : An edit token retrieved through prop=info
 * : Comment for the review (optional)
 * : Set the flag named "accuracy" to the specified value; (replace "accuracy" with the flag name to set another flag)


 * Example

action = stabilize
Changes page stabilization settings.


 * Parameters
 * : Title of page to be stabilized
 * : Reason for stabilization
 * : Default revision to show (latest | stable)
 * : Which stable revision should be shown (pristine | quality | latest). Default: quality
 * : Whether to restrict auto-review to administrators (sysop | none). Default: none
 * : (Deprecated?) Stabilization expiry. Default: infinite
 * : Whether to auto-review the page
 * : Whether to watch the page
 * : An edit token retrieved through prop=info


 * Example

action = flagconfig
Shows information about review flag configuration.

The following parameters are returned for each tag:
 * : the name of the flag
 * : the number of possible levels the flag has (not counting the "unreviewed" level)
 * : level the flag must be for the revision to be considered "quality"
 * : level the flag must be for the revision to be considered "pristine"

The displayed name for each flag and the different level names for each flag are MediaWiki messages, so can be set and retrieved through the appropriate page; for example the name for the first level of the "accuracy" flag is located at MediaWiki:revreview-accuracy-1.


 * Example

list = reviewedpages
Lists pages that have been reviewed.


 * Parameters
 * : Start listing at this page id.
 * : Stop listing at this page id.
 * : In which direction to list.
 * : The namespaces to enumerate.
 * : How to filter for redirects
 * : How to filter by quality (0=sighted,1=quality)
 * : How many total pages to return.


 * Example

list = unreviewedpages
Lists pages which have never been reviewed.


 * Parameters
 * : Start listing at this page title.
 * : Stop listing at this page title.
 * : The namespaces to enumerate.
 * : How to filter for redirects
 * : How to filter by quality (0=sighted,1=quality)
 * : How many total pages to return.


 * Example

list = oldreviewedpages
Lists pages that have at some point been reviewed, but for which the most recent revision is not reviewed.


 * Parameters
 * : Start listing from this timestamp
 * : Stop listing at this timestamp.
 * : In which direction to list.
 * : The namespaces to enumerate.
 * : How to filter for redirects
 * : How many total pages to return.


 * Example

Limitations

 * Transclusions across wikis are not stabilized
 * External images (aside from Commons) are not stabilized
 * Metatemplates that conditionally include other templates may have the condition change between the time a reviewer loaded a page and when they reviewed it. Therefore, there would be no pointers to the revision id for this different template to load from, making it blue linked. You will be notified if this happens during review.

Uninstalling

 * Remove the include line from LocalSettings.php
 * Drop the tables in FlaggedRevs.sql.
 * Drop the columns 'page_ext_reviewed', 'page_ext_quality', and 'page_ext_stable', and the index 'ext_namespace_reviewed' from the page table (if they exist, only older versions used these)
 * Run maintenance/refreshLinks.php</tt> from the command line to flush out the stable version links
 * Run maintenance/rebuildFileCache.php 0 overwrite</tt> from the command line if you use $wgFileCache

Testing platforms

 * English
 * Deutsch
 * Polski

Licensing
© GPL, Aaron Schulz, Joerg Baach, 2007