context = $context; } public function getModules() : array { if ( $this->modules === self::INHERIT_VALUE ) { return $this->context->getModules(); } return $this->modules; } /** * @param string[] $modules */ public function setModules( array $modules ) { $this->modules = $modules; } public function getLanguage() : string { if ( $this->language === self::INHERIT_VALUE ) { return $this->context->getLanguage(); } return $this->language; } public function setLanguage( string $language ) { $this->language = $language; // Invalidate direction since it is based on language $this->direction = null; $this->hash = null; } public function getDirection() : string { if ( $this->direction === self::INHERIT_VALUE ) { return $this->context->getDirection(); } if ( $this->direction === null ) { $this->direction = MediaWikiServices::getInstance()->getLanguageFactory() ->getLanguage( $this->getLanguage() )->getDir(); } return $this->direction; } public function setDirection( string $direction ) { $this->direction = $direction; $this->hash = null; } public function getSkin() : string { if ( $this->skin === self::INHERIT_VALUE ) { return $this->context->getSkin(); } return $this->skin; } public function setSkin( string $skin ) { $this->skin = $skin; $this->hash = null; } public function getUser() : ?string { if ( $this->user === self::INHERIT_VALUE ) { return $this->context->getUser(); } return $this->user; } public function getUserObj() : User { if ( $this->userObj === self::INHERIT_VALUE ) { return $this->context->getUserObj(); } if ( $this->userObj === null ) { $username = $this->getUser(); if ( $username ) { $this->userObj = User::newFromName( $username ) ?: new User; } else { $this->userObj = new User; } } return $this->userObj; } /** * @param string|null $user */ public function setUser( ?string $user ) { $this->user = $user; $this->hash = null; // Clear getUserObj cache $this->userObj = null; } public function getDebug() : bool { if ( $this->debug === self::INHERIT_VALUE ) { return $this->context->getDebug(); } return $this->debug; } public function setDebug( bool $debug ) { $this->debug = $debug; $this->hash = null; } public function getOnly() : ?string { if ( $this->only === self::INHERIT_VALUE ) { return $this->context->getOnly(); } return $this->only; } /** * @param string|null $only */ public function setOnly( ?string $only ) { $this->only = $only; $this->hash = null; } public function getVersion() : ?string { if ( $this->version === self::INHERIT_VALUE ) { return $this->context->getVersion(); } return $this->version; } /** * @param string|null $version */ public function setVersion( ?string $version ) { $this->version = $version; $this->hash = null; } public function getRaw() : bool { if ( $this->raw === self::INHERIT_VALUE ) { return $this->context->getRaw(); } return $this->raw; } public function setRaw( bool $raw ) { $this->raw = $raw; } public function getRequest() : WebRequest { return $this->context->getRequest(); } public function getResourceLoader() : ResourceLoader { return $this->context->getResourceLoader(); } public function getContentOverrideCallback() { if ( $this->contentOverrideCallback === self::INHERIT_VALUE ) { return $this->context->getContentOverrideCallback(); } return $this->contentOverrideCallback; } /** * @see self::getContentOverrideCallback * @since 1.32 * @param callable|null|int $callback As per self::getContentOverrideCallback, * or self::INHERIT_VALUE */ public function setContentOverrideCallback( $callback ) { $this->contentOverrideCallback = $callback; } }