Remove BetaFeature Code

Bug: T167276
Change-Id: Iad2e34e2f906777c7ba0e22e245dc55891f211ae
This commit is contained in:
Andrew-WMDE 2017-06-23 14:45:48 +02:00
parent f5e74e2179
commit 80ab1408ac
8 changed files with 7 additions and 190 deletions

View file

@ -22,8 +22,6 @@
"revisionslider": "GlobalVarConfig::newInstance"
},
"config": {
"@RevisionSliderBetaFeature": "Make the RevisionSlider feature a BetaFeature. Setting this requires the RevisionSlider extension and requires each user to enable the BetaFeature.",
"RevisionSliderBetaFeature": false,
"@RevisionSliderAlternateSlider": "Enables the alternate version of the sliding mechanism.",
"RevisionSliderAlternateSlider": false
},
@ -274,9 +272,6 @@
"DiffViewHeader": [
"RevisionSliderHooks::onDiffViewHeader"
],
"GetBetaFeaturePreferences": [
"RevisionSliderHooks::getBetaFeaturePreferences"
],
"GetPreferences": [
"RevisionSliderHooks::onGetPreferences"
],

View file

@ -7,8 +7,6 @@
"revisionslider": "RevisionSlider",
"revisionslider-preference-disable": "Don't show the RevisionSlider",
"revisionslider-desc": "Shows a slider allowing selecting and comparing of revisions on a diff page",
"revisionslider-beta-feature-message": "Revision slider",
"revisionslider-beta-feature-description": "Show a revision slider when comparing two revisions of a page.",
"revisionslider-toggle-label": "Browse history",
"revisionslider-page-size": "$1 {{PLURAL:$2|byte|bytes}}",
"revisionslider-change-size": "$1 {{PLURAL:$3|byte|bytes}}",

View file

@ -9,8 +9,6 @@
"revisionslider": "RevisionSlider, see https://www.mediawiki.org/wiki/Extension:RevisionSlider",
"revisionslider-preference-disable": "Label for the user preference that disables the RevisionSlider",
"revisionslider-desc": "{{desc|name=RevisionSlider|url=https://www.mediawiki.org/wiki/Extension:RevisionSlider}}",
"revisionslider-beta-feature-message": "Label for the RevisionSlider Beta Feature.",
"revisionslider-beta-feature-description": "Description for the RevisionSlider Beta Feature, describing the feature that will be enabled.",
"revisionslider-toggle-label": "Label of the button toggling the visibility of RevisionSlider",
"revisionslider-page-size": "Page size after the revision.\n\nParameters:\n$1 - number of bytes formatted for output (with mw.language.converNumber)\n$2 - number of bytes, could be used with PLURAL\n{{Identical|Byte}}",
"revisionslider-change-size": "Change size, ie. number of bytes added or removed in the revision.\n\nParameters:\n$1 - change size formatted for output (colour-coded HTML element, including plus or minus sign)\n$2 - change size (in bytes), can be negative\n$3 - change size (in bytes) without a sign\n{{Identical|Byte}}",

View file

@ -1,55 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" width="264" height="162" viewBox="0 0 264 162" id="svg2">
<defs id="defs78">
<clipPath id="jagged-edge">
<path id="path6612" d="M0 0v152l12 10 12-10 12 10 12-10 12 10 12-10 12 10 12-10 12 10 12-10 12 10 12-10 12 10 12-10 12 10 12-10 12 10 12-10 12 10 12-10 12 10 12-10V0z"/>
</clipPath>
</defs>
<g id="screenshot" clip-path="url(#jagged-edge)">
<path fill="#fff" d="M263.5 162.25l-263-.5V.5h263z" id="background"/>
<path d="M250.87 162V75H48v87z" id="article" fill="#e5e5e5"/>
<path fill="#e5e5e5" d="M11 22c0-7.732 6.268-14 14-14s14 6.268 14 14-6.268 14-14 14-14-6.268-14-14z" id="logo"/>
<path fill="#e5e5e5" d="M38 163.807V58H13v105.807h25z" id="sidebar"/>
<g fill="#e5e5e5" id="personal-tools">
<path id="path6620" d="M233 5h26v6h-26V5zm-24 0h22v6h-22zm-24 0h22v6h-22zm-23 0h13v6h-13zm15 0h6v6h-6zm-23 0h6v6h-6z"/>
</g>
<g fill="#e5e5e5" id="search">
<path d="M258 16v4h-92v-4h92m1-1h-94v6h94v-6z" id="path5717"/>
<path d="M168 17h2v2h-2z" id="icon"/>
</g>
<path fill="#e5e5e5" d="M38 45v-5H13v5h25z" id="sitename"/>
<path fill="#e5e5e5" id="border" d="M0 0v162h264V0zm1 1h262v150.533l-11 9.166-12-10-12 10-12-10-12 10-12-10-12 10-12-10-12 10-12-10-12 10-12-10-12 10-12-10-12 10-12-10-12 10-12-10-12 10-12-10-12 10-11-9.168z"/>
<g id="g7240" fill="#36c" fill-rule="evenodd">
<path d="M63 49l11-11v22z" id="path7199" transform="translate(-2)"/>
<path d="M236 49l-11-11v22z" id="path7199-3" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7216" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M72 48.5h156.965v1H72z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7218" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M79 38h12v11H79z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7220" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M92 49h12v9H92z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7222" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M105 49h12v15h-12z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7224" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M118 31h12v18h-12z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7226" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M131 35h12v14h-12z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7228" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M144 39h12v10h-12z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7230" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M157 49h12v19h-12z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7232" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M170 31h12v18h-12z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7234" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M183 49h12v11h-12z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7236" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M196 49h12v16h-12z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7238" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M209 38h12v11h-12z" transform="translate(-2)"/>
</g>
<path id="rect7256" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M54 79h30v7H54z"/>
<path id="rect7260" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M54 91h84v4H54z"/>
<path id="rect7262" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M54 105h84v3H54z"/>
<path id="rect7264" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M54 114h58v3H54z"/>
<path id="rect7266" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M54 128h84v3H54z"/>
<path id="rect7268" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M54 136h84v3H54z"/>
<path id="rect7270" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M54 143h41v3H54z"/>
<path id="rect7272" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M160 79h30v6h-30z"/>
<path id="rect7274" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M160 91h84v3h-84z"/>
<path id="rect7276" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M160 98h84v3h-84z"/>
<path id="rect7278" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M160 105h29v3h-29z"/>
<path id="rect7280" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M160 114h84v3h-84z"/>
<path id="rect7289" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M147 75h3v85h-3z"/>
<path id="rect7306" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M160 121h84v3h-84z"/>
<path id="rect7308" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M160 128h84v3h-84z"/>
<path id="rect7310" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M160 143h84v3h-84z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 7.4 KiB

