. * * @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 { 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; } try { $vars['wgCitizenEnableSearch'] = self::getSkinConfig( 'CitizenEnableSearch' ); } catch ( ConfigException $e ) { // Should not happen $vars['wgCitizenEnableSearch'] = true; } // 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 ); } }