From 45bb13d5a0dde706e7b45036577a0294ce702a2c Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Tue, 10 Nov 2015 03:12:24 +0000 Subject: [PATCH] resourceloader: Log warning if module produces an invalid version hash * Add logger to ResourceLoaderContext for convenient use within modules. * Group related members within ResourceLoaderContext. Change-Id: Ifbc3de1b6e0838386735f1573df328d9b331ac37 --- includes/resourceloader/ResourceLoader.php | 15 ++++++++++++++- includes/resourceloader/ResourceLoaderContext.php | 14 ++++++++++---- .../ResourceLoaderStartUpModule.php | 7 +++++++ 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/includes/resourceloader/ResourceLoader.php b/includes/resourceloader/ResourceLoader.php index 414f8e2a63..97253ab055 100644 --- a/includes/resourceloader/ResourceLoader.php +++ b/includes/resourceloader/ResourceLoader.php @@ -241,7 +241,8 @@ class ResourceLoader implements LoggerAwareInterface { /** * Register core modules and runs registration hooks. - * @param Config|null $config + * @param Config $config [optional] + * @param LoggerInterface $logger [optional] */ public function __construct( Config $config = null, LoggerInterface $logger = null ) { global $IP; @@ -284,10 +285,22 @@ class ResourceLoader implements LoggerAwareInterface { return $this->config; } + /** + * @since 1.26 + * @param LoggerInterface $logger + */ public function setLogger( LoggerInterface $logger ) { $this->logger = $logger; } + /** + * @since 1.27 + * @return LoggerInterface + */ + public function getLogger() { + return $this->logger; + } + /** * @since 1.26 * @return MessageBlobStore diff --git a/includes/resourceloader/ResourceLoaderContext.php b/includes/resourceloader/ResourceLoaderContext.php index ff0e449cb0..78bf69de98 100644 --- a/includes/resourceloader/ResourceLoaderContext.php +++ b/includes/resourceloader/ResourceLoaderContext.php @@ -29,10 +29,9 @@ use MediaWiki\Logger\LoggerFactory; * of a specific loader request */ class ResourceLoaderContext { - /* Protected Members */ - protected $resourceLoader; protected $request; + protected $logger; // Module content vary protected $skin; @@ -54,8 +53,6 @@ class ResourceLoaderContext { protected $userObj; protected $imageObj; - /* Methods */ - /** * @param ResourceLoader $resourceLoader * @param WebRequest $request @@ -63,6 +60,7 @@ class ResourceLoaderContext { public function __construct( ResourceLoader $resourceLoader, WebRequest $request ) { $this->resourceLoader = $resourceLoader; $this->request = $request; + $this->logger = $resourceLoader->getLogger(); // List of modules $modules = $request->getVal( 'modules' ); @@ -151,6 +149,14 @@ class ResourceLoaderContext { return $this->request; } + /** + * @since 1.27 + * @return \Psr\Log\LoggerInterface + */ + public function getLogger() { + return $this->logger; + } + /** * @return array */ diff --git a/includes/resourceloader/ResourceLoaderStartUpModule.php b/includes/resourceloader/ResourceLoaderStartUpModule.php index 9e840d5b6e..39e4e0bc6f 100644 --- a/includes/resourceloader/ResourceLoaderStartUpModule.php +++ b/includes/resourceloader/ResourceLoaderStartUpModule.php @@ -211,6 +211,13 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { $versionHash = $module->getVersionHash( $context ); if ( strlen( $versionHash ) !== 8 ) { + $context->getLogger()->warning( + "Module '{module}' produced an invalid version hash: '{version}'.", + array( + 'module' => $name, + 'version' => $versionHash, + ) + ); // Module implementation either broken or deviated from ResourceLoader::makeHash // Asserted by tests/phpunit/structure/ResourcesTest. $versionHash = ResourceLoader::makeHash( $versionHash ); -- 2.20.1