Move all FR config to an extension function
Yes, it's a hack
Reverts, or at leat partially, various recent commits
Fixes the subtasks too (or should)
Bug: T225144
Change-Id: I95616e42351d3231d2b0dbae896c6e5228f7b559
diff --git a/wmf-config/flaggedrevs.php b/wmf-config/flaggedrevs.php
index 9cb7e85..7fc86d7 100644
--- a/wmf-config/flaggedrevs.php
+++ b/wmf-config/flaggedrevs.php
@@ -16,804 +16,730 @@
include "$IP/extensions/FlaggedRevs/FlaggedRevs.php";
-///////////////////////////////////////
-// Common configuration
-// DO NOT CHANGE without hard-coding these values into the relevant wikis first.
-
-$wgSimpleFlaggedRevsUI = true;
-$wgFlaggedRevsLowProfile = true;
-$wgFlaggedRevsWhitelist = [];
-$wgFlaggedRevsOverride = true;
-$wgFlaggedRevsExceptions = [
- 'user'
-];
-$wgFlaggedRevsAutoReview = 3;
-$wgFlaggedRevsTagsAuto = [
- 'accuracy' => 1, 'depth' => 1, 'style' => 1
-];
-$wgFlaggedRevsRestrictionLevels = [ '', 'sysop' ];
-$wgFlaggedRevsProtection = false;
-$wgFlaggedRevsAutoconfirm = false;
-$wgFlaggedRevsOversightAge = 2592000;
-$wgFlaggedRevsStats = [
- 'topReviewersCount' => 5,
- 'topReviewersHours' => 1
-];
-$wgFlaggedRevsHandleIncludes = 2;
-
-$wgFlaggedRevsNamespaces = [
- 0, // NS_MAIN
- 6, // NS_FILE
- 10, // NS_TEMPLATE
- 828, // NS_MODULE
-];
-$wgFlaggedRevsTags = [
- 'accuracy' => [ 'levels' => 2, 'quality' => 2, 'pristine' => 4 ],
-];
-$wgFlaggedRevsTagsRestrictions = [
- 'accuracy' => [ 'review' => 1, 'autoreview' => 1 ],
-];
-$wgGroupPermissions['autoconfirmed']['movestable'] = true; // T16166
-
-$wmfStandardAutoPromote = [
- 'days' => 60, # days since registration
- 'edits' => 250, # total edit count
- 'excludeLastDays' => 1, # exclude the last X days of edits from below edit counts
- 'benchmarks' => 15, # number of "spread out" edits
- 'spacing' => 3, # number of days between these edits (the "spread")
- 'totalContentEdits' => 300, # edits to pages in $wgContentNamespaces
- 'totalCheckedEdits' => 200, # edits before the stable version of pages
- 'uniqueContentPages' => 14, # unique pages in $wgContentNamespaces edited
- 'editComments' => 50, # number of manual edit summaries used
- 'userpageBytes' => 0, # size of userpage (use 0 to not require a userpage)
- 'neverBlocked' => true, # username was never blocked before?
- 'maxRevertedEditRatio' => 0.03, # max fraction of edits reverted via "rollback"/"undo"
-];
-
-$wgFlaggedRevsAutopromote = false;
-
-$wgFlaggedRevsStatsAge = false;
-
-$wgGroupPermissions['editor']['review'] = true;
-$wgGroupPermissions['editor']['autoreview'] = true;
-$wgGroupPermissions['editor']['autoconfirmed'] = true;
-$wgGroupPermissions['editor']['editsemiprotected'] = true;
-$wgGroupPermissions['editor']['unreviewedpages'] = true;
-
-$wgGroupPermissions['reviewer']['validate'] = true;
-$wgGroupPermissions['reviewer']['review'] = true;
-$wgGroupPermissions['reviewer']['autoreview'] = true;
-$wgGroupPermissions['reviewer']['autoconfirmed'] = true;
-$wgGroupPermissions['reviewer']['editsemiprotected'] = true;
-$wgGroupPermissions['reviewer']['unreviewedpages'] = true;
-
-$wgGroupPermissions['sysop']['autoreview'] = true;
-$wgGroupPermissions['sysop']['stablesettings'] = false; // -aaron 3/20/10
-$wgGroupPermissions['sysop']['movestable'] = true;
-
-$wgGroupPermissions['autoreview']['autoreview'] = true;
-
-$wgGroupPermissions['bot']['autoreview'] = true;
-
-///////////////////////////////////////
-// Wiki-specific configurations
-
-if ( $wgDBname == 'alswiki' ) {
- $wgFlaggedRevsOverride = false;
- $wgGroupPermissions['sysop']['stablesettings'] = true; // -aaron 3/20/10
-} elseif ( $wgDBname == 'arwiki' ) {
- $wgFlaggedRevsWhitelist = [ 'الصفحة_الرئيسية' ];
- $wgFlaggedRevsNamespaces[] = 100; // T21332 and T217507
-
- // Change default user options
- $wgDefaultUserOptions['flaggedrevswatch'] = 1; // T220186
- $wgDefaultUserOptions['flaggedrevsviewdiffs'] = 1; // T220186
-} elseif ( $wgDBname == 'bewiki' ) {
- $wgFlaggedRevsOverride = false;
- $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
- $wgFlaggedRevsTags['accuracy']['levels'] = 1;
- $wgGroupPermissions['autoeditor']['autoreview'] = true;
- $wgGroupPermissions['autoeditor']['autoconfirmed'] = true;
- $wgGroupPermissions['sysop']['stablesettings'] = true;
-} elseif ( $wgDBname == 'bnwiki' ) { // T30717
- $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_PROJECT ];
- # Show only on a per-page basis
- $wgFlaggedRevsOverride = false;
- # We have only one tag with one level
- $wgFlaggedRevsTags = [
- 'status' => [ 'levels' => 1, 'quality' => 2, 'pristine' => 3 ],
- ];
- # Restrict autoconfirmed to flagging semi-protected
- $wgFlaggedRevsTagsRestrictions = [
- 'status' => [ 'review' => 1, 'autoreview' => 1 ],
- ];
- # Restriction levels for auto-review/review rights
- $wgFlaggedRevsRestrictionLevels = [ '', 'autoconfirmed', 'review' ];
- # Use flag "protection" levels
- $wgFlaggedRevsProtection = true;
- # Use current templates/files
- $wgFlaggedRevsHandleIncludes = /*FR_INCLUDES_CURRENT*/0;
- # Group permissions for autoconfirmed
- $wgGroupPermissions['autoconfirmed']['autoreview'] = true;
-
- # Group permissions for sysops
- $wgGroupPermissions['sysop']['review'] = true;
- $wgGroupPermissions['sysop']['stablesettings'] = true;
- # Use 'reviewer' group
- $wgAddGroups['sysop'][] = 'reviewer';
- $wgRemoveGroups['sysop'][] = 'reviewer';
- # Remove 'editor' group
- unset( $wgGroupPermissions['editor'] );
- $wgAddGroups['sysop'] = array_diff( $wgAddGroups['sysop'], [ 'editor' ] );
- $wgRemoveGroups['sysop'] = array_diff( $wgRemoveGroups['sysop'], [ 'editor' ] );
-} elseif ( $wgDBname == 'bswiki' ) { // T158662
- $wgFlaggedRevsTags = [
- 'status' => [ 'levels' => 1, 'quality' => 2, 'pristine' => 3 ],
- ];
-
- $wgGroupPermissions['sysop']['stablesettings'] = true;
- # Remove reviewer group
- unset( $wgGroupPermissions['reviewer'] );
-} elseif ( $wgDBname == 'cewiki' ) { // based on ruwiki settings
- // T58408
- $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_FILE, NS_TEMPLATE, NS_CATEGORY, 100, 828 ];
-
- $wgFlaggedRevsTags['accuracy']['levels'] = 3; // Is this needed?
- $wgFlaggedRevsOverride = false;
-
- $wgGroupPermissions['autoeditor']['autoreview'] = true;
- $wgGroupPermissions['autoeditor']['autoconfirmed'] = true;
-
- $wgGroupPermissions['sysop']['stablesettings'] = true;
-} elseif ( $wgDBname == 'ckbwiki' ) {
- # Namespaces
- $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_PROJECT, NS_HELP, NS_TEMPLATE, NS_CATEGORY, NS_FILE, 100, 102, 828 ];
- # Show only on a per-page basis
- $wgFlaggedRevsOverride = false;
- # We have only one tag with one level
- $wgFlaggedRevsTags = [
- 'status' => [ 'levels' => 1, 'quality' => 2, 'pristine' => 3 ],
- ];
- # Restrict autoconfirmed to flagging semi-protected
- $wgFlaggedRevsTagsRestrictions = [
- 'status' => [ 'review' => 1, 'autoreview' => 1 ],
- ];
- # Restriction levels for autoconfirmed, autopatrol and review rights
- $wgFlaggedRevsRestrictionLevels = [ '', 'autoconfirmed', 'autopatrol', 'review' ];
- # Use flag "protection" levels
- $wgFlaggedRevsProtection = true;
- # Use current templates/files
- $wgFlaggedRevsHandleIncludes = /*FR_INCLUDES_CURRENT*/0;
-
- # User groups permissions
- $wgGroupPermissions['autoconfirmed']['autoreview'] = true;
- $wgGroupPermissions['reviewer']['autopatrol'] = true;
- $wgGroupPermissions['reviewer']['patrol'] = true;
- $wgGroupPermissions['reviewer']['unwatchedpages'] = true;
- $wgGroupPermissions['sysop']['review'] = true;
- $wgGroupPermissions['sysop']['validate'] = true;
- $wgGroupPermissions['sysop']['stablesettings'] = true;
-
- # Remove editor and autoreview user groups
- unset( $wgGroupPermissions['editor'], $wgGroupPermissions['autoreview'] );
- $wgAddGroups['sysop'] = array_diff( $wgAddGroups['sysop'], [ 'editor', 'autoreview' ] );
- $wgRemoveGroups['sysop'] = array_diff( $wgRemoveGroups['sysop'], [ 'editor', 'autoreview' ] );
-} elseif ( $wgDBname == 'test2wiki' ) {
- $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
- $wgFlaggedRevsTags['accuracy']['levels'] = 1;
-
- $wgFlaggedRevsAutopromote = $wmfStandardAutoPromote;
- $wgFlaggedRevsAutopromote['edits'] = 300;
- $wgFlaggedRevsAutopromote['recentContentEdits'] = 5;
- $wgFlaggedRevsAutopromote['editComments'] = 30;
-
- $wgFlaggedRevsAutoconfirm = [
- 'days' => 30, # days since registration
- 'edits' => 50, # total edit count
- 'spacing' => 3, # spacing of edit intervals
- 'benchmarks' => 7, # how many edit intervals are needed?
- 'excludeLastDays' => 2, # exclude the last X days of edits from edit counts
- // Either totalContentEdits reqs OR totalCheckedEdits requirements needed
- 'totalContentEdits' => 150, # $wgContentNamespaces edits OR...
- 'totalCheckedEdits' => 50, # ...Edits before the stable version of pages
- 'uniqueContentPages' => 8, # $wgContentNamespaces unique pages edited
- 'editComments' => 20, # how many edit comments used?
- 'email' => false, # user must be emailconfirmed?
- 'neverBlocked' => true, # Can users that were blocked be promoted?
- ];
-
- $wgGroupPermissions['sysop']['stablesettings'] = true; // -aaron 3/20/10
-} elseif ( $wgDBname == 'cawikinews' ) {
- $wgFlaggedRevsNamespaces[] = 102; // T36135
-
- $wgGroupPermissions['editor']['autopatrol'] = true; // T95085
-
- $wgGroupPermissions['reviewer'] = array_merge( $wgGroupPermissions['reviewer'], [
- 'autopatrol' => true, // T95085
- 'patrol' => true, // T95085
- ] );
-
- $wgGroupPermissions['sysop'] = array_merge( $wgGroupPermissions['sysop'], [
- 'stablesettings' => true, // T36135
- 'review' => true, // T95085
- 'validate' => true, // T95085
- 'unreviewedpages' => true, // T95085
- ] );
-}
-
-// New deployment 2008-05-03
- elseif ( $wgDBname == 'dewiki' ) {
- $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
- $wgFlaggedRevsTags['accuracy']['levels'] = 1;
-
- $wgFlaggedRevsAutopromote = $wmfStandardAutoPromote;
- $wgFlaggedRevsAutopromote['edits'] = 300;
- $wgFlaggedRevsAutopromote['recentContentEdits'] = 5;
- $wgFlaggedRevsAutopromote['editComments'] = 30;
-
- $wgFlaggedRevsAutoconfirm = [
- 'days' => 30, # days since registration
- 'edits' => 50, # total edit count
- 'spacing' => 3, # spacing of edit intervals
- 'benchmarks' => 7, # how many edit intervals are needed?
- 'excludeLastDays' => 2, # exclude the last X days of edits from edit counts
- // Either totalContentEdits reqs OR totalCheckedEdits requirements needed
- 'totalContentEdits' => 150, # $wgContentNamespaces edits OR...
- 'totalCheckedEdits' => 50, # ...Edits before the stable version of pages
- 'uniqueContentPages' => 8, # $wgContentNamespaces unique pages edited
- 'editComments' => 20, # how many edit comments used?
- 'email' => false, # user must be emailconfirmed?
- 'neverBlocked' => true, # Can users that were blocked be promoted?
- ];
-
- $wgGroupPermissions['sysop']['stablesettings'] = true; // -aaron 3/20/10
- } elseif ( $wgDBname == 'dewikiquote' ) {
- $wgFlaggedRevsOverride = false;
- } elseif ( $wgDBname == 'dewiktionary' ) {
- $wgFlaggedRevsOverride = false;
- $wgFlaggedRevsTags['accuracy']['levels'] = 1;
- // T67316, T76657
- $wgFlaggedRevsNamespaces[] = 102;
- $wgFlaggedRevsNamespaces[] = 104;
- $wgFlaggedRevsNamespaces[] = 106;
- $wgFlaggedRevsNamespaces[] = 108;
-
- $wgFlaggedRevsAutoconfirm = [ // T46103
- 'days' => 60,
- 'totalContentEdits' => 250,
- 'totalCheckedEdits' => 50,
- 'excludeLastDays' => 2,
- 'uniqueContentPages' => 50,
- 'neverBlocked' => true,
- 'edits' => 1,
- 'editComments' => 1,
- 'spacing' => 1,
- 'benchmarks' => 1,
- 'email' => false
- ];
- } elseif ( $wgDBname == 'enwiki' ) {
- $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_PROJECT ];
- # Show only on a per-page basis
- $wgFlaggedRevsOverride = false;
- # We have only one tag with one level
- $wgFlaggedRevsTags = [
- 'status' => [ 'levels' => 1, 'quality' => 2, 'pristine' => 3 ],
- ];
- # Restrict autoconfirmed to flagging semi-protected
- $wgFlaggedRevsTagsRestrictions = [
- 'status' => [ 'review' => 1, 'autoreview' => 1 ],
- ];
- # Restriction levels for auto-review/review rights
- $wgFlaggedRevsRestrictionLevels = [ '', 'autoconfirmed' ];
- # Use flag "protection" levels
- $wgFlaggedRevsProtection = true;
- # Use current templates/files
- $wgFlaggedRevsHandleIncludes = /*FR_INCLUDES_CURRENT*/0;
- # Group permissions for autoconfirmed
- $wgGroupPermissions['autoconfirmed']['autoreview'] = true;
-
- # Group permissions for sysops
- $wgGroupPermissions['sysop']['review'] = true;
- $wgGroupPermissions['sysop']['stablesettings'] = true;
- # Use 'reviewer' group
- $wgAddGroups['sysop'][] = 'reviewer';
- $wgRemoveGroups['sysop'][] = 'reviewer';
- # Remove 'editor' and 'autoreview' (T91934) user groups
- unset( $wgGroupPermissions['editor'], $wgGroupPermissions['autoreview'] );
- $wgAddGroups['sysop'] = array_diff( $wgAddGroups['sysop'], [ 'editor', 'autoreview' ] );
- $wgRemoveGroups['sysop'] = array_diff( $wgRemoveGroups['sysop'], [ 'editor', 'autoreview' ] );
- } elseif ( $wgDBname == 'enwikibooks' ) {
- $wgFlaggedRevsOverride = false;
- // Cookbook, WikiJunior
- $wgFlaggedRevsNamespaces[] = 102;
- $wgFlaggedRevsNamespaces[] = 110;
- $wgFlaggedRevsTags = [
- 'value' => [ 'levels' => 3, 'quality' => 2, 'pristine' => 3 ]
- ];
-
- $wgSimpleFlaggedRevsUI = false;
-
- $wgFlaggedRevsAutopromote = [
- 'days' => 30,
- 'edits' => 100,
- 'spacing' => 2,
- 'benchmarks' => 8,
- 'recentContentEdits' => 5,
- 'totalContentEdits' => 50,
- 'uniqueContentPages' => 10,
- 'editComments' => 50,
- ] + $wmfStandardAutoPromote;
-
- $wgGroupPermissions['editor']['rollback'] = true;
- $wgGroupPermissions['sysop']['review'] = true;
- $wgGroupPermissions['sysop']['stablesettings'] = true;
- $wgGroupPermissions['sysop']['validate'] = true;
-
- unset( $wgGroupPermissions['reviewer'] );
-
- } elseif ( $wgDBname == 'elwikinews' ) {
- $wgFlaggedRevsAutoReviewNew = false;
- $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
- $wgFlaggedRevsNamespaces[] = 100;
- $wgGroupPermissions['editor']['rollback'] = true;
- $wgGroupPermissions['editor']['autoreview'] = false;
- $wgGroupPermissions['sysop']['stablesettings'] = true;
- $wgGroupPermissions['sysop']['autoreview'] = false;
-
- unset( $wgGroupPermissions['reviewer'] );
- } elseif ( $wgDBname == 'enwikinews' ) {
- $wgFlaggedRevsAutoReviewNew = false; // T17639
- $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
- $wgFlaggedRevsNamespaces[] = 100;
- $wgGroupPermissions['editor']['rollback'] = true; // T21815
- $wgGroupPermissions['editor']['autoreview'] = false; // T25948
- $wgGroupPermissions['sysop']['stablesettings'] = true; // -aaron 3/20/10
- $wgGroupPermissions['sysop']['autoreview'] = false; // T25948
-
- unset( $wgGroupPermissions['reviewer'] );
- } elseif ( $wgDBname == 'eowiki' ) {
- $wgFlaggedRevsOverride = false;
- $wgFlaggedRevsTags['accuracy']['levels'] = 1;
- # Disable autopromotion of users - T150591
- $wgFlaggedRevsAutopromote = false; // T150591
- } elseif ( $wgDBname == 'fawiki' ) {
- # Namespaces
- $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_PROJECT, NS_HELP, NS_TEMPLATE, NS_CATEGORY, NS_FILE, 100, 102, 828 ];
- # Show only on a per-page basis
- $wgFlaggedRevsOverride = false;
- # We have only one tag with one level
- $wgFlaggedRevsTags = [
- 'status' => [ 'levels' => 1, 'quality' => 2, 'pristine' => 3 ],
- ];
- # Restrict autoconfirmed to flagging semi-protected
- $wgFlaggedRevsTagsRestrictions = [
- 'status' => [ 'review' => 1, 'autoreview' => 1 ],
- ];
- # Restriction levels for auto-review/review rights
- $wgFlaggedRevsRestrictionLevels = [ '', 'autoconfirmed', 'autoreview' ];
- # Use flag "protection" levels
- $wgFlaggedRevsProtection = true;
- # Use current templates/files
- $wgFlaggedRevsHandleIncludes = /*FR_INCLUDES_CURRENT*/0;
-
- # User groups permissions
- $wgGroupPermissions['rollbacker']['autoreviewrestore'] = true;
- $wgGroupPermissions['autopatrolled']['autoreview'] = true;
- $wgGroupPermissions['patroller']['autoreview'] = true;
- $wgGroupPermissions['patroller']['review'] = true;
- $wgGroupPermissions['patroller']['validate'] = true;
- $wgGroupPermissions['sysop']['review'] = true;
- $wgGroupPermissions['sysop']['validate'] = true;
- $wgGroupPermissions['sysop']['stablesettings'] = true;
-
- # Remove all user groups (editor, reviewer, autoreview)
- unset( $wgGroupPermissions['editor'], $wgGroupPermissions['reviewer'], $wgGroupPermissions['autoreview'] );
- $wgAddGroups['sysop'] = array_diff( $wgAddGroups['sysop'], [ 'editor', 'autoreview' ] );
- $wgRemoveGroups['sysop'] = array_diff( $wgRemoveGroups['sysop'], [ 'editor', 'autoreview' ] );
- $wgAddGroups['bureaucrat'] = array_diff( $wgAddGroups['bureaucrat'], [ 'reviewer' ] );
- $wgRemoveGroups['bureaucrat'] = array_diff( $wgRemoveGroups['bureaucrat'], [ 'reviewer' ] );
- } elseif ( $wgDBname == 'fawikinews' ) {
- $wgFlaggedRevsAutoReviewNew = false;
- $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
- $wgFlaggedRevsNamespaces[] = 100;
- $wgGroupPermissions['editor']['rollback'] = true;
- $wgGroupPermissions['editor']['autoreview'] = false;
- $wgGroupPermissions['sysop']['stablesettings'] = true;
- $wgGroupPermissions['sysop']['autoreview'] = false;
-
- unset( $wgGroupPermissions['reviewer'] );
- } elseif ( $wgDBname == 'fiwiki' ) {
- // $wgFlaggedRevsTags = array( 'accuracy'=>2 );
- $wgFlaggedRevsAutoReview = true;
- $wgFlaggedRevsAutoReviewNew = true;
- $wgFlaggedRevsOverride = false;
- $wgSimpleFlaggedRevsUI = false;
- $wgGroupPermissions['sysop']['review'] = true;
- $wgGroupPermissions['sysop']['stablesettings'] = true;
- $wgGroupPermissions['reviewer']['stablesettings'] = true; // T149987
- $wgGroupPermissions['sysop']['unreviewedpages'] = true;
-
- $wgFlaggedRevsTags = [
- 'accuracy' => [ 'levels' => 3, 'quality' => 3, 'pristine' => 4 ],
- ];
- $wgFlaggedRevsTagsRestrictions = [
- 'accuracy' => [ 'review' => 3, 'autoreview' => 2 ],
- ];
- } elseif ( $wgDBname == 'frwikinews' ) {
- $wgFlaggedRevsNamespaces[] = 104;
- $wgFlaggedRevsNamespaces[] = 106;
- $wgFlaggedRevsAutopromote = $wmfStandardAutoPromote;
- $wgGroupPermissions['sysop']['stablesettings'] = true;
-
- // Removed legacy groups, per T90979
- unset(
- $wgGroupPermissions['autoreview'],
- $wgGroupPermissions['editor'],
- $wgGroupPermissions['reviewer']
- );
- } elseif ( $wgDBname == 'hewikisource' ) {
- $wgFlaggedRevsNamespaces[] = 100;
- $wgFlaggedRevsNamespaces[] = 104;
- $wgFlaggedRevsNamespaces[] = 106;
- $wgFlaggedRevsNamespaces[] = 108;
- $wgFlaggedRevsNamespaces[] = 110;
- $wgFlaggedRevsNamespaces[] = 112;
- $wgFlaggedRevsTags = [ 'completeness' => 3, 'accuracy' => 3, 'formatting' => 3 ];
- $wgFlaggedRevValues = 4;
- $wgFlaggedRevsAutoReviewNew = false;
- $wgFlaggedRevsTagsRestrictions = [
- 'completeness' => [ 'review' => 3, 'autoreview' => 3 ],
- 'accuracy' => [ 'review' => 3, 'autoreview' => 3 ],
- 'formatting' => [ 'review' => 3, 'autoreview' => 3 ],
- ];
- $wgFlaggedRevsAutopromote = $wmfStandardAutoPromote;
- $wgGroupPermissions['sysop']['stablesettings'] = true; // -aaron 3/20/10
- } elseif ( $wgDBname == 'hiwiki' ) {
- // # namespaces
- $wgFlaggedRevsNamespaces[] = NS_PROJECT;
- $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
- $wgFlaggedRevsNamespaces[] = 100;
- # Show only on a per-page basis
- $wgFlaggedRevsOverride = false;
- # We have only one tag with one level
- $wgFlaggedRevsTags = [
- 'status' => [ 'levels' => 1, 'quality' => 2, 'pristine' => 3 ],
- ];
- # Restrict autoconfirmed to flagging semi-protected
- $wgFlaggedRevsTagsRestrictions = [
- 'status' => [ 'review' => 1, 'autoreview' => 1 ],
- ];
- # Restriction levels for auto-review/review rights
- $wgFlaggedRevsRestrictionLevels = [ '', 'autoconfirmed', 'review', 'sysop' ];
- # Use flag "protection" levels
- $wgFlaggedRevsProtection = true;
- # Use current templates/files
- $wgFlaggedRevsHandleIncludes = /*FR_INCLUDES_CURRENT*/0;
- # Group permissions for autoconfirmed
- $wgGroupPermissions['autoconfirmed']['autoreview'] = true;
-
- # Group permissions for sysops
- $wgGroupPermissions['sysop']['review'] = true;
- $wgGroupPermissions['sysop']['stablesettings'] = true;
-
- # Group permissions for non-reviewers
- $wgGroupPermissions['bot']['autoreview'] = true;
- # Remove 'editor' group
- unset( $wgGroupPermissions['editor'] );
- $wgAddGroups['sysop'] = array_diff( $wgAddGroups['sysop'], [ 'editor' ] );
- $wgRemoveGroups['sysop'] = array_diff( $wgRemoveGroups['sysop'], [ 'editor' ] );
- } elseif ( $wgDBname == 'huwiki' ) {
- // Test from to April to October 2018 - T121995
- $wgFlaggedRevsOverride = false;
-
- // # UI
- $wgFlaggedRevsLowProfile = false;
-
- // # namespaces
- $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
- $wgFlaggedRevsNamespaces[] = 100;
-
- // # reviewers
- $wgGroupPermissions['editor']['rollback'] = true;
- $wgGroupPermissions['sysop']['validate'] = true;
- $wgGroupPermissions['sysop']['review'] = true;
- $wgGroupPermissions['sysop']['unreviewedpages'] = true;
- $wgGroupPermissions['sysop']['patrolmarks'] = true;
- $wgGroupPermissions['sysop']['stablesettings'] = true;
- unset( $wgGroupPermissions['reviewer'] );
-
- // # non-reviewers
- $wgGroupPermissions['trusted']['autoreview'] = true;
- $wgGroupPermissions['trusted']['autopatrol'] = true;
- $wgGroupPermissions['bot']['autoreview'] = true;
-
- $wgGroupPermissions['*']['feedback'] = true;
-
- // # rights management
- $wgAddGroups['bureaucrat'][] = 'editor';
- $wgRemoveGroups['bureaucrat'][] = 'editor';
- $wgAddGroups['bureaucrat'][] = 'trusted';
- $wgRemoveGroups['bureaucrat'][] = 'trusted';
- // # Normally admins promote/demote editors...not here
- if ( is_array( $wgAddGroups['sysop'] ) ) {
- unset( $wgAddGroups['sysop'][ array_search( 'editor', $wgAddGroups['sysop'] ) ] );
- }
- if ( is_array( $wgRemoveGroups['sysop'] ) ) {
- unset( $wgRemoveGroups['sysop'][ array_search( 'editor', $wgRemoveGroups['sysop'] ) ] );
- }
-
- // # Remove 'autoreview' user group; T74055
- unset( $wgGroupPermissions['autoreview'] );
- $wgAddGroups['sysop'] = array_diff( $wgAddGroups['sysop'], [ 'autoreview' ] );
- $wgRemoveGroups['sysop'] = array_diff( $wgRemoveGroups['sysop'], [ 'autoreview' ] );
- } elseif ( $wgDBname == 'iawiki' ) {
- $wgFlaggedRevsOverride = false;
- $wgFlaggedRevsTags['accuracy']['levels'] = 1;
- } elseif ( $wgDBname == 'iswiktionary' ) {
- $wgFlaggedRevsOverride = false;
- } elseif ( $wgDBname == 'kawiki' ) {
- $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
- $wgFlaggedRevsTags['accuracy']['levels'] = 1;
- $wgGroupPermissions['trusted']['autoreview'] = true;
- } elseif ( $wgDBname == 'plwiki' ) {
- // T45617, T50043
- $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_TEMPLATE, NS_CATEGORY, NS_HELP, 100, 828 ];
- $wgFlaggedRevsTags['accuracy']['levels'] = 1;
-
- $wgFlaggedRevsAutopromote = $wmfStandardAutoPromote;
- $wgFlaggedRevsAutopromote['days'] = 90;
- $wgFlaggedRevsAutopromote['edits'] = 500;
- $wgFlaggedRevsAutopromote['spacing'] = 3;
- $wgFlaggedRevsAutopromote['benchmarks'] = 15;
- $wgFlaggedRevsAutopromote['recentContentEdits'] = 5;
- $wgFlaggedRevsAutopromote['totalContentEdits'] = 500;
- $wgFlaggedRevsAutopromote['uniqueContentPages'] = 10;
- $wgFlaggedRevsAutopromote['editComments'] = 30;
- $wgFlaggedRevsAutopromote['userpageBytes'] = 100;
- } elseif ( $wgDBname == 'plwiktionary' ) {
- $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_FILE, NS_TEMPLATE, 100, 102, 828 ]; // T55373
- } elseif ( $wgDBname == 'ptwiki' ) { // T56828
- $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_TEMPLATE, 102, 828 ];
- # Show only on a per-page basis
- $wgFlaggedRevsOverride = false;
- # We have only one tag with one level
- $wgFlaggedRevsTags = [
- 'status' => [ 'levels' => 1, 'quality' => 2, 'pristine' => 3 ],
- ];
- # Restrict autoconfirmed to flagging semi-protected
- $wgFlaggedRevsTagsRestrictions = [
- 'status' => [ 'review' => 1, 'autoreview' => 1 ],
- ];
- # Restriction levels for autoconfirmed rights
- $wgFlaggedRevsRestrictionLevels = [ '', 'autoconfirmed' ];
- # Use flag "protection" levels
- $wgFlaggedRevsProtection = true;
- # Use current templates/files
- $wgFlaggedRevsHandleIncludes = /*FR_INCLUDES_CURRENT*/0;
-
- # Group permissions
- $wgGroupPermissions['autoconfirmed']['autoreview'] = true;
- $wgGroupPermissions['autoreviewer']['review'] = true;
- $wgGroupPermissions['autoreviewer']['validate'] = true;
- $wgGroupPermissions['rollbacker']['review'] = true;
- $wgGroupPermissions['rollbacker']['validate'] = true;
- $wgGroupPermissions['eliminator']['review'] = true;
- $wgGroupPermissions['eliminator']['validate'] = true;
- $wgGroupPermissions['bureaucrat']['review'] = true;
- $wgGroupPermissions['bureaucrat']['validate'] = true;
- $wgGroupPermissions['sysop']['review'] = true;
- $wgGroupPermissions['sysop']['validate'] = true;
- $wgGroupPermissions['sysop']['stablesettings'] = true;
-
- # Remove 'editor', 'reviewer' and 'autoreview' groups
- unset( $wgGroupPermissions['editor'], $wgGroupPermissions['reviewer'], $wgGroupPermissions['autoreview'] );
- $wgAddGroups['sysop'] = array_diff( $wgAddGroups['sysop'], [ 'editor', 'reviewer' ] );
- $wgRemoveGroups['sysop'] = array_diff( $wgRemoveGroups['sysop'], [ 'editor', 'reviewer' ] );
- $wgAddGroups['bureaucrat'] = array_diff( $wgAddGroups['bureaucrat'], [ 'reviewer' ] );
- $wgRemoveGroups['bureaucrat'] = array_diff( $wgRemoveGroups['bureaucrat'], [ 'reviewer' ] );
- } elseif ( $wgDBname == 'ptwikibooks' ) {
- // Sets the most recent version as shown
- $wgFlaggedRevsOverride = false;
-
- $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_TEMPLATE, NS_HELP, NS_PROJECT, 828 ];
-
- $wgSimpleFlaggedRevsUI = false;
- $wgFlaggedRevComments = false;
-
- $wgFlaggedRevsAutopromote = [
- 'days' => 30, # days since registration
- 'edits' => 100, # total edit count
- 'excludeDeleted' => true, # exclude deleted edits from 'edits' count above?
- 'spacing' => 2, # spacing of edit intervals
- 'benchmarks' => 8, # how many edit intervals are needed?
- 'recentContentEdits' => 5, # $wgContentNamespaces edits in recent changes
- 'totalContentEdits' => 50, # $wgContentNamespaces edits
- 'uniqueContentPages' => 10, # $wgContentNamespaces unique pages edited
- 'editComments' => 50, # how many edit comments used?
- 'email' => true, # user must be emailconfirmed?
- 'userpage' => false, # user must have a userpage?
- 'uniqueIPAddress' => false, # If $wgPutIPinRC is true, users sharing IPs won't be promoted
- 'neverBlocked' => true, # Can users that were blocked be promoted?
- ] + $wmfStandardAutoPromote;
-
- $wgGroupPermissions['editor']['rollback'] = true;
- $wgGroupPermissions['sysop']['review'] = true;
- $wgGroupPermissions['sysop']['stablesettings'] = true;
- $wgGroupPermissions['sysop']['validate'] = true;
- } elseif ( $wgDBname == 'ptwikinews' ) {
- $wgFlaggedRevsAutopromote = $wmfStandardAutoPromote;
- $wgFlaggedRevsAutopromote['days'] = 30;
- $wgGroupPermissions['sysop']['stablesettings'] = true; // -aaron 3/20/10
- } elseif ( $wgDBname == 'ptwikisource' ) {
- $wgFlaggedRevsLowProfile = false;
- $wgFlaggedRevsNamespaces[] = 102;
- $wgFlaggedRevsNamespaces[] = 104;
- $wgFlaggedRevsNamespaces[] = 106;
- $wgFlaggedRevsNamespaces[] = 108;
- $wgFlaggedRevsNamespaces[] = 110;
- $wgFlaggedRevsTags['accuracy']['levels'] = 1;
- $wgFlaggedRevsAutopromote = $wmfStandardAutoPromote;
- } elseif ( $wgDBname == 'ruwiki' ) {
- // T39675, T49337
- $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_FILE, NS_TEMPLATE, NS_CATEGORY, 100, 828 ];
-
- $wgFlaggedRevsTags['accuracy']['levels'] = 3; // Is this needed?
- $wgFlaggedRevsOverride = false;
-
- // T17478
- $wgGroupPermissions['autoeditor']['autoreview'] = true;
- $wgGroupPermissions['autoeditor']['autoconfirmed'] = true;
-
- $wgGroupPermissions['sysop']['stablesettings'] = true; // -aaron 3/20/10
- } elseif ( $wgDBname == 'ruwikinews' ) {
- $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_CATEGORY, NS_TEMPLATE ];
- $wgFlaggedRevsWhitelist = [ 'Main_Page' ];
- $wgGroupPermissions['sysop']['stablesettings'] = true;
- $wgGroupPermissions['sysop']['review'] = true;
- unset( $wgGroupPermissions['reviewer'] );
- } elseif ( $wgDBname == 'ruwiktionary' ) {
- $wgFlaggedRevsNamespaces[] = NS_PROJECT;
- $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
- $wgFlaggedRevsNamespaces[] = 100;
- $wgFlaggedRevsNamespaces[] = 104;
- $wgFlaggedRevsNamespaces[] = 106;
- } elseif ( $wgDBname == 'ruwikisource' ) {
- $wgFlaggedRevsNamespaces[] = NS_HELP;
- $wgFlaggedRevsNamespaces[] = 104;
- $wgFlaggedRevsNamespaces[] = 106;
- $wgFlaggedRevsAutopromote = $wmfStandardAutoPromote;
-
- unset(
- $wgGroupPermissions['autoreview'], // T202139
- $wgGroupPermissions['reviewer'] // T205997
- );
-
- $wgGroupPermissions['sysop']['stablesettings'] = true; // -aaron 3/20/10
- } elseif ( $wgDBname == 'sqwiki' ) {
- // T44782
- //
- // - Auto-promotion for registered users. When they reach 300 edits in 10 or more
- // unique articles with a maximum of 5% reverted edits in 60 days or more since
- // registration they must be auto-promoted to reviewer group.
- // - Auto-promotion for registered users. When they reach 100 edits in 10 or more
- // unique pages with a maximum of 5% reverted edits in 30 days or more since
- // registration they must be auto-promoted to autoreviewer (or autopatrolled)
- // group.
- $wgFlaggedRevsAutopromote = $wmfStandardAutoPromote;
- $wgFlaggedRevsAutopromote['days'] = 60; # days since registration
- $wgFlaggedRevsAutopromote['edits'] = 300; # 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['uniqueContentPages'] = 10; # $wgContentNamespaces unique pages edited
- $wgFlaggedRevsAutopromote['neverBlocked'] = false; # user must be emailconfirmed?
-
- $wgFlaggedRevsAutoconfirm = [
- 'days' => 30, # days since registration
- 'edits' => 100, # total edit count
- 'spacing' => 3, # spacing of edit intervals
- 'benchmarks' => 7, # how many edit intervals are needed?
- 'excludeLastDays' => 2, # exclude the last X days of edits from edit counts
- // Either totalContentEdits reqs OR totalCheckedEdits requirements needed
- 'totalContentEdits' => 150, # $wgContentNamespaces edits OR...
- 'totalCheckedEdits' => 50, # ...Edits before the stable version of pages
- 'uniqueContentPages' => 8, # $wgContentNamespaces unique pages edited
- 'editComments' => 20, # how many edit comments used?
- 'email' => false, # user must be emailconfirmed?
- 'neverBlocked' => true, # Can users that were blocked be promoted?
- ];
-
- $wgGroupPermissions['sysop']['review'] = true;
- $wgGroupPermissions['sysop']['validate'] = true;
- } elseif ( $wgDBname == 'trwiki' ) {
- unset( $wgGroupPermissions['reviewer'] ); // T40690
- $wgAddGroups['bureaucrat'] = array_diff( $wgAddGroups['bureaucrat'], [ 'reviewer' ] ); // T40690
- $wgRemoveGroups['bureaucrat'] = array_diff( $wgRemoveGroups['bureaucrat'], [ 'reviewer' ] ); // T40690
-
- unset( $wgGroupPermissions['editor'] ); // T40690
- $wgAddGroups['sysop'] = array_diff( $wgAddGroups['sysop'], [ 'editor' ] ); // T40690
- $wgRemoveGroups['sysop'] = array_diff( $wgRemoveGroups['sysop'], [ 'editor' ] ); // T40690
-
- // T46587:
- $wgFlaggedRevsNamespaces[] = 100; // NS_PORTAL
- $wgFlaggedRevsNamespaces[] = NS_HELP;
- } elseif ( $wgDBname == 'trwikiquote' ) {
- unset( $wgGroupPermissions['reviewer'] );
- } elseif ( $wgDBname == 'ukwiki' ) {
- $wgFlaggedRevValues = 1;
- $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_FILE, NS_TEMPLATE, NS_CATEGORY, 828 ];
- $wgFlaggedRevsTags['accuracy']['levels'] = 3;
- $wgFlaggedRevsOverride = false;
- $wgGroupPermissions['sysop']['stablesettings'] = true;
- } elseif ( $wgDBname == 'plwikisource' ) {
- $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
- $wgFlaggedRevsNamespaces[] = NS_HELP;
- $wgFlaggedRevsNamespaces[] = 100;
- $wgFlaggedRevsNamespaces[] = 102;
- $wgFlaggedRevsNamespaces[] = 104;
-
- $wgFlaggedRevsAutopromote = $wmfStandardAutoPromote;
- $wgFlaggedRevsAutopromote['edits'] = 100;
- $wgFlaggedRevsAutopromote['totalContentEdits'] = 100;
- $wgFlaggedRevsAutopromote['days'] = 14;
-
- $wgGroupPermissions['editor']['rollback'] = true;
- } elseif ( $wgDBname == 'vecwiki' ) {
- $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
- $wgFlaggedRevsTags['accuracy']['levels'] = 3; // Is this needed?
- $wgFlaggedRevsOverride = false;
-
- // T17478
- $wgGroupPermissions['autoeditor']['autoreview'] = true;
- $wgGroupPermissions['autoeditor']['autoconfirmed'] = true;
-
- $wgGroupPermissions['sysop']['stablesettings'] = true; // -aaron 3/20/10
- }
-
-# All wikis...
-
-# Rights for Bureaucrats (b/c)
-if ( isset( $wgGroupPermissions['reviewer'] ) ) {
- if ( !in_array( 'reviewer', $wgAddGroups['bureaucrat'] ) ) {
- $wgAddGroups['bureaucrat'][] = 'reviewer'; // promote to full reviewers
- }
- if ( !in_array( 'reviewer', $wgRemoveGroups['bureaucrat'] ) ) {
- $wgRemoveGroups['bureaucrat'][] = 'reviewer'; // demote from full reviewers
- }
-}
-
-# Rights for Sysops
-if ( isset( $wgGroupPermissions['editor'] ) ) {
- if ( !in_array( 'editor', $wgAddGroups['sysop'] ) ) {
- $wgAddGroups['sysop'][] = 'editor'; // promote to basic reviewer (established editors)
- }
- if ( !in_array( 'editor', $wgRemoveGroups['sysop'] ) ) {
- $wgRemoveGroups['sysop'][] = 'editor'; // demote from basic reviewer (established editors)
- }
-}
-
-if ( isset( $wgGroupPermissions['autoreview'] ) ) {
- if ( !in_array( 'autoreview', $wgAddGroups['sysop'] ) ) {
- $wgAddGroups['sysop'][] = 'autoreview'; // promote to basic auto-reviewer (semi-trusted users)
- }
- if ( !in_array( 'autoreview', $wgRemoveGroups['sysop'] ) ) {
- $wgRemoveGroups['sysop'][] = 'autoreview'; // demote from basic auto-reviewer (semi-trusted users)
- }
-}
-
-/**
- * Unsets stuff we don't want setting from extension.json
- */
$wgExtensionFunctions[] = function () {
- global $wgFlaggedRevsTags, $wgFlaggedRevsTagsAuto, $wgFlaggedRevsTagsRestrictions;
+ global $wgAddGroups, $wgDBname, $wgDefaultUserOptions, $wgFlaggedRevComments,
+ $wgFlaggedRevsAutoconfirm, $wgFlaggedRevsAutopromote, $wgFlaggedRevsAutoReview,
+ $wgFlaggedRevsAutoReviewNew, $wgFlaggedRevsHandleIncludes, $wgFlaggedRevsLowProfile,
+ $wgFlaggedRevsNamespaces, $wgFlaggedRevsOverride, $wgFlaggedRevsProtection,
+ $wgFlaggedRevsRestrictionLevels, $wgFlaggedRevsStatsAge, $wgFlaggedRevsTags,
+ $wgFlaggedRevsTagsRestrictions, $wgFlaggedRevsWhitelist, $wgFlaggedRevValues,
+ $wgGroupPermissions, $wgRemoveGroups, $wgSimpleFlaggedRevsUI;
- unset( $wgFlaggedRevsTags['depth'] );
- unset( $wgFlaggedRevsTags['style'] );
+ ///////////////////////////////////////
+ // Common configuration
+ // DO NOT CHANGE without hard-coding these values into the relevant wikis first.
+ $wgFlaggedRevsNamespaces[] = 828; // NS_MODULE
+ $wgFlaggedRevsTags = [
+ 'accuracy' => [ 'levels' => 2, 'quality' => 2, 'pristine' => 4 ],
+ ];
+ $wgFlaggedRevsTagsRestrictions = [
+ 'accuracy' => [ 'review' => 1, 'autoreview' => 1 ],
+ ];
+ $wgGroupPermissions['autoconfirmed']['movestable'] = true; // T16166
- unset( $wgFlaggedRevsTagsAuto['depth'] );
- unset( $wgFlaggedRevsTagsAuto['style'] );
+ $wmfStandardAutoPromote = [
+ 'days' => 60, # days since registration
+ 'edits' => 250, # total edit count
+ 'excludeLastDays' => 1, # exclude the last X days of edits from below edit counts
+ 'benchmarks' => 15, # number of "spread out" edits
+ 'spacing' => 3, # number of days between these edits (the "spread")
+ 'totalContentEdits' => 300, # edits to pages in $wgContentNamespaces
+ 'totalCheckedEdits' => 200, # edits before the stable version of pages
+ 'uniqueContentPages' => 14, # unique pages in $wgContentNamespaces edited
+ 'editComments' => 50, # number of manual edit summaries used
+ 'userpageBytes' => 0, # size of userpage (use 0 to not require a userpage)
+ 'neverBlocked' => true, # username was never blocked before?
+ 'maxRevertedEditRatio' => 0.03, # max fraction of edits reverted via "rollback"/"undo"
+ ];
- unset( $wgFlaggedRevsTagsRestrictions['depth'] );
- unset( $wgFlaggedRevsTagsRestrictions['style'] );
+ $wgFlaggedRevsAutopromote = false;
+
+ $wgFlaggedRevsStatsAge = false;
+
+ $wgGroupPermissions['sysop']['stablesettings'] = false; // -aaron 3/20/10
+
+ ///////////////////////////////////////
+ // Wiki-specific configurations
+
+ if ( $wgDBname == 'alswiki' ) {
+ $wgFlaggedRevsOverride = false;
+ $wgGroupPermissions['sysop']['stablesettings'] = true; // -aaron 3/20/10
+ } elseif ( $wgDBname == 'arwiki' ) {
+ $wgFlaggedRevsWhitelist = [ 'الصفحة_الرئيسية' ];
+ $wgFlaggedRevsNamespaces[] = 100; // T21332 and T217507
+
+ // Change default user options
+ $wgDefaultUserOptions['flaggedrevswatch'] = 1; // T220186
+ $wgDefaultUserOptions['flaggedrevsviewdiffs'] = 1; // T220186
+ } elseif ( $wgDBname == 'bewiki' ) {
+ $wgFlaggedRevsOverride = false;
+ $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
+ $wgFlaggedRevsTags['accuracy']['levels'] = 1;
+ $wgGroupPermissions['autoeditor']['autoreview'] = true;
+ $wgGroupPermissions['autoeditor']['autoconfirmed'] = true;
+ $wgGroupPermissions['sysop']['stablesettings'] = true;
+ } elseif ( $wgDBname == 'bnwiki' ) { // T30717
+ $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_PROJECT ];
+ # Show only on a per-page basis
+ $wgFlaggedRevsOverride = false;
+ # We have only one tag with one level
+ $wgFlaggedRevsTags = [
+ 'status' => [ 'levels' => 1, 'quality' => 2, 'pristine' => 3 ],
+ ];
+ # Restrict autoconfirmed to flagging semi-protected
+ $wgFlaggedRevsTagsRestrictions = [
+ 'status' => [ 'review' => 1, 'autoreview' => 1 ],
+ ];
+ # Restriction levels for auto-review/review rights
+ $wgFlaggedRevsRestrictionLevels = [ '', 'autoconfirmed', 'review' ];
+ # Use flag "protection" levels
+ $wgFlaggedRevsProtection = true;
+ # Use current templates/files
+ $wgFlaggedRevsHandleIncludes = /*FR_INCLUDES_CURRENT*/0;
+ # Group permissions for autoconfirmed
+ $wgGroupPermissions['autoconfirmed']['autoreview'] = true;
+
+ # Group permissions for sysops
+ $wgGroupPermissions['sysop']['review'] = true;
+ $wgGroupPermissions['sysop']['stablesettings'] = true;
+ # Use 'reviewer' group
+ $wgAddGroups['sysop'][] = 'reviewer';
+ $wgRemoveGroups['sysop'][] = 'reviewer';
+ # Remove 'editor' group
+ unset( $wgGroupPermissions['editor'] );
+ $wgAddGroups['sysop'] = array_diff( $wgAddGroups['sysop'], [ 'editor' ] );
+ $wgRemoveGroups['sysop'] = array_diff( $wgRemoveGroups['sysop'], [ 'editor' ] );
+ } elseif ( $wgDBname == 'bswiki' ) { // T158662
+ $wgFlaggedRevsTags = [
+ 'status' => [ 'levels' => 1, 'quality' => 2, 'pristine' => 3 ],
+ ];
+
+ $wgGroupPermissions['sysop']['stablesettings'] = true;
+ # Remove reviewer group
+ unset( $wgGroupPermissions['reviewer'] );
+ } elseif ( $wgDBname == 'cewiki' ) { // based on ruwiki settings
+ // T58408
+ $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_FILE, NS_TEMPLATE, NS_CATEGORY, 100, 828 ];
+
+ $wgFlaggedRevsTags['accuracy']['levels'] = 3; // Is this needed?
+ $wgFlaggedRevsOverride = false;
+
+ $wgGroupPermissions['autoeditor']['autoreview'] = true;
+ $wgGroupPermissions['autoeditor']['autoconfirmed'] = true;
+
+ $wgGroupPermissions['sysop']['stablesettings'] = true;
+ } elseif ( $wgDBname == 'ckbwiki' ) {
+ # Namespaces
+ $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_PROJECT, NS_HELP, NS_TEMPLATE, NS_CATEGORY, NS_FILE, 100, 102, 828 ];
+ # Show only on a per-page basis
+ $wgFlaggedRevsOverride = false;
+ # We have only one tag with one level
+ $wgFlaggedRevsTags = [
+ 'status' => [ 'levels' => 1, 'quality' => 2, 'pristine' => 3 ],
+ ];
+ # Restrict autoconfirmed to flagging semi-protected
+ $wgFlaggedRevsTagsRestrictions = [
+ 'status' => [ 'review' => 1, 'autoreview' => 1 ],
+ ];
+ # Restriction levels for autoconfirmed, autopatrol and review rights
+ $wgFlaggedRevsRestrictionLevels = [ '', 'autoconfirmed', 'autopatrol', 'review' ];
+ # Use flag "protection" levels
+ $wgFlaggedRevsProtection = true;
+ # Use current templates/files
+ $wgFlaggedRevsHandleIncludes = /*FR_INCLUDES_CURRENT*/0;
+
+ # User groups permissions
+ $wgGroupPermissions['autoconfirmed']['autoreview'] = true;
+ $wgGroupPermissions['reviewer']['autopatrol'] = true;
+ $wgGroupPermissions['reviewer']['patrol'] = true;
+ $wgGroupPermissions['reviewer']['unwatchedpages'] = true;
+ $wgGroupPermissions['sysop']['review'] = true;
+ $wgGroupPermissions['sysop']['validate'] = true;
+ $wgGroupPermissions['sysop']['stablesettings'] = true;
+
+ # Remove editor and autoreview user groups
+ unset( $wgGroupPermissions['editor'], $wgGroupPermissions['autoreview'] );
+ $wgAddGroups['sysop'] = array_diff( $wgAddGroups['sysop'], [ 'editor', 'autoreview' ] );
+ $wgRemoveGroups['sysop'] = array_diff( $wgRemoveGroups['sysop'], [ 'editor', 'autoreview' ] );
+ } elseif ( $wgDBname == 'test2wiki' ) {
+ $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
+ $wgFlaggedRevsTags['accuracy']['levels'] = 1;
+
+ $wgFlaggedRevsAutopromote = $wmfStandardAutoPromote;
+ $wgFlaggedRevsAutopromote['edits'] = 300;
+ $wgFlaggedRevsAutopromote['recentContentEdits'] = 5;
+ $wgFlaggedRevsAutopromote['editComments'] = 30;
+
+ $wgFlaggedRevsAutoconfirm = [
+ 'days' => 30, # days since registration
+ 'edits' => 50, # total edit count
+ 'spacing' => 3, # spacing of edit intervals
+ 'benchmarks' => 7, # how many edit intervals are needed?
+ 'excludeLastDays' => 2, # exclude the last X days of edits from edit counts
+ // Either totalContentEdits reqs OR totalCheckedEdits requirements needed
+ 'totalContentEdits' => 150, # $wgContentNamespaces edits OR...
+ 'totalCheckedEdits' => 50, # ...Edits before the stable version of pages
+ 'uniqueContentPages' => 8, # $wgContentNamespaces unique pages edited
+ 'editComments' => 20, # how many edit comments used?
+ 'email' => false, # user must be emailconfirmed?
+ 'neverBlocked' => true, # Can users that were blocked be promoted?
+ ];
+
+ $wgGroupPermissions['sysop']['stablesettings'] = true; // -aaron 3/20/10
+ } elseif ( $wgDBname == 'cawikinews' ) {
+ $wgFlaggedRevsNamespaces[] = 102; // T36135
+
+ $wgGroupPermissions['editor']['autopatrol'] = true; // T95085
+
+ $wgGroupPermissions['reviewer'] = array_merge( $wgGroupPermissions['reviewer'], [
+ 'autopatrol' => true, // T95085
+ 'patrol' => true, // T95085
+ ] );
+
+ $wgGroupPermissions['sysop'] = array_merge( $wgGroupPermissions['sysop'], [
+ 'stablesettings' => true, // T36135
+ 'review' => true, // T95085
+ 'validate' => true, // T95085
+ 'unreviewedpages' => true, // T95085
+ ] );
+ } elseif ( $wgDBname == 'dewiki' ) {
+ $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
+ $wgFlaggedRevsTags['accuracy']['levels'] = 1;
+
+ $wgFlaggedRevsAutopromote = $wmfStandardAutoPromote;
+ $wgFlaggedRevsAutopromote['edits'] = 300;
+ $wgFlaggedRevsAutopromote['recentContentEdits'] = 5;
+ $wgFlaggedRevsAutopromote['editComments'] = 30;
+
+ $wgFlaggedRevsAutoconfirm = [
+ 'days' => 30, # days since registration
+ 'edits' => 50, # total edit count
+ 'spacing' => 3, # spacing of edit intervals
+ 'benchmarks' => 7, # how many edit intervals are needed?
+ 'excludeLastDays' => 2, # exclude the last X days of edits from edit counts
+ // Either totalContentEdits reqs OR totalCheckedEdits requirements needed
+ 'totalContentEdits' => 150, # $wgContentNamespaces edits OR...
+ 'totalCheckedEdits' => 50, # ...Edits before the stable version of pages
+ 'uniqueContentPages' => 8, # $wgContentNamespaces unique pages edited
+ 'editComments' => 20, # how many edit comments used?
+ 'email' => false, # user must be emailconfirmed?
+ 'neverBlocked' => true, # Can users that were blocked be promoted?
+ ];
+
+ $wgGroupPermissions['sysop']['stablesettings'] = true; // -aaron 3/20/10
+ } elseif ( $wgDBname == 'dewikiquote' ) {
+ $wgFlaggedRevsOverride = false;
+ } elseif ( $wgDBname == 'dewiktionary' ) {
+ $wgFlaggedRevsOverride = false;
+ $wgFlaggedRevsTags['accuracy']['levels'] = 1;
+ // T67316, T76657
+ $wgFlaggedRevsNamespaces[] = 102;
+ $wgFlaggedRevsNamespaces[] = 104;
+ $wgFlaggedRevsNamespaces[] = 106;
+ $wgFlaggedRevsNamespaces[] = 108;
+
+ $wgFlaggedRevsAutoconfirm = [ // T46103
+ 'days' => 60,
+ 'totalContentEdits' => 250,
+ 'totalCheckedEdits' => 50,
+ 'excludeLastDays' => 2,
+ 'uniqueContentPages' => 50,
+ 'neverBlocked' => true,
+ 'edits' => 1,
+ 'editComments' => 1,
+ 'spacing' => 1,
+ 'benchmarks' => 1,
+ 'email' => false
+ ];
+ } elseif ( $wgDBname == 'enwiki' ) {
+ $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_PROJECT ];
+ # Show only on a per-page basis
+ $wgFlaggedRevsOverride = false;
+ # We have only one tag with one level
+ $wgFlaggedRevsTags = [
+ 'status' => [ 'levels' => 1, 'quality' => 2, 'pristine' => 3 ],
+ ];
+ # Restrict autoconfirmed to flagging semi-protected
+ $wgFlaggedRevsTagsRestrictions = [
+ 'status' => [ 'review' => 1, 'autoreview' => 1 ],
+ ];
+ # Restriction levels for auto-review/review rights
+ $wgFlaggedRevsRestrictionLevels = [ '', 'autoconfirmed' ];
+ # Use flag "protection" levels
+ $wgFlaggedRevsProtection = true;
+ # Use current templates/files
+ $wgFlaggedRevsHandleIncludes = /*FR_INCLUDES_CURRENT*/0;
+ # Group permissions for autoconfirmed
+ $wgGroupPermissions['autoconfirmed']['autoreview'] = true;
+
+ # Group permissions for sysops
+ $wgGroupPermissions['sysop']['review'] = true;
+ $wgGroupPermissions['sysop']['stablesettings'] = true;
+ # Use 'reviewer' group
+ $wgAddGroups['sysop'][] = 'reviewer';
+ $wgRemoveGroups['sysop'][] = 'reviewer';
+ # Remove 'editor' and 'autoreview' (T91934) user groups
+ unset( $wgGroupPermissions['editor'], $wgGroupPermissions['autoreview'] );
+ $wgAddGroups['sysop'] = array_diff( $wgAddGroups['sysop'], [ 'editor', 'autoreview' ] );
+ $wgRemoveGroups['sysop'] = array_diff( $wgRemoveGroups['sysop'], [ 'editor', 'autoreview' ] );
+ } elseif ( $wgDBname == 'enwikibooks' ) {
+ $wgFlaggedRevsOverride = false;
+ // Cookbook, WikiJunior
+ $wgFlaggedRevsNamespaces[] = 102;
+ $wgFlaggedRevsNamespaces[] = 110;
+ $wgFlaggedRevsTags = [
+ 'value' => [ 'levels' => 3, 'quality' => 2, 'pristine' => 3 ]
+ ];
+
+ $wgSimpleFlaggedRevsUI = false;
+
+ $wgFlaggedRevsAutopromote = [
+ 'days' => 30,
+ 'edits' => 100,
+ 'spacing' => 2,
+ 'benchmarks' => 8,
+ 'recentContentEdits' => 5,
+ 'totalContentEdits' => 50,
+ 'uniqueContentPages' => 10,
+ 'editComments' => 50,
+ ] + $wmfStandardAutoPromote;
+
+ $wgGroupPermissions['editor']['rollback'] = true;
+ $wgGroupPermissions['sysop']['review'] = true;
+ $wgGroupPermissions['sysop']['stablesettings'] = true;
+ $wgGroupPermissions['sysop']['validate'] = true;
+
+ unset( $wgGroupPermissions['reviewer'] );
+
+ } elseif ( $wgDBname == 'elwikinews' ) {
+ $wgFlaggedRevsAutoReviewNew = false;
+ $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
+ $wgFlaggedRevsNamespaces[] = 100;
+ $wgGroupPermissions['editor']['rollback'] = true;
+ $wgGroupPermissions['editor']['autoreview'] = false;
+ $wgGroupPermissions['sysop']['stablesettings'] = true;
+ $wgGroupPermissions['sysop']['autoreview'] = false;
+
+ unset( $wgGroupPermissions['reviewer'] );
+ } elseif ( $wgDBname == 'enwikinews' ) {
+ $wgFlaggedRevsAutoReviewNew = false; // T17639
+ $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
+ $wgFlaggedRevsNamespaces[] = 100;
+ $wgGroupPermissions['editor']['rollback'] = true; // T21815
+ $wgGroupPermissions['editor']['autoreview'] = false; // T25948
+ $wgGroupPermissions['sysop']['stablesettings'] = true; // -aaron 3/20/10
+ $wgGroupPermissions['sysop']['autoreview'] = false; // T25948
+
+ unset( $wgGroupPermissions['reviewer'] );
+ } elseif ( $wgDBname == 'eowiki' ) {
+ $wgFlaggedRevsOverride = false;
+ $wgFlaggedRevsTags['accuracy']['levels'] = 1;
+ # Disable autopromotion of users - T150591
+ $wgFlaggedRevsAutopromote = false; // T150591
+ } elseif ( $wgDBname == 'fawiki' ) {
+ # Namespaces
+ $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_PROJECT, NS_HELP, NS_TEMPLATE, NS_CATEGORY, NS_FILE, 100, 102, 828 ];
+ # Show only on a per-page basis
+ $wgFlaggedRevsOverride = false;
+ # We have only one tag with one level
+ $wgFlaggedRevsTags = [
+ 'status' => [ 'levels' => 1, 'quality' => 2, 'pristine' => 3 ],
+ ];
+ # Restrict autoconfirmed to flagging semi-protected
+ $wgFlaggedRevsTagsRestrictions = [
+ 'status' => [ 'review' => 1, 'autoreview' => 1 ],
+ ];
+ # Restriction levels for auto-review/review rights
+ $wgFlaggedRevsRestrictionLevels = [ '', 'autoconfirmed', 'autoreview' ];
+ # Use flag "protection" levels
+ $wgFlaggedRevsProtection = true;
+ # Use current templates/files
+ $wgFlaggedRevsHandleIncludes = /*FR_INCLUDES_CURRENT*/0;
+
+ # User groups permissions
+ $wgGroupPermissions['rollbacker']['autoreviewrestore'] = true;
+ $wgGroupPermissions['autopatrolled']['autoreview'] = true;
+ $wgGroupPermissions['patroller']['autoreview'] = true;
+ $wgGroupPermissions['patroller']['review'] = true;
+ $wgGroupPermissions['patroller']['validate'] = true;
+ $wgGroupPermissions['sysop']['review'] = true;
+ $wgGroupPermissions['sysop']['validate'] = true;
+ $wgGroupPermissions['sysop']['stablesettings'] = true;
+
+ # Remove all user groups (editor, reviewer, autoreview)
+ unset( $wgGroupPermissions['editor'], $wgGroupPermissions['reviewer'], $wgGroupPermissions['autoreview'] );
+ $wgAddGroups['sysop'] = array_diff( $wgAddGroups['sysop'], [ 'editor', 'autoreview' ] );
+ $wgRemoveGroups['sysop'] = array_diff( $wgRemoveGroups['sysop'], [ 'editor', 'autoreview' ] );
+ $wgAddGroups['bureaucrat'] = array_diff( $wgAddGroups['bureaucrat'], [ 'reviewer' ] );
+ $wgRemoveGroups['bureaucrat'] = array_diff( $wgRemoveGroups['bureaucrat'], [ 'reviewer' ] );
+ } elseif ( $wgDBname == 'fawikinews' ) {
+ $wgFlaggedRevsAutoReviewNew = false;
+ $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
+ $wgFlaggedRevsNamespaces[] = 100;
+ $wgGroupPermissions['editor']['rollback'] = true;
+ $wgGroupPermissions['editor']['autoreview'] = false;
+ $wgGroupPermissions['sysop']['stablesettings'] = true;
+ $wgGroupPermissions['sysop']['autoreview'] = false;
+
+ unset( $wgGroupPermissions['reviewer'] );
+ } elseif ( $wgDBname == 'fiwiki' ) {
+ // $wgFlaggedRevsTags = array( 'accuracy' => 2 );
+ $wgFlaggedRevsAutoReview = true;
+ $wgFlaggedRevsAutoReviewNew = true;
+ $wgFlaggedRevsOverride = false;
+ $wgSimpleFlaggedRevsUI = false;
+ $wgGroupPermissions['sysop']['review'] = true;
+ $wgGroupPermissions['sysop']['stablesettings'] = true;
+ $wgGroupPermissions['reviewer']['stablesettings'] = true; // T149987
+ $wgGroupPermissions['sysop']['unreviewedpages'] = true;
+
+ $wgFlaggedRevsTags = [
+ 'accuracy' => [ 'levels' => 3, 'quality' => 3, 'pristine' => 4 ],
+ ];
+ $wgFlaggedRevsTagsRestrictions = [
+ 'accuracy' => [ 'review' => 3, 'autoreview' => 2 ],
+ ];
+ } elseif ( $wgDBname == 'frwikinews' ) {
+ $wgFlaggedRevsNamespaces[] = 104;
+ $wgFlaggedRevsNamespaces[] = 106;
+ $wgFlaggedRevsAutopromote = $wmfStandardAutoPromote;
+ $wgGroupPermissions['sysop']['stablesettings'] = true;
+
+ // Removed legacy groups, per T90979
+ unset(
+ $wgGroupPermissions['autoreview'],
+ $wgGroupPermissions['editor'],
+ $wgGroupPermissions['reviewer']
+ );
+ } elseif ( $wgDBname == 'hewikisource' ) {
+ $wgFlaggedRevsNamespaces[] = 100;
+ $wgFlaggedRevsNamespaces[] = 104;
+ $wgFlaggedRevsNamespaces[] = 106;
+ $wgFlaggedRevsNamespaces[] = 108;
+ $wgFlaggedRevsNamespaces[] = 110;
+ $wgFlaggedRevsNamespaces[] = 112;
+ $wgFlaggedRevsTags = [ 'completeness' => 3, 'accuracy' => 3, 'formatting' => 3 ];
+ $wgFlaggedRevValues = 4;
+ $wgFlaggedRevsAutoReviewNew = false;
+ $wgFlaggedRevsTagsRestrictions = [
+ 'completeness' => [ 'review' => 3, 'autoreview' => 3 ],
+ 'accuracy' => [ 'review' => 3, 'autoreview' => 3 ],
+ 'formatting' => [ 'review' => 3, 'autoreview' => 3 ],
+ ];
+ $wgFlaggedRevsAutopromote = $wmfStandardAutoPromote;
+ $wgGroupPermissions['sysop']['stablesettings'] = true; // -aaron 3/20/10
+ } elseif ( $wgDBname == 'hiwiki' ) {
+ // # namespaces
+ $wgFlaggedRevsNamespaces[] = NS_PROJECT;
+ $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
+ $wgFlaggedRevsNamespaces[] = 100;
+ # Show only on a per-page basis
+ $wgFlaggedRevsOverride = false;
+ # We have only one tag with one level
+ $wgFlaggedRevsTags = [
+ 'status' => [ 'levels' => 1, 'quality' => 2, 'pristine' => 3 ],
+ ];
+ # Restrict autoconfirmed to flagging semi-protected
+ $wgFlaggedRevsTagsRestrictions = [
+ 'status' => [ 'review' => 1, 'autoreview' => 1 ],
+ ];
+ # Restriction levels for auto-review/review rights
+ $wgFlaggedRevsRestrictionLevels = [ '', 'autoconfirmed', 'review', 'sysop' ];
+ # Use flag "protection" levels
+ $wgFlaggedRevsProtection = true;
+ # Use current templates/files
+ $wgFlaggedRevsHandleIncludes = /*FR_INCLUDES_CURRENT*/0;
+ # Group permissions for autoconfirmed
+ $wgGroupPermissions['autoconfirmed']['autoreview'] = true;
+
+ # Group permissions for sysops
+ $wgGroupPermissions['sysop']['review'] = true;
+ $wgGroupPermissions['sysop']['stablesettings'] = true;
+
+ # Group permissions for non-reviewers
+ $wgGroupPermissions['bot']['autoreview'] = true;
+ # Remove 'editor' group
+ unset( $wgGroupPermissions['editor'] );
+ $wgAddGroups['sysop'] = array_diff( $wgAddGroups['sysop'], [ 'editor' ] );
+ $wgRemoveGroups['sysop'] = array_diff( $wgRemoveGroups['sysop'], [ 'editor' ] );
+ } elseif ( $wgDBname == 'huwiki' ) {
+ // Test from to April to October 2018 - T121995
+ $wgFlaggedRevsOverride = false;
+
+ // # UI
+ $wgFlaggedRevsLowProfile = false;
+
+ // # namespaces
+ $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
+ $wgFlaggedRevsNamespaces[] = 100;
+
+ // # reviewers
+ $wgGroupPermissions['editor']['rollback'] = true;
+ $wgGroupPermissions['sysop']['validate'] = true;
+ $wgGroupPermissions['sysop']['review'] = true;
+ $wgGroupPermissions['sysop']['unreviewedpages'] = true;
+ $wgGroupPermissions['sysop']['patrolmarks'] = true;
+ $wgGroupPermissions['sysop']['stablesettings'] = true;
+ unset( $wgGroupPermissions['reviewer'] );
+
+ // # non-reviewers
+ $wgGroupPermissions['trusted']['autoreview'] = true;
+ $wgGroupPermissions['trusted']['autopatrol'] = true;
+ $wgGroupPermissions['bot']['autoreview'] = true;
+
+ $wgGroupPermissions['*']['feedback'] = true;
+
+ // # rights management
+ $wgAddGroups['bureaucrat'][] = 'editor';
+ $wgRemoveGroups['bureaucrat'][] = 'editor';
+ $wgAddGroups['bureaucrat'][] = 'trusted';
+ $wgRemoveGroups['bureaucrat'][] = 'trusted';
+ // # Normally admins promote/demote editors...not here
+ if ( is_array( $wgAddGroups['sysop'] ) ) {
+ unset( $wgAddGroups['sysop'][ array_search( 'editor', $wgAddGroups['sysop'] ) ] );
+ }
+ if ( is_array( $wgRemoveGroups['sysop'] ) ) {
+ unset( $wgRemoveGroups['sysop'][ array_search( 'editor', $wgRemoveGroups['sysop'] ) ] );
+ }
+
+ // # Remove 'autoreview' user group; T74055
+ unset( $wgGroupPermissions['autoreview'] );
+ $wgAddGroups['sysop'] = array_diff( $wgAddGroups['sysop'], [ 'autoreview' ] );
+ $wgRemoveGroups['sysop'] = array_diff( $wgRemoveGroups['sysop'], [ 'autoreview' ] );
+ } elseif ( $wgDBname == 'iawiki' ) {
+ $wgFlaggedRevsOverride = false;
+ $wgFlaggedRevsTags['accuracy']['levels'] = 1;
+ } elseif ( $wgDBname == 'iswiktionary' ) {
+ $wgFlaggedRevsOverride = false;
+ } elseif ( $wgDBname == 'kawiki' ) {
+ $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
+ $wgFlaggedRevsTags['accuracy']['levels'] = 1;
+ $wgGroupPermissions['trusted']['autoreview'] = true;
+ } elseif ( $wgDBname == 'plwiki' ) {
+ // T45617, T50043
+ $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_TEMPLATE, NS_CATEGORY, NS_HELP, 100, 828 ];
+ $wgFlaggedRevsTags['accuracy']['levels'] = 1;
+
+ $wgFlaggedRevsAutopromote = $wmfStandardAutoPromote;
+ $wgFlaggedRevsAutopromote['days'] = 90;
+ $wgFlaggedRevsAutopromote['edits'] = 500;
+ $wgFlaggedRevsAutopromote['spacing'] = 3;
+ $wgFlaggedRevsAutopromote['benchmarks'] = 15;
+ $wgFlaggedRevsAutopromote['recentContentEdits'] = 5;
+ $wgFlaggedRevsAutopromote['totalContentEdits'] = 500;
+ $wgFlaggedRevsAutopromote['uniqueContentPages'] = 10;
+ $wgFlaggedRevsAutopromote['editComments'] = 30;
+ $wgFlaggedRevsAutopromote['userpageBytes'] = 100;
+ } elseif ( $wgDBname == 'plwiktionary' ) {
+ $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_FILE, NS_TEMPLATE, 100, 102, 828 ]; // T55373
+ } elseif ( $wgDBname == 'ptwiki' ) { // T56828
+ $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_TEMPLATE, 102, 828 ];
+ # Show only on a per-page basis
+ $wgFlaggedRevsOverride = false;
+ # We have only one tag with one level
+ $wgFlaggedRevsTags = [
+ 'status' => [ 'levels' => 1, 'quality' => 2, 'pristine' => 3 ],
+ ];
+ # Restrict autoconfirmed to flagging semi-protected
+ $wgFlaggedRevsTagsRestrictions = [
+ 'status' => [ 'review' => 1, 'autoreview' => 1 ],
+ ];
+ # Restriction levels for autoconfirmed rights
+ $wgFlaggedRevsRestrictionLevels = [ '', 'autoconfirmed' ];
+ # Use flag "protection" levels
+ $wgFlaggedRevsProtection = true;
+ # Use current templates/files
+ $wgFlaggedRevsHandleIncludes = /*FR_INCLUDES_CURRENT*/0;
+
+ # Group permissions
+ $wgGroupPermissions['autoconfirmed']['autoreview'] = true;
+ $wgGroupPermissions['autoreviewer']['review'] = true;
+ $wgGroupPermissions['autoreviewer']['validate'] = true;
+ $wgGroupPermissions['rollbacker']['review'] = true;
+ $wgGroupPermissions['rollbacker']['validate'] = true;
+ $wgGroupPermissions['eliminator']['review'] = true;
+ $wgGroupPermissions['eliminator']['validate'] = true;
+ $wgGroupPermissions['bureaucrat']['review'] = true;
+ $wgGroupPermissions['bureaucrat']['validate'] = true;
+ $wgGroupPermissions['sysop']['review'] = true;
+ $wgGroupPermissions['sysop']['validate'] = true;
+ $wgGroupPermissions['sysop']['stablesettings'] = true;
+
+ # Remove 'editor', 'reviewer' and 'autoreview' groups
+ unset( $wgGroupPermissions['editor'], $wgGroupPermissions['reviewer'], $wgGroupPermissions['autoreview'] );
+ $wgAddGroups['sysop'] = array_diff( $wgAddGroups['sysop'], [ 'editor', 'reviewer' ] );
+ $wgRemoveGroups['sysop'] = array_diff( $wgRemoveGroups['sysop'], [ 'editor', 'reviewer' ] );
+ $wgAddGroups['bureaucrat'] = array_diff( $wgAddGroups['bureaucrat'], [ 'reviewer' ] );
+ $wgRemoveGroups['bureaucrat'] = array_diff( $wgRemoveGroups['bureaucrat'], [ 'reviewer' ] );
+ } elseif ( $wgDBname == 'ptwikibooks' ) {
+ // Sets the most recent version as shown
+ $wgFlaggedRevsOverride = false;
+
+ $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_TEMPLATE, NS_HELP, NS_PROJECT, 828 ];
+
+ $wgSimpleFlaggedRevsUI = false;
+ $wgFlaggedRevComments = false;
+
+ $wgFlaggedRevsAutopromote = [
+ 'days' => 30, # days since registration
+ 'edits' => 100, # total edit count
+ 'excludeDeleted' => true, # exclude deleted edits from 'edits' count above?
+ 'spacing' => 2, # spacing of edit intervals
+ 'benchmarks' => 8, # how many edit intervals are needed?
+ 'recentContentEdits' => 5, # $wgContentNamespaces edits in recent changes
+ 'totalContentEdits' => 50, # $wgContentNamespaces edits
+ 'uniqueContentPages' => 10, # $wgContentNamespaces unique pages edited
+ 'editComments' => 50, # how many edit comments used?
+ 'email' => true, # user must be emailconfirmed?
+ 'userpage' => false, # user must have a userpage?
+ 'uniqueIPAddress' => false, # If $wgPutIPinRC is true, users sharing IPs won't be promoted
+ 'neverBlocked' => true, # Can users that were blocked be promoted?
+ ] + $wmfStandardAutoPromote;
+
+ $wgGroupPermissions['editor']['rollback'] = true;
+ $wgGroupPermissions['sysop']['review'] = true;
+ $wgGroupPermissions['sysop']['stablesettings'] = true;
+ $wgGroupPermissions['sysop']['validate'] = true;
+ } elseif ( $wgDBname == 'ptwikinews' ) {
+ $wgFlaggedRevsAutopromote = $wmfStandardAutoPromote;
+ $wgFlaggedRevsAutopromote['days'] = 30;
+ $wgGroupPermissions['sysop']['stablesettings'] = true; // -aaron 3/20/10
+ } elseif ( $wgDBname == 'ptwikisource' ) {
+ $wgFlaggedRevsLowProfile = false;
+ $wgFlaggedRevsNamespaces[] = 102;
+ $wgFlaggedRevsNamespaces[] = 104;
+ $wgFlaggedRevsNamespaces[] = 106;
+ $wgFlaggedRevsNamespaces[] = 108;
+ $wgFlaggedRevsNamespaces[] = 110;
+ $wgFlaggedRevsTags['accuracy']['levels'] = 1;
+ $wgFlaggedRevsAutopromote = $wmfStandardAutoPromote;
+ } elseif ( $wgDBname == 'ruwiki' ) {
+ // T39675, T49337
+ $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_FILE, NS_TEMPLATE, NS_CATEGORY, 100, 828 ];
+
+ $wgFlaggedRevsTags['accuracy']['levels'] = 3; // Is this needed?
+ $wgFlaggedRevsOverride = false;
+
+ // T17478
+ $wgGroupPermissions['autoeditor']['autoreview'] = true;
+ $wgGroupPermissions['autoeditor']['autoconfirmed'] = true;
+
+ $wgGroupPermissions['sysop']['stablesettings'] = true; // -aaron 3/20/10
+ } elseif ( $wgDBname == 'ruwikinews' ) {
+ $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_CATEGORY, NS_TEMPLATE ];
+ $wgFlaggedRevsWhitelist = [ 'Main_Page' ];
+ $wgGroupPermissions['sysop']['stablesettings'] = true;
+ $wgGroupPermissions['sysop']['review'] = true;
+ unset( $wgGroupPermissions['reviewer'] );
+ } elseif ( $wgDBname == 'ruwiktionary' ) {
+ $wgFlaggedRevsNamespaces[] = NS_PROJECT;
+ $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
+ $wgFlaggedRevsNamespaces[] = 100;
+ $wgFlaggedRevsNamespaces[] = 104;
+ $wgFlaggedRevsNamespaces[] = 106;
+ } elseif ( $wgDBname == 'ruwikisource' ) {
+ $wgFlaggedRevsNamespaces[] = NS_HELP;
+ $wgFlaggedRevsNamespaces[] = 104;
+ $wgFlaggedRevsNamespaces[] = 106;
+ $wgFlaggedRevsAutopromote = $wmfStandardAutoPromote;
+
+ unset(
+ $wgGroupPermissions['autoreview'], // T202139
+ $wgGroupPermissions['reviewer'] // T205997
+ );
+
+ $wgGroupPermissions['sysop']['stablesettings'] = true; // -aaron 3/20/10
+ } elseif ( $wgDBname == 'sqwiki' ) {
+ // T44782
+ //
+ // - Auto-promotion for registered users. When they reach 300 edits in 10 or more
+ // unique articles with a maximum of 5% reverted edits in 60 days or more since
+ // registration they must be auto-promoted to reviewer group.
+ // - Auto-promotion for registered users. When they reach 100 edits in 10 or more
+ // unique pages with a maximum of 5% reverted edits in 30 days or more since
+ // registration they must be auto-promoted to autoreviewer (or autopatrolled)
+ // group.
+ $wgFlaggedRevsAutopromote = $wmfStandardAutoPromote;
+ $wgFlaggedRevsAutopromote['days'] = 60; # days since registration
+ $wgFlaggedRevsAutopromote['edits'] = 300; # 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['uniqueContentPages'] = 10; # $wgContentNamespaces unique pages edited
+ $wgFlaggedRevsAutopromote['neverBlocked'] = false; # user must be emailconfirmed?
+
+ $wgFlaggedRevsAutoconfirm = [
+ 'days' => 30, # days since registration
+ 'edits' => 100, # total edit count
+ 'spacing' => 3, # spacing of edit intervals
+ 'benchmarks' => 7, # how many edit intervals are needed?
+ 'excludeLastDays' => 2, # exclude the last X days of edits from edit counts
+ // Either totalContentEdits reqs OR totalCheckedEdits requirements needed
+ 'totalContentEdits' => 150, # $wgContentNamespaces edits OR...
+ 'totalCheckedEdits' => 50, # ...Edits before the stable version of pages
+ 'uniqueContentPages' => 8, # $wgContentNamespaces unique pages edited
+ 'editComments' => 20, # how many edit comments used?
+ 'email' => false, # user must be emailconfirmed?
+ 'neverBlocked' => true, # Can users that were blocked be promoted?
+ ];
+
+ $wgGroupPermissions['sysop']['review'] = true;
+ $wgGroupPermissions['sysop']['validate'] = true;
+ } elseif ( $wgDBname == 'trwiki' ) {
+ unset( $wgGroupPermissions['reviewer'] ); // T40690
+ $wgAddGroups['bureaucrat'] = array_diff( $wgAddGroups['bureaucrat'], [ 'reviewer' ] ); // T40690
+ $wgRemoveGroups['bureaucrat'] = array_diff( $wgRemoveGroups['bureaucrat'], [ 'reviewer' ] ); // T40690
+
+ unset( $wgGroupPermissions['editor'] ); // T40690
+ $wgAddGroups['sysop'] = array_diff( $wgAddGroups['sysop'], [ 'editor' ] ); // T40690
+ $wgRemoveGroups['sysop'] = array_diff( $wgRemoveGroups['sysop'], [ 'editor' ] ); // T40690
+
+ // T46587:
+ $wgFlaggedRevsNamespaces[] = 100; // NS_PORTAL
+ $wgFlaggedRevsNamespaces[] = NS_HELP;
+ } elseif ( $wgDBname == 'trwikiquote' ) {
+ unset( $wgGroupPermissions['reviewer'] );
+ } elseif ( $wgDBname == 'ukwiki' ) {
+ $wgFlaggedRevValues = 1;
+ $wgFlaggedRevsNamespaces = [ NS_MAIN, NS_FILE, NS_TEMPLATE, NS_CATEGORY, 828 ];
+ $wgFlaggedRevsTags['accuracy']['levels'] = 3;
+ $wgFlaggedRevsOverride = false;
+ $wgGroupPermissions['sysop']['stablesettings'] = true;
+ } elseif ( $wgDBname == 'plwikisource' ) {
+ $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
+ $wgFlaggedRevsNamespaces[] = NS_HELP;
+ $wgFlaggedRevsNamespaces[] = 100;
+ $wgFlaggedRevsNamespaces[] = 102;
+ $wgFlaggedRevsNamespaces[] = 104;
+
+ $wgFlaggedRevsAutopromote = $wmfStandardAutoPromote;
+ $wgFlaggedRevsAutopromote['edits'] = 100;
+ $wgFlaggedRevsAutopromote['totalContentEdits'] = 100;
+ $wgFlaggedRevsAutopromote['days'] = 14;
+
+ $wgGroupPermissions['editor']['rollback'] = true;
+ } elseif ( $wgDBname == 'vecwiki' ) {
+ $wgFlaggedRevsNamespaces[] = NS_CATEGORY;
+ $wgFlaggedRevsTags['accuracy']['levels'] = 3; // Is this needed?
+ $wgFlaggedRevsOverride = false;
+
+ // T17478
+ $wgGroupPermissions['autoeditor']['autoreview'] = true;
+ $wgGroupPermissions['autoeditor']['autoconfirmed'] = true;
+
+ $wgGroupPermissions['sysop']['stablesettings'] = true; // -aaron 3/20/10
+ }
+
+ # All wikis...
+
+ # Rights for Bureaucrats (b/c)
+ if ( isset( $wgGroupPermissions['reviewer'] ) ) {
+ if ( !in_array( 'reviewer', $wgAddGroups['bureaucrat'] ) ) {
+ $wgAddGroups['bureaucrat'][] = 'reviewer'; // promote to full reviewers
+ }
+ if ( !in_array( 'reviewer', $wgRemoveGroups['bureaucrat'] ) ) {
+ $wgRemoveGroups['bureaucrat'][] = 'reviewer'; // demote from full reviewers
+ }
+ }
};