Jump to content

Extension:BetaFeatures/Hooks/GetBetaFeaturePreferences

From mediawiki.org
GetBetaFeaturePreferences
Available from version 1.22.0
Register preferences that enable experimental features. Only available with Extension:BetaFeatures.
Define function:
public static function onGetBetaFeaturePreferences( User $user, array &$betaPrefs ) { ... }
Attach hook:
$wgHooks['GetBetaFeaturePreferences'][] = 'MyExtensionHooks::onGetBetaFeaturePreferences';
Called from:
File(s): BetaFeatures / includes/Hooks.php

For more information about attaching hooks, see Manual:Hooks .
For examples of other extensions using this hook, see Category:GetBetaFeaturePreferences extensions.

Details

[edit]
Name Description
$user User whose preferences are being modified.
&$betaPrefs Array of beta features. Each key is the identifier of the feature and the associated value is an array with the keys:
Name Required? Description
label-message Required message key for the title of the feature
desc-message Required message key for the description of the feature
screenshot Optional either the path to an image representing the feature, either an array whose the keys are language codes or 'rtl' or 'ltr' for language-specific or language-direction-specific images; it can be used the global variable $wgExtensionAssetsPath
requirements Optional array with keys:
  • betafeatures - array of required preferences before activating this feature
  • blacklist - array of user agents blacklisted by this feature, this is only added in JavaScript variables
  • skins - array of skins supported by the feature
info-link Optional URL pointing to the description of the feature
info-message Optional message key containing an URL pointing to the description of the feature
discussion-link Optional URL pointing to a discussion page of the feature
discussion-message Optional message key containing an URL pointing to the description of the feature
auto-enrollment Optional when this feature is enabled, enable other features whose the group value is given by this auto-enrollment value
group Optional this feature can be enabled when the "parent" feature with a corresponding auto-enrollment name is enabled
dependent Optional if true, run for this feature the hook registered by the GetBetaFeatureDependencyHooks hook

Example

[edit]

In MyExtension/extension.json:

	"Hooks": {
		"GetBetaFeaturePreferences": "MediaWiki\\Extension\\MyExtension\\Hooks::onGetBetaFeaturePreferences"
	},

In MyExtension/includes/Hooks.php:

namespace MediaWiki\Extension\MyExtension;
class Hooks {
    static function onGetBetaFeaturePreferences( $user, &$prefs ) {
		$extensionAssetsPath = MediaWikiServices::getInstance()
			->getMainConfig()
			->get( 'ExtensionAssetsPath' );
        $prefs['my-awesome-feature'] = array(
            // The first two are message keys
            'label-message' => 'beta-feature-message',
            'desc-message' => 'beta-feature-description',
            // Paths to images that represent the feature.
            'screenshot' => [
				'ltr' => "$extensionAssetsPath/MyExtension/images/betafeature-ltr.png",
				'rtl' => "$extensionAssetsPath/MyExtension/images/betafeature-rtl.png",
			],
            // Link to information on the feature - use subpages on mw.org, maybe?
            'info-link' => 'https://mediawiki.org/wiki/Special:MyLanguage/Help:Extension:MyExtension',
            // Link to discussion about the feature - talk pages might work
            'discussion-link' => 'https://mediawiki.org/wiki/Help_talk:Extension:MyExtension',
        );
    }
}
// SpecialMyExtension.php
class SpecialMyExtension extends SpecialPage {

    public function execute() {
        if ( BetaFeatures::isFeatureEnabled( $this->getUser(), 'my-awesome-feature' ) ) {
            // Implement the feature!
        }
    }
}