. * * @file * @ingroup Skins */ declare( strict_types=1 ); namespace Citizen\Hooks; use Config; use ConfigException; use MediaWiki\MediaWikiServices; use MediaWiki\ResourceLoader\Hook\ResourceLoaderGetConfigVarsHook; use Skin; /** * Hooks to run relating to the resource loader */ class ResourceLoaderHooks implements ResourceLoaderGetConfigVarsHook { /** * ResourceLoaderGetConfigVars hook handler for setting a config variable * @see https://www.mediawiki.org/wiki/Manual:Hooks/ResourceLoaderGetConfigVars * @param array &$vars * @param Skin $skin * @param Config $config */ public function onResourceLoaderGetConfigVars( array &$vars, $skin, Config $config ): void { // Check if search suggestion is enabled try { $vars['wgCitizenEnableSearch'] = self::getSkinConfig( 'CitizenEnableSearch' ); } catch ( ConfigException $e ) { // Should not happen $vars['wgCitizenEnableSearch'] = true; } // Only check for search config if search is enabled // Since the module won't be loaded if it is not enabled if ( $vars['wgCitizenEnableSearch'] === true ) { try { $vars['wgCitizenSearchUseREST'] = self::getSkinConfig( 'CitizenSearchUseREST' ); } catch ( ConfigException $e ) { // Should not happen $vars['wgCitizenSearchUseREST'] = false; } try { $vars['wgCitizenSearchDescriptionSource'] = self::getSkinConfig( 'CitizenSearchDescriptionSource' ); } catch ( ConfigException $e ) { // Should not happen $vars['wgCitizenSearchDescriptionSource'] = 'textextracts'; } try { $vars['wgCitizenMaxSearchResults'] = self::getSkinConfig( 'CitizenMaxSearchResults' ); } catch ( ConfigException $e ) { // Should not happen $vars['wgCitizenMaxSearchResults'] = 6; } // Core config so skip try catch $vars['wgSearchSuggestCacheExpiry'] = self::getSkinConfig( 'SearchSuggestCacheExpiry' ); } } /** * Get a skin configuration variable. * * @param string $name Name of configuration option. * @return mixed Value configured. * @throws ConfigException */ private static function getSkinConfig( $name ) { return MediaWikiServices::getInstance()->getConfigFactory()->makeConfig( 'Citizen' )->get( $name ); } }