Extension:FlaggedRevs

From MediaWiki.org
Jump to: navigation, search

To learn how to use Flagged Revisions, read Help:Extension:FlaggedRevs

MediaWiki extensions manual - list
Crystal Clear action run.png
Flagged Revisions

Release status: stable

Implementation User interface, Special page, User rights, Database, Ajax, API
Description Flagged Revisions allows for article content management by "editor" and "reviewer" classes.
Author(s) Aaron Schulz, Joerg Baach
MediaWiki 1.14+
License GPL
Download Download snapshot
Subversion [Help]

Browse source code
View code changes

Added rights

review, autoreview, validate, stablesettings, patrolother, movestable

Hooks used
UserGetRights

ArticleSaveComplete
LinksUpdateConstructed
ArticleUndelete
ArticleMergeComplete
ArticleRevisionUndeleted
ParserClearState
LocalFile::getHistory
BeforeParserFetchTemplateAndtitle
BeforeParserMakeImageLinkObj
ParserAfterTidy
OutputPageParserOutput
ArticleSaveComplete
NewRevisionFromEditComplete
userCan
LogLine
UserRights
GetAutoPromoteGroups
APIGetAllowedParams
APIQueryAfterExecute
MediaWikiPerformAction
BeforePageDisplay
ImagePageFindFile
CategoryPageView
SkinTemplateTabs
ArticleRollbackComplete
ArticleViewHeader
EditPage::showEditForm:initial
PageHistoryPager::getQueryInfo
PageHistoryLineEnding
ImagePageFileHistoryLine
ArticleUpdateBeforeRedirect
DiffViewHeader
EditPage::showEditForm:fields
PageHistoryBeforeList
InitializeArticleMaybeRedirect
HTMLCacheUpdate::doUpdate
ParserTestTables
ArticleDeleteComplete
SpecialPage_initList
UnitTestsList
SpecialNewpagesConditions
SpecialNewPagesFilters
SpecialRecentChangesFilters
SpecialWatchlistFilters

Check usage (experimental)

Flagged Revisions 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 like a Content Management System (CMS).

Contents

[edit] Setup

Note: The examples in the installation instruction are written for modern Unix-like operating systems (especially Linux and Mac OS X) and assume that MediaWiki is installed in the /var/www/mediawiki directory. If you are working on 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:

  1. Ensure that you are running MediaWiki version 1.14 or greater. If not, you will need to upgrade before you can install FlaggedRevs.
  2. Download FlaggedRevs (here). Choose a version of FlaggedRevs that matches the version of MediaWiki that you are using. For example: If you are running MediaWiki 1.16, download FlaggedRevs 1.16.
  3. Extract the downloaded file to the extensions/FlaggedRevs directory of your MediaWiki installation. For example:
    tar -xzf FlaggedRevs-MW1.16-r75373.tar.gz -C /var/www/mediawiki/extensions
  4. Ensure that image hashes are up-to-date by running the Manual:populateImageSha1.php maintenance script.[1] For example:
    php maintenance/populateImageSha1.php
  5. Make sure that the extensions/FlaggedRevs/presentation/modules/ directory is readable by the web server (so that the web server can serve the FlaggedRevs CSS, images and javascript.) For example: Assuming that the web server user does not own the extensions/FlaggedRevs/client directory, run:
    chmod o+r extensions/FlaggedRevs/client
  6. Enable collection of article review statistics.
    1. Disable on-demand statistic generation. Set $wgFlaggedRevsStatsAge = false; in LocalSettings.php. This will prevent statistics from being generated when articles are accessed (which can lead to poor performance when many articles without current statistics are accessed concurrently).
    2. Set up scheduled statistics generation. Create a cron job to run extensions/FlaggedRevs/maintenance/updateStats.php at a regular interval. Run time 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 runs updateStats.php as user www-data every hour:
      echo "@hourly php /var/www/mediawiki/extensions/FlaggedRevs/maintenance/updateStats.php" | crontab -u www-data
  7. Enable FlaggedRevs by adding the following line to LocalSettings.php
    require_once("$IP/extensions/FlaggedRevs/FlaggedRevs.php");
    
  8. Update MediaWiki's database schemas by running php /var/www/mediawiki/maintenance/update.php.
  9. 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.

