diff options
author | Luke Shumaker <lukeshu@sbcglobal.net> | 2016-05-01 15:30:02 -0400 |
---|---|---|
committer | Luke Shumaker <lukeshu@sbcglobal.net> | 2016-05-01 15:30:02 -0400 |
commit | 1de335ad3f395ca6861085393ba366a9e3fb4a0d (patch) | |
tree | f1fdd326034e05177596851be6a7127615d81498 /includes/resourceloader/ResourceLoaderContext.php | |
parent | 9c75fa8ff6d4d38ef552c00fef5969fb154765e8 (diff) | |
parent | f6d65e533c62f6deb21342d4901ece24497b433e (diff) |
Merge commit 'f6d65'
# Conflicts:
# skins/ArchLinux/ArchLinux.php
Diffstat (limited to 'includes/resourceloader/ResourceLoaderContext.php')
-rw-r--r-- | includes/resourceloader/ResourceLoaderContext.php | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/includes/resourceloader/ResourceLoaderContext.php b/includes/resourceloader/ResourceLoaderContext.php index 7af7b898..a6a7d347 100644 --- a/includes/resourceloader/ResourceLoaderContext.php +++ b/includes/resourceloader/ResourceLoaderContext.php @@ -41,6 +41,11 @@ class ResourceLoaderContext { protected $version; protected $hash; protected $raw; + protected $image; + protected $variant; + protected $format; + protected $userObj; + protected $imageObj; /* Methods */ @@ -65,6 +70,10 @@ class ResourceLoaderContext { $this->only = $request->getVal( 'only' ); $this->version = $request->getVal( 'version' ); $this->raw = $request->getFuzzyBool( 'raw' ); + // Image requests + $this->image = $request->getVal( 'image' ); + $this->variant = $request->getVal( 'variant' ); + $this->format = $request->getVal( 'format' ); $skinnames = Skin::getSkinNames(); // If no skin is specified, or we don't recognize the skin, use the default skin @@ -179,6 +188,31 @@ class ResourceLoaderContext { } /** + * Get the possibly-cached User object for the specified username + * + * @since 1.25 + * @return User|bool false if a valid object cannot be created + */ + public function getUserObj() { + if ( $this->userObj === null ) { + $username = $this->getUser(); + if ( $username ) { + // Optimize: Avoid loading a new User object if possible + global $wgUser; + if ( is_object( $wgUser ) && $wgUser->getName() === $username ) { + $this->userObj = $wgUser; + } else { + $this->userObj = User::newFromName( $username ); + } + } else { + $this->userObj = new User; // Anonymous user + } + } + + return $this->userObj; + } + + /** * @return bool */ public function getDebug() { @@ -207,6 +241,62 @@ class ResourceLoaderContext { } /** + * @return string|null + */ + public function getImage() { + return $this->image; + } + + /** + * @return string|null + */ + public function getVariant() { + return $this->variant; + } + + /** + * @return string|null + */ + public function getFormat() { + return $this->format; + } + + /** + * If this is a request for an image, get the ResourceLoaderImage object. + * + * @since 1.25 + * @return ResourceLoaderImage|bool false if a valid object cannot be created + */ + public function getImageObj() { + if ( $this->imageObj === null ) { + $this->imageObj = false; + + if ( !$this->image ) { + return $this->imageObj; + } + + $modules = $this->getModules(); + if ( count( $modules ) !== 1 ) { + return $this->imageObj; + } + + $module = $this->getResourceLoader()->getModule( $modules[0] ); + if ( !$module || !$module instanceof ResourceLoaderImageModule ) { + return $this->imageObj; + } + + $image = $module->getImage( $this->image ); + if ( !$image ) { + return $this->imageObj; + } + + $this->imageObj = $image; + } + + return $this->imageObj; + } + + /** * @return bool */ public function shouldIncludeScripts() { @@ -234,6 +324,7 @@ class ResourceLoaderContext { if ( !isset( $this->hash ) ) { $this->hash = implode( '|', array( $this->getLanguage(), $this->getDirection(), $this->getSkin(), $this->getUser(), + $this->getImage(), $this->getVariant(), $this->getFormat(), $this->getDebug(), $this->getOnly(), $this->getVersion() ) ); } |