View file

@ -1,55 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" width="264" height="162" viewBox="0 0 264 162" id="svg2">
<defs id="defs78">
<clipPath id="jagged-edge">
<path id="path6612" d="M0 0v152l12 10 12-10 12 10 12-10 12 10 12-10 12 10 12-10 12 10 12-10 12 10 12-10 12 10 12-10 12 10 12-10 12 10 12-10 12 10 12-10 12 10 12-10V0z"/>
</clipPath>
</defs>
<g transform="matrix(-1 0 0 1 264 0)" id="screenshot" clip-path="url(#jagged-edge)">
<path d="M263.5 162.25l-263-.5V.5h263z" id="background" fill="#fff"/>
<path d="M250.87 162V75H48v87z" id="article" fill="#e5e5e5"/>
<path d="M11 22c0-7.732 6.268-14 14-14s14 6.268 14 14-6.268 14-14 14-14-6.268-14-14z" id="logo" fill="#e5e5e5"/>
<path d="M38 163.807V58H13v105.807h25z" id="sidebar" fill="#e5e5e5"/>
<g id="personal-tools" fill="#e5e5e5">
<path id="path6620" d="M233 5h26v6h-26V5zm-24 0h22v6h-22zm-24 0h22v6h-22zm-23 0h13v6h-13zm15 0h6v6h-6zm-23 0h6v6h-6z"/>
</g>
<g id="search" fill="#e5e5e5">
<path d="M258 16v4h-92v-4h92m1-1h-94v6h94v-6z" id="path5717"/>
<path d="M168 17h2v2h-2z" id="icon"/>
</g>
<path d="M38 45v-5H13v5h25z" id="sitename" fill="#e5e5e5"/>
<path id="border" d="M0 0v162h264V0zm1 1h262v150.533l-11 9.166-12-10-12 10-12-10-12 10-12-10-12 10-12-10-12 10-12-10-12 10-12-10-12 10-12-10-12 10-12-10-12 10-12-10-12 10-12-10-12 10-11-9.168z" fill="#e5e5e5"/>
<g id="g7240" fill="#36c" fill-rule="evenodd">
<path d="M63 49l11-11v22z" id="path7199" transform="translate(-2)"/>
<path d="M236 49l-11-11v22z" id="path7199-3" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7216" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M72 48.5h156.965v1H72z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7218" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M79 38h12v11H79z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7220" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M92 49h12v9H92z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7222" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M105 49h12v15h-12z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7224" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M118 31h12v18h-12z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7226" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M131 35h12v14h-12z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7228" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M144 39h12v10h-12z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7230" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M157 49h12v19h-12z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7232" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M170 31h12v18h-12z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7234" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M183 49h12v11h-12z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7236" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M196 49h12v16h-12z" transform="translate(-2)"/>
<path style="isolation:auto;mix-blend-mode:normal" id="rect7238" color="#000" overflow="visible" stroke-linecap="round" stroke-linejoin="round" d="M209 38h12v11h-12z" transform="translate(-2)"/>
</g>
<path id="rect7256" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M54 79h30v7H54z"/>
<path id="rect7260" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M54 91h84v4H54z"/>
<path id="rect7262" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M54 105h84v3H54z"/>
<path id="rect7264" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M54 114h58v3H54z"/>
<path id="rect7266" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M54 128h84v3H54z"/>
<path id="rect7268" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M54 136h84v3H54z"/>
<path id="rect7270" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M54 143h41v3H54z"/>
<path id="rect7272" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M160 79h30v6h-30z"/>
<path id="rect7274" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M160 91h84v3h-84z"/>
<path id="rect7276" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M160 98h84v3h-84z"/>
<path id="rect7278" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M160 105h29v3h-29z"/>
<path id="rect7280" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M160 114h84v3h-84z"/>
<path id="rect7289" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M147 75h3v85h-3z"/>
<path id="rect7306" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M160 121h84v3h-84z"/>
<path id="rect7308" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M160 128h84v3h-84z"/>
<path id="rect7310" style="isolation:auto;mix-blend-mode:normal" color="#000" overflow="visible" fill="#d8d8d8" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" d="M160 143h84v3h-84z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 7.4 KiB

