| Flagged Revisions is complex, poorly documented, very clunky, and not recommended for production use, despite the "stable" tag. This extension has not been deployed (newly installed) to any Wikimedia wikisince 2014. SeeCode stewardship review: FlaggedRevs. As of 2025,Extension:Approved Revs has a similar purpose and is reasonably maintained, although much less advanced (no rating). Other alternatives are listed onContent approval extensions. |
TheFlagged Revisions extension allows forEditor andReviewer 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 aContent Management System (CMS).
FlaggedRevs folder to yourextensions/ directory.cdextensions/gitclonehttps://gerrit.wikimedia.org/r/mediawiki/extensions/FlaggedRevswfLoadExtension('FlaggedRevs');
If you are using Apache 2.3.12 or later, you should setAllowEncodedSlashes to"NoDecode".Add the following line to your<VirtualHost> or, if you don't have one, at the end of yourhttpd.conf file:
AllowEncodedSlashes NoDecode
After you editedhttpd.conf, Apache needs to be restarted.
If you areshortening your URLs, you need to add an exception to.htaccess to allow the use of theREST API.
FlaggedRevs calls onrest.php. For example:
https://[domain]/w/rest.php/flaggedrevs/internal/review/Main_Page
If the.htaccess conditions are not properly set when the above URL is called, FlaggedRevs willliterally 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 OnRewriteCond %{REQUEST_URI} !^/w/rest\.phpRewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-fRewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-dRewriteRule ^(.*)$ w/index.php?title=$1 [L,QSA]RewriteRule ^$ w/index.php [L,QSA]After FlaggedRevs is first installed, no user can see the reviewer's widget.To fix this, login as a wiki bureaucrat and go toSpecial:UserRights, then grant review rights to one or more users.Reviewers will see the reviewer's widget on the bottom of an editable page.
/var/www/mediawiki.For a scheduled collection of article review statistics (viewable at Special:ValidationStatistics), create acron job to runextensions/FlaggedRevs/maintenance/updateStats.php at a regular interval.Runtime php updateStats.php to see how long the script takes to run and set your cron jobs interval appropriately.For example, to create a cron job that runsupdateStats.php every hour, add the following to the crontab for the user running the web server (e.g.,www-data):
@hourly php /var/www/mediawiki/extensions/FlaggedRevs/maintenance/updateStats.php
Parts of this page (those related to features removed in master version) areoutdated. It was written for an older version of MediaWiki and may not apply to the most recent version. If you have checked or updated this page and found the content to be suitable, please remove this notice. See thetalk page for a possible discussion on this. |
By default, nobody can review anything, so the first step is to set up user rights.
| User groups | User rights |
|---|---|
| reviewer | validate |
| review | |
| editor | |
| autoreview | |
| unreviewedpages |
FlaggedRevs creates the following new user rights:
review – user can review revisionsvalidate – user can review revisions and can set all tags to all levelsautoreview – any new revisions made by the user are automatically marked as sightedautoreviewrestore – autoreview of the rollbacks made by the user.unreviewedpages – user can viewSpecial:UnreviewedPagesstablesettings – user can changes the settings of stable revisions of any pagemovestable – user can move pages with stable revisionsFlaggedRevs creates the following new user groups:
editor – receiveautoreview, review, unreviewedpages, plus thestandard MediaWiki user rightsautoconfirmed, editsemiprotectedreviewer – receiveautoreview, review, unreviewedpages, validate, plus thestandard MediaWiki user rightsautoconfirmed, editsemiprotectedautoreview – receiveautoreviewUser rights can be assigned in two ways:
LocalSettings.php:$wgGroupPermissions['sysop']['review']=true;//allow administrators to review revisions
FlaggedRevs.php comes with a number of configurable variables.These should be configured inLocalSettings.php.
$wgFlaggedRevsNamespaces – Sets what namespaces may be subject to the review process. This is an array of integers. SeeManual:Namespace constants to see what integer the default namespaces map to and use the defined constants for readability.$wgFlaggedRevsTags – Sets the tags and theirlevels setting.$wgFlaggedRevsTags is a bidimensional associative array with keys corresponding to each tag name. Values are associative arrays, whose only meaningful/supported element (as of 2025 (MediaWiki 1.43)) islevels, which contains an integer controlling the number of review levels.$wgFlaggedRevsTags 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 ofMediaWiki:revreview-accuracy| tag | level | labeling page | content |
|---|---|---|---|
| accuracy | 0 | MediaWiki:revreview-accuracy-0 | Inadequate |
| 1 | MediaWiki:revreview-accuracy-1 | Spot checked | |
| 2 | MediaWiki:revreview-accuracy-2 | Accurate |
| tag names | level names | ||
|---|---|---|---|
| Accuracy | Inadequate | Spot checked | Accurate |
$wgFlaggedRevsOverride – Whether the stable version is the default content for pages.$wgFlaggedRevsTagsRestrictions – 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).$wgFlaggedRevsTagsRestrictions=['accuracy'=>['review'=>1],];
$wgSimpleFlaggedRevsUI – When enabled, a simpler, icon based UI is used. Does not affect the tags shown in edit mode.$wgFlaggedRevsLowProfile – 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.$wgFlaggedRevsAutoReview – 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.$wgFlaggedRevsTagsAuto – IfwgFlaggedRevsAutoReview 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.$wgFlaggedRevsTagsAuto=['accuracy'=>1];
$wgNamespaceProtection[NS_TEMPLATE] as['editor'] or['autoconfirmed']$wgFlaggedRevsAutopromote – 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 toEditor 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 tofalse to disable this entirely.$wgFlaggedRevsAutopromote, one might have:$wgFlaggedRevsAutopromote['days']=60;# days since registration$wgFlaggedRevsAutopromote['edits']=150;# total edit count$wgFlaggedRevsAutopromote['excludeDeleted']=true;# exclude deleted edits from 'edits' count above?$wgFlaggedRevsAutopromote['spacing']=3;# spacing of edit intervals$wgFlaggedRevsAutopromote['benchmarks']=15;# how many edit intervals are needed?$wgFlaggedRevsAutopromote['recentContentEdits']=10;# $wgContentNamespaces edits in recent changes$wgFlaggedRevsAutopromote['totalContentEdits']=30;# $wgContentNamespaces edits$wgFlaggedRevsAutopromote['uniqueContentPages']=10;# $wgContentNamespaces unique pages edited$wgFlaggedRevsAutopromote['editComments']=5;# how many edit comments used?$wgFlaggedRevsAutopromote['email']=true;# user must be emailconfirmed?$wgFlaggedRevsAutopromote['userpageBytes']=0;# if userpage is needed, what is the min size?
$wgFlaggedRevsRestrictionLevels - Restriction levels forautoreview/review 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.$wgFlaggedRevsProtection - Set this to use FlaggedRevsonly as a protection-like mechanism (Help:Pending changes), rather than the standard configuration.$wgFlaggedRevsAutoConfirm - Define when users get to have their own edits auto-reviewed. Set tofalse to disable.$wgFlaggedRevsHandleIncludes - Whether to use stable versions of templates when rendering the stable version of a page.To have a wiki where non-users canonly see the stable version of articles, seeExtension:FlaggedRevs/Restricting unapproved revisions.
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.[clarification needed]When reviewing, users should look at the whole page, including templates and images.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.[clarification needed]Blocked users cannot do anything.
AtSpecial:UnreviewedPages, there is a list of pages that have not yet been reviewed, forEditors only.A namespace must be selected and an optional category filter is also present.
AtSpecial:OldReviewedPages, there is a list of pages that have been reviewed, but have edits pending.This is forEditors only.An optional category filter is also present.
Pages that cannot be reviewed can still be patrolled for anti-vandalism purposes byEditors to see what has been checked already.
All relevant actions are permanently logged, so everything can be tracked and overseen properly.
$wgUseRCPatrol is enabled with the extension. Patrolling of reviewable pages is disabled, butflagged revisions are marked as patrolled in Recent Changes. This will mean that the only way to patrol a reviewable revision is to flag it. Non-reviewable pages still behave as normal (depending on site patrol settings).$wgGroupPermissions['sysop']['stablesettings']=false; toLocalSettings.php.$wgGroupPermissions['autoconfirmed']['movestable']=true; to LocalSettings.phpFlaggedRevs 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.
Reviews a page.
revid: The revision ID for which to set the flagstoken: A csrf token retrieved throughaction=query&meta=tokenscomment: Comment for the review (optional)flag_accuracy: Set the flag named "accuracy" to the specified value; (replace "accuracy" with the flag name to set another flag)unapprove: If set, revision will be unapproved rather than approved| Result |
|---|
<api><reviewrevid="12345"/></api> |
Changes page stabilization settings.
title – Title of page to be stabilizedreason – Reason for stabilizationexpiry – Stabilization expiry. Default: infinitereview – Whether to auto-review the pagewatch – Whether to watch the pagetoken – An edit token retrieved throughaction=query&meta=tokens$wgFlaggedRevsProtection=true):protectlevel – The right users must have in order for their edits tonot require review.$wgFlaggedRevsProtection=false):default – Default revision to show (latest | stable)autoreview – Restriction level for theautoreview right (sysop | none). Default: none| Result |
|---|
<api><stabilizetitle="Foo"default="stable"autoreview="none"expiry="infinite"/></api> |
Shows information about review flag configuration.
The following parameters are returned for each tag:
name – the name of the flaglevels – 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 atMediaWiki:revreview-accuracy-1.
| Result |
|---|
<api><flagconfig><tagname="value"levels="3"tier1="1"/></flagconfig></api> |
Lists pages which have never been reviewed.
urstart – Start listing at this page title.urend – Stop listing at this page title.urnamespace – The namespaces to enumerate.urfilterredir – How to filter for redirectsurfilterlevel – How to filter by quality (0=sighted,1=quality)urlimit – How many total pages to return.| Result |
|---|
<api><query-continue><unreviewedpagesurstart="Arbeitgeberverband_Chemie_und_verwandte_Industrien_für_das_Land_Hessen"/></query-continue><query><unreviewedpages><ppageid="4762806"ns="0"title="Aaftink"revid="65175047"/><ppageid="4747500"ns="0"title="Abt RS6"revid="64976429"/><ppageid="4749877"ns="0"title="Acht Vorlesungen über den Konstruktiven Realismus"revid="65089962"/><ppageid="4758156"ns="0"title="Alkylglycerole"revid="65169004"/><ppageid="4719044"ns="0"title="All Riot"revid="64767732"/><ppageid="4745418"ns="0"title="Allgäu-Panorama-Marathon"revid="64974783"/><ppageid="4729976"ns="0"title="An- und Einpressen"revid="64742640"/><ppageid="4742559"ns="0"title="Anjara I. Bartz"revid="64925772"/><ppageid="4740681"ns="0"title="Anthony Norris Groves"revid="65064712"/><ppageid="4759964"ns="0"title="Antonino Asta"revid="65169073"/></unreviewedpages></query></api> |
Lists pages that have at some point been reviewed, but for which the most recent revision is not reviewed.
orstart – Start listing from this timestamporend – Stop listing at this timestamp.ordir – In which direction to list.ornamespace – The namespaces to enumerate.orfilterredir – How to filter for redirectsorlimit – How many total pages to return.| Result |
|---|
<api><query-continue><oldreviewedpagesorstart="2009-09-15T20:23:05Z"/></query-continue><query><oldreviewedpages><ppageid="144735"ns="0"title="Two International Finance Centre"revid="64562654"stable_revid="62769201"pending_since="2009-09-15T16:16:33Z"flagged_level="0"flagged_level_text="stable"/><ppageid="1629949"ns="0"title="Porta San Sebastiano"revid="64791898"stable_revid="61610797"pending_since="2009-09-15T16:19:32Z"flagged_level="0"flagged_level_text="stable"/><ppageid="2157354"ns="0"title="Entwicklungspolitik der Europäischen Union"revid="64640078"stable_revid="59929751"pending_since="2009-09-15T16:38:33Z"flagged_level="0"flagged_level_text="stable"/><ppageid="971904"ns="0"title="Federpendel"revid="65142775"stable_revid="59587441"pending_since="2009-09-15T17:37:29Z"flagged_level="0"flagged_level_text="stable"/><ppageid="3106812"ns="0"title="Soultzbach-les-Bains"revid="64552516"stable_revid="60455707"pending_since="2009-09-15T19:04:07Z"flagged_level="0"flagged_level_text="stable"/><ppageid="1223029"ns="0"title="VfR Bürstadt"revid="65150048"stable_revid="62925935"pending_since="2009-09-15T19:35:30Z"flagged_level="0"flagged_level_text="stable"/><ppageid="829158"ns="0"title="GSP"revid="64553869"stable_revid="62913440"pending_since="2009-09-15T19:38:46Z"flagged_level="0"flagged_level_text="stable"/><ppageid="3453867"ns="0"title="Agios Dimitrios"revid="65103799"stable_revid="64544222"pending_since="2009-09-15T19:47:10Z"flagged_level="0"flagged_level_text="stable"/><ppageid="2583263"ns="0"title="Jörg Kudlich"revid="64554475"stable_revid="62429967"pending_since="2009-09-15T20:03:24Z"flagged_level="0"flagged_level_text="stable"/><ppageid="325478"ns="0"title="Liste deutscher Komponisten klassischer Musik"revid="65089571"stable_revid="63582610"pending_since="2009-09-15T20:21:55Z"flagged_level="0"flagged_level_text="stable"/></oldreviewedpages></query></api> |
Enumerate all pages that have custom review configurations on non-protection configurations (ie.$wgFlaggedRevsProtection=false).
cpstart – Start listing from this timestampcpend – Stop listing at this timestamp.cpdir – In which direction to list.cpnamespace – The namespaces to enumerate.cpdefault – The default page view version.cpautoreview – Review/autoreview restriction level.cplimit – How many total pages to return.| Result |
|---|
<?xml version="1.0"?><apibatchcomplete=""><continuecpstart="116"continue="-||"/><query><configuredpages><ppageid="14"ns="0"title="Aleksis Kivi"last_revid="23622851"stable_revid="23622851"stable_is_default="1"autoreview=""expiry="2026-10-17T15:17:09Z"/><ppageid="75"ns="0"title="Albert Einstein"last_revid="23633099"stable_revid="23633099"stable_is_default="1"autoreview=""expiry="2025-10-23T09:35:04Z"/><ppageid="100"ns="0"title="Buddhalaisuus"last_revid="23639747"stable_revid="23635003"stable_is_default="1"autoreview=""expiry="2026-04-23T11:23:58Z"/></configuredpages></query></api> |
Useaction=query&prop=flagged to get information about the flagging status of the given pages.
require_once orwfLoadExtension line fromLocalSettings.phpFlaggedRevs.sqlpage_ext_reviewed,page_ext_quality, andpage_ext_stable, and the indexext_namespace_reviewed from thepage table (if they exist; only older versions of FlaggedRevs used these)maintenance/refreshLinks.php from the command line to flush out the stable version linksmaintenance/rebuildFileCache.php 0 overwrite from the command line if you use$wgFileCache© Aaron Schulz, Joerg Baach, 2007
| This work isfree software; you can redistribute it and/or modify it under the terms of theGNU General Public License as published by theFree Software Foundation; either version 2 of the License, or any later version. This work is distributed in the hope that it will be useful, butwithout any warranty; without even the implied warranty ofmerchantability orfitness for a particular purpose. Seeversion 2 andversion 3 of the GNU General Public License for more details.GPLv2+GNU General Public License v2+http://www.gnu.org/copyleft/gpl.html |
| This extension is being used on one or moreWikimedia projects. This probably means that the extension is stable and works well enough to be used by such high-traffic websites. Look for this extension's name in Wikimedia'sCommonSettings.php andInitialiseSettings.php configuration files to see where it's installed. A full list of the extensions installed on a particular wiki can be seen on the wiki'sSpecial:Version page. |
| This extension is included in the following wiki farms/hosts and/or packages:This is not an authoritative list. Some wiki farms/hosts and/or packages may contain this extension even if they are not listed here. Always check with your wiki farms/hosts or bundle to confirm. |