Obsolete since MediaWiki 1.17alpha, no known usage since.
Bug: T222637
Change-Id: Ie820b16022ced6767c32aee7f2497a99260b1641
which were deprecated and ignored by core since 1.22, are no longer set to any
value, and SkinTemplate no longer emits a 'jsmimetype' key. Any extensions not
updated since 2013 to cope with this deprecation may now break.
which were deprecated and ignored by core since 1.22, are no longer set to any
value, and SkinTemplate no longer emits a 'jsmimetype' key. Any extensions not
updated since 2013 to cope with this deprecation may now break.
+* (T222637) Passing ResourceLoaderModule objects to ResourceLoader::register()
+ or $wgResourceModules is no longer supported.
+ Use the 'class' or 'factory' option of the array format instead.
* …
=== Deprecations in 1.34 ===
* …
=== Deprecations in 1.34 ===
/**
* Register a module with the ResourceLoader system.
*
/**
* Register a module with the ResourceLoader system.
*
- * @param mixed $name Name of module as a string or List of name/object pairs as an array
- * @param array|null $info Module info array. For backwards compatibility with 1.17alpha,
- * this may also be a ResourceLoaderModule object. Optional when using
- * multiple-registration calling style.
+ * @param string|array[] $name Module name as a string or, array of module info arrays
+ * keyed by name.
+ * @param array|null $info Module info array. When using the first parameter to register
+ * multiple modules at once, this parameter is optional.
* @throws MWException If a duplicate module registration is attempted
* @throws MWException If a module name contains illegal characters (pipes or commas)
* @throws MWException If a duplicate module registration is attempted
* @throws MWException If a module name contains illegal characters (pipes or commas)
- * @throws MWException If something other than a ResourceLoaderModule is being registered
+ * @throws InvalidArgumentException If the module info is not an array
*/
public function register( $name, $info = null ) {
$moduleSkinStyles = $this->config->get( 'ResourceModuleSkinStyles' );
*/
public function register( $name, $info = null ) {
$moduleSkinStyles = $this->config->get( 'ResourceModuleSkinStyles' );
- // Check $name for validity
if ( !self::isValidModuleName( $name ) ) {
throw new MWException( "ResourceLoader module name '$name' is invalid, "
. "see ResourceLoader::isValidModuleName()" );
}
if ( !self::isValidModuleName( $name ) ) {
throw new MWException( "ResourceLoader module name '$name' is invalid, "
. "see ResourceLoader::isValidModuleName()" );
}
-
- // Attach module
- if ( $info instanceof ResourceLoaderModule ) {
- $this->moduleInfos[$name] = [ 'object' => $info ];
- $info->setName( $name );
- $this->modules[$name] = $info;
- } elseif ( is_array( $info ) ) {
- // New calling convention
- $this->moduleInfos[$name] = $info;
- } else {
- throw new MWException(
- 'ResourceLoader module info type error for module \'' . $name .
- '\': expected ResourceLoaderModule or array (got: ' . gettype( $info ) . ')'
+ if ( !is_array( $info ) ) {
+ throw new InvalidArgumentException(
+ 'Invalid module info for "' . $name . '": expected array, got ' . gettype( $info )
+ // Attach module
+ $this->moduleInfos[$name] = $info;
// Apply custom skin-defined styles to existing modules.
if ( $this->isFileModule( $name ) ) {
foreach ( $moduleSkinStyles as $skinName => $skinStyles ) {
// Apply custom skin-defined styles to existing modules.
if ( $this->isFileModule( $name ) ) {
foreach ( $moduleSkinStyles as $skinName => $skinStyles ) {
// No such module
return null;
}
// No such module
return null;
}
- // Construct the requested object
+ // Construct the requested module object
$info = $this->moduleInfos[$name];
$info = $this->moduleInfos[$name];
- /** @var ResourceLoaderModule $object */
- if ( isset( $info['object'] ) ) {
- // Object given in info array
- $object = $info['object'];
- } elseif ( isset( $info['factory'] ) ) {
+ if ( isset( $info['factory'] ) ) {
+ /** @var ResourceLoaderModule $object */
$object = call_user_func( $info['factory'], $info );
$object = call_user_func( $info['factory'], $info );
- $object->setConfig( $this->getConfig() );
- $object->setLogger( $this->logger );
} else {
$class = $info['class'] ?? ResourceLoaderFileModule::class;
/** @var ResourceLoaderModule $object */
$object = new $class( $info );
} else {
$class = $info['class'] ?? ResourceLoaderFileModule::class;
/** @var ResourceLoaderModule $object */
$object = new $class( $info );
- $object->setConfig( $this->getConfig() );
- $object->setLogger( $this->logger );
+ $object->setConfig( $this->getConfig() );
+ $object->setLogger( $this->logger );
$object->setName( $name );
$this->modules[$name] = $object;
}
$object->setName( $name );
$this->modules[$name] = $object;
}
return false;
}
$info = $this->moduleInfos[$name];
return false;
}
$info = $this->moduleInfos[$name];
- if ( isset( $info['object'] ) ) {
- return false;
- }
return !isset( $info['factory'] ) && (
// The implied default for 'class' is ResourceLoaderFileModule
!isset( $info['class'] ) ||
return !isset( $info['factory'] ) && (
// The implied default for 'class' is ResourceLoaderFileModule
!isset( $info['class'] ) ||
*/
public function testRegisterInvalidType() {
$resourceLoader = new EmptyResourceLoader();
*/
public function testRegisterInvalidType() {
$resourceLoader = new EmptyResourceLoader();
- $this->setExpectedException( MWException::class, 'ResourceLoader module info type error' );
+ $this->setExpectedException( InvalidArgumentException::class, 'Invalid module info' );
$resourceLoader->register( 'test', new stdClass() );
}
$resourceLoader->register( 'test', new stdClass() );
}