[edit] Notes

  1. If the hash table is up-to-date, images can be referenced by using their hashes rather than by a name/timestamp pair. In the future, image moves may be supported by MediaWiki, which will break references that used name/timestamp pairs.

[edit] Configuration

[edit] 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
reviewer validate
review
editor
autoreview
unreviewedpages

[edit] 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
  • unreviewedpages – user can view Special:UnreviewedPages

[edit] User groups

FlaggedRevs creates the following new user groups:

  • editor – receive autoreview, review, unreviewedpages, plus the standard Mediawiki user rights autoconfirmed, autopatrol, patrol
  • reviewer – receive review and validate
  • autoreview – receive autoreview

[edit] 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 LocalSettings.php:
$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 both Editors and Reviewers
  • Administrators can add/remove Editors.

[edit] Basic settings

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

  • $wgFlaggedRevsNamespaces – 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.
  • $wgFlaggedRevsTags – 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:
$wgFlaggedRevsTags = array(
        'accuracy' => array( 'levels' => 3, 'quality' => 2, 'pristine' => 4 ),
        'depth'    => array( 'levels' => 3, 'quality' => 2, 'pristine' => 4 ),
        'tone'     => array( 'levels' => 3, 'quality' => 1, 'pristine' => 4 ),
);
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.
  • $wgFlaggedRevsOverride – Whether the stable version is the default content for pages.
    • Note Note: Individual pages can be configured to have the stable or draft version as the default content by administrators.
  • $wgFlaggedRevsComments – Allow Editors/reviewers to add notes to the bottom of the page.
  • $wgFlagRestrictions – 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).

For example:

$wgFlagRestrictions = array(
        'accuracy' => array( 'review' => 1 ),
        'depth'          => array( 'review' => 2 ),
        'style'          => array( 'review' => 3 ),
);
  • $wgFlaggedRevsWhitelist – Array of string titles. These titles are pages that are exempt from FlaggedRevs. They are unreviewable and have no flagging UI. Replace ' ' with '_' in titles (e.g. "Main page" -> "Main_page").

[edit] User interface

  • $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.

[edit] Workflow

  • $wgFlaggedRevsExceptions – Makes users in these groups see the current/draft revision by default.
  • $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 – If wgFlaggedRevsAutoReview 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.

For example, to make all tags auto-reviewable up to level 1:

$wgFlaggedRevsTagsAuto = array(
        'accuracy' => 1, 'depth' => 1, 'style' => 1
);
  • Note Note: 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 $wgNamespaceProtection[NS_IMAGE] and $wgNamespaceProtection[NS_TEMPLATE] as array('editor') or array('autoconfirmed');

[edit] 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.
    • Note Note: If a user has their Editor rights removed, they will not automatically be re-granted (the editor status log is checked for revocations).
    • Note Note: Some of these counts are not retroactive, so you may notice a delay in promotions.

For example, for $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?

[edit] 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.

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

[edit] Use

See also: Help:FlaggedRevs

[edit] 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.

Revreview2.png

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

Stableversions.PNG

[edit] 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.

Unreviewedpages.PNG

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.

OldReviewedpages.PNG

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.

Reviewedpages.PNG

[edit] 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".

[edit] Notes

  • $wgUseRCPatrol is 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 quality revision have precedence or whether the stable version is shown by default for specific pages. To disable this, add $wgGroupPermissions['sysop']['stablesettings'] = false; to localsettings.php.
  • 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.
  • You can demote Editors either temporarily by blocking them or permanently via Special:Userrights. An extra demotion log item will appear for tracking purposes.

[edit] 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.

[edit] action = review

Reviews a page.

Parameters
  • revid: The revision ID for which to set the flags
  • token: An edit token retrieved through prop=info
  • 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)
Example

Review revision 12345

<api>
  <review revid="12345" />
</api>

[edit] action = stabilize

Changes page stabilization settings.

