namespace MediaWiki\Special;
-use Config;
use Hooks;
use IContextSource;
use Language;
+use MediaWiki\Config\ServiceOptions;
use MediaWiki\Linker\LinkRenderer;
use Profiler;
use RequestContext;
/** @var array */
private $aliases;
- /** @var Config */
- private $config;
+ /** @var ServiceOptions */
+ private $options;
/** @var Language */
private $contLang;
/**
- * @param Config $config
+ * TODO Make this a const when HHVM support is dropped (T192166)
+ *
+ * @var array
+ * @since 1.33
+ * */
+ public static $constructorOptions = [
+ 'ContentHandlerUseDB',
+ 'DisableInternalSearch',
+ 'EmailAuthentication',
+ 'EnableEmail',
+ 'EnableJavaScriptTest',
+ 'EnableSpecialMute',
+ 'PageLanguageUseDB',
+ 'SpecialPages',
+ ];
+
+ /**
+ * @param ServiceOptions $options
* @param Language $contLang
*/
- public function __construct( Config $config, Language $contLang ) {
- $this->config = $config;
+ public function __construct( ServiceOptions $options, Language $contLang ) {
+ $options->assertRequiredOptions( self::$constructorOptions );
+ $this->options = $options;
$this->contLang = $contLang;
}
if ( !is_array( $this->list ) ) {
$this->list = self::$coreList;
- if ( !$this->config->get( 'DisableInternalSearch' ) ) {
+ if ( !$this->options->get( 'DisableInternalSearch' ) ) {
$this->list['Search'] = \SpecialSearch::class;
}
- if ( $this->config->get( 'EmailAuthentication' ) ) {
+ if ( $this->options->get( 'EmailAuthentication' ) ) {
$this->list['Confirmemail'] = \EmailConfirmation::class;
$this->list['Invalidateemail'] = \EmailInvalidation::class;
}
- if ( $this->config->get( 'EnableEmail' ) ) {
+ if ( $this->options->get( 'EnableEmail' ) ) {
$this->list['ChangeEmail'] = \SpecialChangeEmail::class;
}
- if ( $this->config->get( 'EnableJavaScriptTest' ) ) {
+ if ( $this->options->get( 'EnableJavaScriptTest' ) ) {
$this->list['JavaScriptTest'] = \SpecialJavaScriptTest::class;
}
- if ( $this->config->get( 'PageLanguageUseDB' ) ) {
+ if ( $this->options->get( 'EnableSpecialMute' ) ) {
+ $this->list['Mute'] = \SpecialMute::class;
+ }
+
+ if ( $this->options->get( 'PageLanguageUseDB' ) ) {
$this->list['PageLanguage'] = \SpecialPageLanguage::class;
}
- if ( $this->config->get( 'ContentHandlerUseDB' ) ) {
+
+ if ( $this->options->get( 'ContentHandlerUseDB' ) ) {
$this->list['ChangeContentModel'] = \SpecialChangeContentModel::class;
}
// Add extension special pages
- $this->list = array_merge( $this->list, $this->config->get( 'SpecialPages' ) );
+ $this->list = array_merge( $this->list, $this->options->get( 'SpecialPages' ) );
// This hook can be used to disable unwanted core special pages
// or conditionally register special pages.