Extension:FlaggedRevs

The Flagged Revisions extension 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. This allows for MediaWiki to act more like a Content Management System (CMS).

Installation
Follow these steps to install FlaggedRevs:


 * Ensure that file hashes are up-to-date by running the maintenance script.  For example:

AllowEncodedSlashes
If you are using Apache 2.3.12 or later, you should set AllowEncodedSlashes to "NoDecode". Add the following line to your  or, if you don't have one, at the end of your httpd.conf file:

AllowEncodedSlashes NoDecode

After you changed httpd.conf, Apache needs to be restarted.

Alter your .htaccess (if needed)
If you are shortening your URLs, you need to add an exception to .htaccess to allow the use of the REST API.

FlaggedRevs calls on rest.php. For example:

[domain]/w/rest.php/flaggedrevs/internal/review/Main_Page

If the .htaccess conditions are not properly set when the above url is called, FlaggedRevs will literally try to access an article named "W/rest.php/flaggedrevs/internal/review/Main Page".

Here is one way to add an exception to .htaccess, emphasis added:

RewriteEngine On RewriteCond %{REQUEST_URI} !^/w/rest\.php RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d RewriteRule ^(.*)$ w/index.php?title=$1 [L,QSA] RewriteRule ^$ w/index.php [L,QSA]

Promote users to reviewers
After FlaggedRevs is first installed, no user can see the reviewer's widget. To fix this, login as a wiki bureaucrat and go to Special:UserRights, then grant review rights to one or more users. Reviewers will see the reviewer's widget on the bottom of an editable page.

Article review statistics (optional)
For a scheduled collection of article review statistics, create a cron job to run  at a regular interval. Run  to see how long the script takes to run and set your cron jobs interval appropriately. For example, to create a cron job that runs  as user   every hour:

echo "@hourly php /var/www/mediawiki/extensions/FlaggedRevs/maintenance/updateStats.php" | crontab -u www-data -

User rights and user groups
By default, nobody can review anything, so the first step is to set up user rights.

User rights
FlaggedRevs creates the following new user rights:


 * – user can review revisions
 * – user can review revisions and can set all tags to all levels
 * – any new revisions made by the user are automatically marked as sighted
 * – autoreview of the rollbacks made by the user.
 * – user can view Special:UnreviewedPages
 * – user can changes the settings of stable revisions of any page
 * – user can move pages with stable revisions

User groups
FlaggedRevs creates the following new user groups:


 * – receive, plus the standard MediaWiki user rights
 * – receive, plus the standard MediaWiki user rights
 * – receive

How to assign user rights
User rights can be assigned in two ways:

Assign these user rights to existing user groups in  :
 * Assigning rights to user groups

Manually add user accounts to the appropriate groups via Special:UserRights.
 * Assigning rights to specific users
 * By default:
 * Bureaucrats can add/remove Reviewers
 * Administrators can add/remove both Autoreviewers and Editors.

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


 * – Sets what namespaces may be subject to the review process. This is an array of integers.  See  to see what integer the default namespaces map to and use the defined constants for readability.
 * – Sets the tags and their 'levels' setting.
 *  Definition 
 * is an associative array with keys corresponding to each tag name. The only meaningful value of the array is 'levels', which controls the number of review levels, and the array can only have one element.
 *  Labeling 
 * Each tag can be labeled editing the page  MediaWiki:revreview- &lt;tag-name>.
 * Each tag level can be labeled editing the page  MediaWiki:revreview- &lt;tag-name>-&lt;level-number>.
 * By default, the tag is labeled as it appears in the array.  To override this, and show tags for example as their capitalized name, the admins have to edit these pages with the shown content, for example changing the content of MediaWiki:revreview-accuracy


 * To label the tag levels, the admins have to create these pages with the shown content:


 * {|class="wikitable"

! tag ! level ! labeling page ! content
 * rowspan=3|accuracy
 * 0
 * MediaWiki:revreview-accuracy-0
 * 1
 * MediaWiki:revreview-accuracy-1
 * 2
 * MediaWiki:revreview-accuracy-2
 * }
 * 2
 * MediaWiki:revreview-accuracy-2
 * }
 * MediaWiki:revreview-accuracy-2
 * }
 * }


 * The resulting setup will be:


 * {|class="wikitable"

! tag names !colspan=3| level names
 * }
 * }
 * }
 * }
 * }
 * }


 * – Whether the stable version is the default content for pages.
 * – 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).
 *  Example 
 *  Example 

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

 * – If enabled, every edit by a user with 'autoreview' rights 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 not occur.
 * – 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.
 *  Example 

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.
 *  Example 
 * For, one might have:
 *  Example 
 * For, one might have:

Advanced

 * - Restriction levels for /  rights. When a level is selected for a page, an edit made by a user will not be auto-reviewed if the user lacks the specified permission. Levels are set at Special:Stabilization.
 * - Set this to use FlaggedRevs only as a protection-like mechanism (Help:Pending changes), rather than the standard configuration.
 * - Define when users get to have their own edits auto-reviewed. Set to false to disable.
 * - Whether to use stable versions of templates when rendering the stable version of a page.

To have a wiki where non-users can only see the stable version of articles, see.

Use

 *  See also: 

Approving pages
Users with some level of review status will have a small rating form on page view (at the bottom of the page) and diffs (at the top of the page) 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.

Users cannot review a page which they cannot edit. They cannot lower the level of a revision from a level they cannot set. Blocked users cannot do anything.



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.

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.

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

action=review
Reviews a page.


 * Parameters
 * : The revision ID for which to set the flags
 * : A csrf token retrieved through
 * : Comment for the review (optional)
 * : Set the flag named "accuracy" to the specified value; (replace "accuracy" with the flag name to set another flag)
 * : If set, revision will be unapproved rather than approved


 * Example

action=stabilize
Changes page stabilization settings.


 * Parameters
 * : Title of page to be stabilized
 * : Reason for stabilization
 * : Stabilization expiry. Default: infinite
 * : Whether to auto-review the page
 * : Whether to watch the page
 * : An edit token retrieved through


 * For protection-like configurations :
 * : The right users must have in order for their edits to not require review.


 * Otherwise :
 * : Default revision to show (latest | stable)
 * : Restriction level for the 'autoreview' right (sysop | none). Default: none


 * 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)

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=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

prop=flagged
Use action=query&prop=flagged to get information about the flagging status of the given pages.

Limitations

 * Transclusions across wikis 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

 * 1) Remove the  or  line from 


 * 1) Drop the tables in


 * 1) Drop the columns ,  , and  , and the index  from the  table (if they exist; only older versions of FlaggedRevs used these)


 * 1) Run  from the command line to flush out the stable version links


 * 1) Run  from the command line if you use

Testing platforms

 * 
 * 
 * 

Licensing
© GPL, Aaron Schulz, Joerg Baach, 2007