Parameters
  • title: Title of page to be stabilized
  • reason: Reason for stabilization
  • expiry: (Deprecated?) Stabilization expiry. Default: infinite
  • review: Whether to auto-review the page
  • watch: Whether to watch the page
  • token: An edit token retrieved through prop=info
  • For protection-like configurations ($wgFlaggedRevsProtection=true):
    protectlevel: The right user's must have in order for their edits to not require review.
  • Otherwise ($wgFlaggedRevsProtection=false):
    default: Default revision to show (latest | stable)
    precedence: Which stable revision should be shown (pristine | quality | latest). Default: quality
    autoreview: Restriction level for the 'autoreview' right (sysop | none). Default: none
Example

Configure the page "Foo" such that only quality revisions are shown by default

<api>
  <stabilize title="Foo" default="stable" precedence="quality" autoreview="none" expiry="infinite" />
</api>

[edit] action = flagconfig

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)
  • tier2: level the flag must be for the revision to be considered "quality"
  • tier3: 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

Retrieve flag configuration

<api>
  <flagconfig>
    <tag name="accuracy" levels="3" tier2="2" tier3="4" />
    <tag name="depth" levels="3" tier2="1" tier3="4" />
    <tag name="style" levels="3" tier2="1" tier3="4" />
  </flagconfig>
</api>

[edit] list = reviewedpages

Lists pages that have been reviewed.

Parameters
  • rpstart: Start listing at this page id.
  • rpend: Stop listing at this page id.
  • rpdir: In which direction to list.
  • rpnamespace: The namespaces to enumerate.
  • rpfilterredir: How to filter for redirects
  • rpfilterlevel: How to filter by quality (0=sighted,1=quality)
  • rplimit: How many total pages to return.
Example

List "sighted" pages in main namespace

<api>
  <query-continue>
    <reviewedpages rpstart="14" />
  </query-continue>
  <query>
    <reviewedpages>
      <p pageid="1" ns="0" title="Alan Smithee" revid="62675112" stable_revid="62675112" flagged_level="0" flagged_level_text="stable" />
      <p pageid="3" ns="0" title="Actinium" revid="64593870" stable_revid="64593870" flagged_level="0" flagged_level_text="stable" />
      <p pageid="5" ns="0" title="Ang Lee" revid="64742530" stable_revid="64742530" flagged_level="0" flagged_level_text="stable" />
      <p pageid="6" ns="0" title="Andy Warhol" revid="65008103" stable_revid="65008103" flagged_level="0" flagged_level_text="stable" />
      <p pageid="7" ns="0" title="Anschluss (Soziologie)" revid="59086434" stable_revid="59086434" flagged_level="0" flagged_level_text="stable" />
      <p pageid="8" ns="0" title="Anschlussfähigkeit" revid="38028819" stable_revid="38028819" flagged_level="0" flagged_level_text="stable" />
      <p pageid="10" ns="0" title="Aussagenlogik" revid="64401094" stable_revid="64401094" flagged_level="0" flagged_level_text="stable" />
      <p pageid="11" ns="0" title="Autopoiese" revid="6746470" stable_revid="6746470" flagged_level="0" flagged_level_text="stable" />
      <p pageid="12" ns="0" title="A.A." revid="6746471" stable_revid="6746471" flagged_level="0" flagged_level_text="stable" />
      <p pageid="13" ns="0" title="Liste der Autoren/A" revid="63870061" stable_revid="63870061" flagged_level="0" flagged_level_text="stable" />
    </reviewedpages>
  </query>
</api>

[edit] list = unreviewedpages

Lists pages which have never been reviewed.

Parameters
  • 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.
Example

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>

[edit] list = oldreviewedpages

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

Parameters
  • 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.
Example

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>

[edit] 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.

[edit] 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 from the command line to flush out the stable version links
  • Run maintenance/rebuildFileCache.php 0 overwrite from the command line if you use $wgFileCache

[edit] Testing platforms

[edit] See also

[edit] External links

[edit] Licensing

© GPL, Aaron Schulz, Joerg Baach, 2007

Language: English  • Italiano • 日本語
Personal tools
Namespaces
Variants
Actions
Site
Support
Download
Development
Communication
Print/export
Toolbox