X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecialpage%2FSpecialPageFactory.php;h=051926d7b74687fd6b4b8c92a9969d8c6f099428;hb=95b257375c73e533b4e40303845b76a6a3fc41c4;hp=58212dd9d549b41c4cef830f7da8486bdc139db9;hpb=a63c458127538ee6c6279602a436e3ba3abc0330;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specialpage/SpecialPageFactory.php b/includes/specialpage/SpecialPageFactory.php index 58212dd9d5..051926d7b7 100644 --- a/includes/specialpage/SpecialPageFactory.php +++ b/includes/specialpage/SpecialPageFactory.php @@ -24,10 +24,10 @@ namespace MediaWiki\Special; -use Config; use Hooks; use IContextSource; use Language; +use MediaWiki\Config\ServiceOptions; use MediaWiki\Linker\LinkRenderer; use Profiler; use RequestContext; @@ -200,6 +200,7 @@ class SpecialPageFactory { 'Mytalk' => \SpecialMytalk::class, 'Myuploads' => \SpecialMyuploads::class, 'AllMyUploads' => \SpecialAllMyUploads::class, + 'NewSection' => \SpecialNewSection::class, 'PermanentLink' => \SpecialPermanentLink::class, 'Redirect' => \SpecialRedirect::class, 'Revisiondelete' => \SpecialRevisionDelete::class, @@ -214,18 +215,36 @@ class SpecialPageFactory { /** @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; } @@ -248,32 +267,37 @@ class SpecialPageFactory { 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. @@ -344,7 +368,7 @@ class SpecialPageFactory { * subpage. * * @param string $alias - * @return array Array( String, String|null ), or array( null, null ) if the page is invalid + * @return array [ String, String|null ], or [ null, null ] if the page is invalid */ public function resolveAlias( $alias ) { $bits = explode( '/', $alias, 2 );