. * * @file * @ingroup Skins */ declare( strict_types=1 ); namespace Citizen\Partials; use MediaWiki\MediaWikiServices; /** * Theme switcher partial of Skin Citizen */ final class Theme extends Partial { /** * Sets the corresponding theme class on the element * If the theme is set to auto, the theme switcher script will be added * * @param array &$options */ public function setSkinTheme( array &$options ) { // Set theme to site theme $theme = $this->getConfigValue( 'CitizenThemeDefault' ) ?? 'auto'; // Set theme to user theme if registered if ( $this->out->getUser()->isRegistered() ) { $theme = MediaWikiServices::getInstance()->getUserOptionsLookup()->getOption( $this->out->getUser(), 'CitizenThemeUser', 'auto' ); } // Add HTML class based on theme set $this->out->addHtmlClasses( 'skin-citizen-' . $theme ); // Add styles and scripts module $options['scripts'][] = 'skins.citizen.scripts.theme'; $options['styles'][] = 'skins.citizen.styles.theme'; } }