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).
The extension can be retrieved directly from Git [?]:
- Browse code
- Some extensions have tags for stable releases.
- Browse tags
- Select the tag
- Click "snapshot"
- Each branch is associated with a past MediaWiki release. There is also a "master" branch containing the latest alpha version (might require an alpha version of MediaWiki).
- Browse branches
- Select a branch name
- Click "Continue"
Extract the snapshot and place it in the extensions/FlaggedRevs/ directory of your MediaWiki installation.
If you are familiar with Git and have shell access to your server, you can also obtain the extension as follows:
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/FlaggedRevs.git
/var/www/mediawikidirectory. If you are working on a different family of operating systems, you will need to use commands and file paths appropriate to the operating system.
Follow these steps to install FlaggedRevs:
- Ensure that file hashes are up-to-date by running the populateImageSha1.php maintenance script. For example:
- Download and place the file(s) in a directory called
- Add the following code at the bottom of your
wfLoadExtension( 'FlaggedRevs' );
- Run the update script which will automatically create the necessary database tables that this extension needs.
- Configure as required.
- Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.
To users running MediaWiki 1.33 or earlier:
The instructions above describe the new way of installing this extension using
If you need to install this extension on these earlier versions (MediaWiki 1.33 and earlier), instead of
wfLoadExtension( 'FlaggedRevs' );, you need to use:
- Enable collection of article review statistics.
- Set up scheduled statistics generation. Create a cron job to run
extensions/FlaggedRevs/maintenance/updateStats.phpat a regular interval. Run
time php updateStats.phpto see how long the script takes to run and set your cron jobs interval appropriately. For example, to create a cron job that runs
echo "@hourly php /var/www/mediawiki/extensions/FlaggedRevs/maintenance/updateStats.php" | crontab -u www-data -
- Set up scheduled statistics generation. Create a cron job to run
- Promote users to be 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.
- ↑ If the hash table is up-to-date, files can be referenced by using their hashes rather than by a name/timestamp pair. References that use name/timestamp pairs are broken if a file is renamed.
Parts of this page (those related to features removed in master version) are outdated.
User rights and user groups
By default, nobody can review anything, so the first step is to set up user rights.
|User groups||User rights|
FlaggedRevs creates the following new user rights:
review– user can review revisions
validate– user can review revisions and can set all tags to all levels
autoreview– any new revisions made by the user are automatically marked as sighted
autoreviewrestore– autoreview of the rollbacks made by the user.
unreviewedpages– user can view Special:UnreviewedPages
stablesettings– user can changes the settings of stable revisions of any page
movestable– user can move pages with stable revisions
FlaggedRevs creates the following new user groups:
autoreview, review, unreviewedpages, plus the standard MediaWiki user rights
autoreview, review, unreviewedpages, validate, plus the standard MediaWiki user rights
How to assign user rights
User rights can be assigned in two ways:
- Assigning rights to user groups
Assign these user rights to existing user groups in
$wgGroupPermissions['sysop']['review'] = true; //allow administrators to review revisions
- Assigning rights to specific users
Manually add user accounts to the appropriate groups via Special:UserRights.
- By default:
- Bureaucrats can add/remove Reviewers
- Administrators can add/remove both Autoreviewers and Editors.
FlaggedRevs.php comes with a number of configurable variables.
These should be configured in
$wgFlaggedRevsNamespaces– Sets what namespaces may be subject to the review process. This is an array of integers. See Manual:Namespace constants to see what integer the default namespaces map to and use the defined constants for readability.
$wgFlaggedRevsTags– Sets the tags and their 'levels' setting.
$wgFlaggedRevsTagsis 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.
- Each tag can be labeled editing the page MediaWiki:revreview-<tag-name>.
- Each tag level can be labeled editing the page MediaWiki:revreview-<tag-name>-<level-number>.
- By default, the tag is labeled as it appears in the
$wgFlaggedRevsTagsarray. 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:
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
- The resulting setup will be:
tag names level names Accuracy Inadequate Spot checked Accurate
$wgFlaggedRevsOverride– 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.
$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.
wgFlaggedRevsAutoReviewis 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 ];
- Changes in templates 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
[ 'editor' ]or
[ 'autoconfirmed' ]
Automatic user promotion
$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 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.
$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 for
reviewrights. 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 FlaggedRevs only 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 to false 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 can only see the stable version of articles, see Extension:FlaggedRevs/Restricting unapproved revisions.
- See also: Help:FlaggedRevs
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.
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.
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.
$wgUseRCPatrolis enabled with the extension. Patrolling of reviewable pages is disabled, but flagged 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).
- Sysops can change whether the stable version is shown by default for specific pages. To disable this, add
$wgGroupPermissions['sysop']['stablesettings'] = false;to
- Page links, category, image, template, language, and external links are still based on the current version of pages.
- Users cannot move pages they cannot review. This is deliberate; see task T15994. To work around this, add
$wgGroupPermissions['autoconfirmed']['movestable'] = true;to LocalSettings.php
- You can demote Editors either temporarily by blocking them or permanently via Special:UserRights. An extra demotion log item will appear for tracking purposes.
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.
Reviews a page.
revid: The revision ID for which to set the flags
token: A csrf token retrieved through action=query&meta=tokens
comment: 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
Review revision 12345
<api> <review revid="12345" /> </api>
Changes page stabilization settings.
title: Title of page to be stabilized
reason: Reason for stabilization
expiry: Stabilization expiry. Default: infinite
review: Whether to auto-review the page
watch: Whether to watch the page
token: An edit token retrieved through action=query&meta=tokens
- For protection-like configurations (
protectlevel: The right users must have in order for their edits to not require review.
- Otherwise (
default: Default revision to show (latest | stable)
autoreview: Restriction level for the 'autoreview' right (sysop | none). Default: none
Configure the page "Foo" such that only reviewed revisions are shown by default
<api> <stabilize title="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 flag
levels: 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.
Retrieve flag configuration
<api> <flagconfig> <tag name="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 redirects
urfilterlevel: How to filter by quality (0=sighted,1=quality)
urlimit: How many total pages to return.
List pages in the main namespace that have not been "sighted"
<api> <query-continue> <unreviewedpages urstart="Arbeitgeberverband_Chemie_und_verwandte_Industrien_für_das_Land_Hessen" /> </query-continue> <query> <unreviewedpages> <p pageid="4762806" ns="0" title="Aaftink" revid="65175047" /> <p pageid="4747500" ns="0" title="Abt RS6" revid="64976429" /> <p pageid="4749877" ns="0" title="Acht Vorlesungen über den Konstruktiven Realismus" revid="65089962" /> <p pageid="4758156" ns="0" title="Alkylglycerole" revid="65169004" /> <p pageid="4719044" ns="0" title="All Riot" revid="64767732" /> <p pageid="4745418" ns="0" title="Allgäu-Panorama-Marathon" revid="64974783" /> <p pageid="4729976" ns="0" title="An- und Einpressen" revid="64742640" /> <p pageid="4742559" ns="0" title="Anjara I. Bartz" revid="64925772" /> <p pageid="4740681" ns="0" title="Anthony Norris Groves" revid="65064712" /> <p pageid="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 timestamp
orend: Stop listing at this timestamp.
ordir: In which direction to list.
ornamespace: The namespaces to enumerate.
orfilterredir: How to filter for redirects
orlimit: How many total pages to return.
List pages in the main namespace with recent unreviewed revisions
<api> <query-continue> <oldreviewedpages orstart="2009-09-15T20:23:05Z" /> </query-continue> <query> <oldreviewedpages> <p pageid="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" /> <p pageid="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" /> <p pageid="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" /> <p pageid="971904" ns="0" title="Federpendel" revid="65142775" stable_revid="59587441" pending_since="2009-09-15T17:37:29Z" flagged_level="0" flagged_level_text="stable" /> <p pageid="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" /> <p pageid="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" /> <p pageid="829158" ns="0" title="GSP" revid="64553869" stable_revid="62913440" pending_since="2009-09-15T19:38:46Z" flagged_level="0" flagged_level_text="stable" /> <p pageid="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" /> <p pageid="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" /> <p pageid="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>
Use action=query&prop=flagged to get information about the flagging status of the given pages.
- 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.
- Remove the
- Drop the tables in
- Drop the columns
page_ext_stable, and the index
pagetable (if they exist; only older versions of FlaggedRevs used these)
maintenance/refreshLinks.phpfrom the command line to flush out the stable version links
maintenance/rebuildFileCache.php 0 overwritefrom the command line if you use
- Help:Patrolled edits
- Extension:Approved Revs
- Extension:Moderation – edits remain private until they're approved
- meta:Flagged Revisions#Flagged Revisions on Wikimedia projects
- Project:Editor – documentation about the user groups and rights created by this extension, while it was at use on mediawiki.org
- Quality Assurance in an Open Project – 2008 Wikimedia blog post
- Images of Flagged Revisions – Wikimedia Commons
- About Flagged Revisions – Meta-Wiki
© GPL, Aaron Schulz, Joerg Baach, 2007
|This extension is being used on one or more Wikimedia 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's CommonSettings.php and InitialiseSettings.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's Special:Version page.|
|This extension is included in the following packages and/or wiki farms:|
|This work is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or any later version. This work is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See version 2 and version 3 of the GNU General Public License for more details.|
- Stable extensions
- User interface extensions
- Special page extensions
- User rights extensions
- Database extensions
- Ajax extensions
- API extensions
- GPL licensed extensions
- Extensions in Wikimedia version control
- Extensions which add rights
- APIGetAllowedParams extensions
- APIQueryAfterExecute extensions
- ArticleDeleteComplete extensions
- ArticleMergeComplete extensions
- ArticleRevisionVisibilitySet extensions
- ArticleUndelete extensions
- ArticleUpdateBeforeRedirect extensions
- ArticleViewHeader extensions
- AutopromoteCondition extensions
- BeforePageDisplay extensions
- BeforeRevertedTagUpdate extensions
- CategoryPageView extensions
- ChangesListInsertArticleLink extensions
- ChangesListSpecialPageQuery extensions
- ChangesListSpecialPageStructuredFilters extensions
- ContribsPager::getQueryInfo extensions
- ContributionsLineEnding extensions
- DeleteAccount extensions
- DifferenceEngineViewHeader extensions
- EchoGetDefaultNotifiedUsers extensions
- EditPage::showEditForm:fields extensions
- EditPage::showEditForm:initial extensions
- EditPageBeforeEditButtons extensions
- EditPageGetCheckboxesDefinition extensions
- EditPageNoSuchSection extensions
- GetPreferences extensions
- GoogleNewsSitemap::Query extensions
- InitializeArticleMaybeRedirect extensions
- LoadExtensionSchemaUpdates extensions
- MagicWordwgVariableIDs extensions
- MakeGlobalVariablesScript extensions
- MediaWikiServices extensions
- MergeAccountFromTo extensions
- NewDifferenceEngine extensions
- PageHistoryBeforeList extensions
- PageHistoryLineEnding extensions
- PageHistoryPager::getQueryInfo extensions
- PageMoveComplete extensions
- PageSaveComplete extensions
- ParserFirstCallInit extensions
- ParserGetVariableValueSwitch extensions
- ProtectionForm::save extensions
- ProtectionForm::showLogExtract extensions
- ProtectionFormAddFormFields extensions
- RecentChange save extensions
- RevisionDataUpdates extensions
- RevisionFromEditComplete extensions
- RevisionUndeleted extensions
- RollbackComplete extensions
- ScribuntoExternalLibraries extensions
- SkinAfterContent extensions
- SkinTemplateNavigation::Universal extensions
- SpecialContributions::getForm::filters extensions
- SpecialNewPagesFilters extensions
- SpecialNewpagesConditions extensions
- SpecialPage initList extensions
- TitleGetEditNotices extensions
- UserGetRights extensions
- UserLoadAfterLoadFromSession extensions
- UserMergeAccountFields extensions
- WikiExporter::dumpStableQuery extensions
- GetUserPermissionsErrors extensions
- All extensions
- Outdated pages
- Extensions used on Wikimedia
- Extensions included in BlueSpice
- Extensions included in Fandom
- Extensions included in Miraheze
- Extensions included in WikiForge
- Revision management extensions
- Extensions requiring shell access
- Rating extensions