View file

@ -37,18 +37,6 @@ class RevisionSliderHooks {
$config = self::getConfig();
/**
* If this extension is configured to be a beta feature, and the BetaFeatures extension
* is loaded then require the current user to have the feature enabled.
*/
if (
$config->get( 'RevisionSliderBetaFeature' ) &&
class_exists( BetaFeatures::class ) &&
!BetaFeatures::isFeatureEnabled( $diff->getUser(), 'revisionslider' )
) {
return true;
}
/**
* If the user is logged in and has explictly requested to disable the extension don't load.
*/
@ -132,26 +120,6 @@ class RevisionSliderHooks {
return true;
}
public static function getBetaFeaturePreferences( User $user, array &$prefs ) {
$config = self::getConfig();
$extensionAssetsPath = $config->get( 'ExtensionAssetsPath' );
if ( $config->get( 'RevisionSliderBetaFeature' ) ) {
$prefs['revisionslider'] = [
'label-message' => 'revisionslider-beta-feature-message',
'desc-message' => 'revisionslider-beta-feature-description',
'screenshot' => [
'ltr' => "$extensionAssetsPath/RevisionSlider/resources/RevisionSlider-beta-features-ltr.svg",
'rtl' => "$extensionAssetsPath/RevisionSlider/resources/RevisionSlider-beta-features-rtl.svg",
],
'info-link'
=> 'https://meta.wikimedia.org/wiki/WMDE_Technical_Wishes/RevisionSlider',
'discussion-link'
=> 'https://meta.wikimedia.org/wiki/Talk:WMDE_Technical_Wishes/RevisionSlider',
];
}
}
public static function onResourceLoaderTestModules( array &$testModules, ResourceLoader $rl ) {
$testModules['qunit']['ext.RevisionSlider.tests'] = [
'scripts' => [
@ -188,11 +156,6 @@ class RevisionSliderHooks {
}
public static function onGetPreferences( User $user, array &$preferences ) {
$config = MediaWikiServices::getInstance()->getMainConfig();
if ( $config->get( 'RevisionSliderBetaFeature' ) ) {
return true;
}
$preferences['revisionslider-disable'] = [
'type' => 'toggle',
'label-message' => 'revisionslider-preference-disable',

View file

@ -34,8 +34,8 @@ return [
* project. directory_list won't find .inc files so
* we augment it here.
*/
'file_list' => !is_dir( './../../extensions/BetaFeatures/includes' ) ?
[ 'tests/phan/stubs/betafeatures.php' ] : [],
'file_list' => [
],
/**
* A list of directories that should be parsed for class and
@ -46,18 +46,14 @@ return [
* Thus, both first-party and third-party code being used by
* your application should be included in this list.
*/
'directory_list' => array_merge(
[
'directory_list' => [
'src/',
'tests/phan/stubs/',
'./../../includes',
'./../../languages',
'./../../maintenance',
'./../../vendor',
'./../../vendor'
],
is_dir( './../../extensions/BetaFeatures/includes' ) ?
[ './../../extensions/BetaFeatures/includes' ] : []
),
/**
* A file list that defines files that will be excluded
@ -74,16 +70,13 @@ return [
* to parse, but not analyze. Also works for individual
* files.
*/
"exclude_analysis_directory_list" => array_merge(
[
"exclude_analysis_directory_list" => [
'tests/phan/stubs/',
'./../../includes',
'./../../languages',
'./../../maintenance',
'./../../vendor',
],
is_dir( './../../extensions/BetaFeatures' ) ? [ './../../extensions/BetaFeatures' ] : []
),
/**
* Backwards Compatibility Checking. This is slow

View file

@ -1,20 +0,0 @@
<?php
/**
* Minimal set of classes necessary to fulfill needs of parts of the RevisionSlider relying on
* the BetaFeatures extension.
* @codingStandardsIgnoreFile
*/
class BetaFeatures {
/**
* Check if a user has a beta feature enabled.
*
* @param User $user The user to check
* @param string $feature The key passed back to BetaFeatures
* from the GetBetaFeaturePreferences hook
* @return bool
*/
public static function isFeatureEnabled( $user, $feature ) {
}
}