* Module name/ResourceLoaderModule object pairs
* @var array
*/
- protected $modules = array();
+ protected $modules = [];
/**
* Associative array mapping module name to info associative array
* @var array
*/
- protected $moduleInfos = array();
+ protected $moduleInfos = [];
/** @var Config $config */
private $config;
* like array( 'qunit' => array( 'mediawiki.tests.qunit.suites', 'ext.foo.tests', .. ), .. )
* @var array
*/
- protected $testModuleNames = array();
+ protected $testModuleNames = [];
/**
* E.g. array( 'source-id' => 'http://.../load.php' )
* @var array
*/
- protected $sources = array();
+ protected $sources = [];
/**
* Errors accumulated during current respond() call.
* @var array
*/
- protected $errors = array();
+ protected $errors = [];
/**
* @var MessageBlobStore
private $logger;
/** @var string JavaScript / CSS pragma to disable minification. **/
- const FILTER_NOMIN = ' /* @nomin */ ';
+ const FILTER_NOMIN = '/*@nomin*/';
/**
* Load information stored in the database about modules.
// Batched version of ResourceLoaderModule::getFileDependencies
$vary = "$skin|$lang";
- $res = $dbr->select( 'module_deps', array( 'md_module', 'md_deps' ), array(
+ $res = $dbr->select( 'module_deps', [ 'md_module', 'md_deps' ], [
'md_module' => $moduleNames,
'md_skin' => $vary,
- ), __METHOD__
+ ], __METHOD__
);
// Prime in-object cache for file dependencies
- $modulesWithDeps = array();
+ $modulesWithDeps = [];
foreach ( $res as $row ) {
$module = $this->getModule( $row->md_module );
if ( $module ) {
foreach ( array_diff( $moduleNames, $modulesWithDeps ) as $name ) {
$module = $this->getModule( $name );
if ( $module ) {
- $this->getModule( $name )->setFileDependencies( $context, array() );
+ $this->getModule( $name )->setFileDependencies( $context, [] );
}
}
// Prime in-object cache for message blobs for modules with messages
- $modules = array();
+ $modules = [];
foreach ( $moduleNames as $name ) {
$module = $this->getModule( $name );
if ( $module && $module->getMessages() ) {
* - (bool) cache: Whether to allow caching this data. Default: true.
* @return string Filtered data, or a comment containing an error message
*/
- public static function filter( $filter, $data, Array $options = array() ) {
+ public static function filter( $filter, $data, array $options = [] ) {
if ( strpos( $data, ResourceLoader::FILTER_NOMIN ) !== false ) {
return $data;
}
$this->register( include "$IP/resources/ResourcesOOUI.php" );
// Register extension modules
$this->register( $config->get( 'ResourceModules' ) );
- Hooks::run( 'ResourceLoaderRegisterModules', array( &$this ) );
+ Hooks::run( 'ResourceLoaderRegisterModules', [ &$this ] );
if ( $config->get( 'EnableJavaScriptTest' ) === true ) {
$this->registerTestModules();
public function register( $name, $info = null ) {
// Allow multiple modules to be registered in one call
- $registrations = is_array( $name ) ? $name : array( $name => $info );
+ $registrations = is_array( $name ) ? $name : [ $name => $info ];
foreach ( $registrations as $name => $info ) {
// Warn on duplicate registrations
if ( isset( $this->moduleInfos[$name] ) ) {
// Attach module
if ( $info instanceof ResourceLoaderModule ) {
- $this->moduleInfos[$name] = array( 'object' => $info );
+ $this->moduleInfos[$name] = [ 'object' => $info ];
$info->setName( $name );
$this->modules[$name] = $info;
} elseif ( is_array( $info ) ) {
// skinStyles, otherwise 'default' will be ignored as it normally would be.
if ( isset( $skinStyles[$name] ) ) {
$paths = (array)$skinStyles[$name];
- $styleFiles = array();
+ $styleFiles = [];
} elseif ( isset( $skinStyles['+' . $name] ) ) {
$paths = (array)$skinStyles['+' . $name];
$styleFiles = isset( $this->moduleInfos[$name]['skinStyles']['default'] ) ?
(array)$this->moduleInfos[$name]['skinStyles']['default'] :
- array();
+ [];
} else {
continue;
}
}
// Get core test suites
- $testModules = array();
- $testModules['qunit'] = array();
+ $testModules = [];
+ $testModules['qunit'] = [];
// Get other test suites (e.g. from extensions)
- Hooks::run( 'ResourceLoaderTestModules', array( &$testModules, &$this ) );
+ Hooks::run( 'ResourceLoaderTestModules', [ &$testModules, &$this ] );
// Add the testrunner (which configures QUnit) to the dependencies.
// Since it must be ready before any of the test suites are executed.
) {
return $this->testModuleNames[$framework];
} else {
- return array();
+ return [];
}
}
* @param array $modules List of ResourceLoaderModule objects
* @return string Hash
*/
- public function getCombinedVersion( ResourceLoaderContext $context, Array $modules ) {
+ public function getCombinedVersion( ResourceLoaderContext $context, array $modules ) {
if ( !$modules ) {
return '';
}
ob_start();
// Find out which modules are missing and instantiate the others
- $modules = array();
- $missing = array();
+ $modules = [];
+ $missing = [];
foreach ( $context->getModules() as $name ) {
$module = $this->getModule( $name );
if ( $module ) {
$this->preloadModuleInfo( array_keys( $modules ), $context );
} catch ( Exception $e ) {
MWExceptionHandler::logException( $e );
- $this->logger->warning( 'Preloading module info failed: {exception}', array(
+ $this->logger->warning( 'Preloading module info failed: {exception}', [
'exception' => $e
- ) );
+ ] );
$this->errors[] = self::formatExceptionNoComment( $e );
}
$versionHash = $this->getCombinedVersion( $context, array_keys( $modules ) );
} catch ( Exception $e ) {
MWExceptionHandler::logException( $e );
- $this->logger->warning( 'Calculating version hash failed: {exception}', array(
+ $this->logger->warning( 'Calculating version hash failed: {exception}', [
'exception' => $e
- ) );
+ ] );
$this->errors[] = self::formatExceptionNoComment( $e );
}
$errorResponse = self::makeComment( $errorText );
if ( $context->shouldIncludeScripts() ) {
$errorResponse .= 'if (window.console && console.error) {'
- . Xml::encodeJsCall( 'console.error', array( $errorText ) )
+ . Xml::encodeJsCall( 'console.error', [ $errorText ] )
. "}\n";
}
$response = $errorResponse . $response;
}
- $this->errors = array();
+ $this->errors = [];
echo $response;
}
* @return string Response data
*/
public function makeModuleResponse( ResourceLoaderContext $context,
- array $modules, array $missing = array()
+ array $modules, array $missing = []
) {
$out = '';
- $states = array();
+ $states = [];
if ( !count( $modules ) && !count( $missing ) ) {
return <<<MESSAGE
$strContent = $scripts;
} elseif ( is_array( $scripts ) ) {
// ...except when $scripts is an array of URLs
- $strContent = self::makeLoaderImplementScript( $name, $scripts, array(), array(), array() );
+ $strContent = self::makeLoaderImplementScript( $name, $scripts, [], [], [] );
}
break;
case 'styles':
$strContent = self::makeLoaderImplementScript(
$name,
isset( $content['scripts'] ) ? $content['scripts'] : '',
- isset( $content['styles'] ) ? $content['styles'] : array(),
- isset( $content['messagesBlob'] ) ? new XmlJsCode( $content['messagesBlob'] ) : array(),
- isset( $content['templates'] ) ? $content['templates'] : array()
+ isset( $content['styles'] ) ? $content['styles'] : [],
+ isset( $content['messagesBlob'] ) ? new XmlJsCode( $content['messagesBlob'] ) : [],
+ isset( $content['templates'] ) ? $content['templates'] : []
);
break;
}
} catch ( Exception $e ) {
MWExceptionHandler::logException( $e );
- $this->logger->warning( 'Generating module package failed: {exception}', array(
+ $this->logger->warning( 'Generating module package failed: {exception}', [
'exception' => $e
- ) );
+ ] );
$this->errors[] = self::formatExceptionNoComment( $e );
// Respond to client with error-state instead of module implementation
* @return array List of module names
*/
public function getModulesByMessage( $messageKey ) {
- $moduleNames = array();
+ $moduleNames = [];
foreach ( $this->getModuleNames() as $moduleName ) {
$module = $this->getModule( $moduleName );
if ( in_array( $messageKey, $module->getMessages() ) ) {
// mw.loader.implement requires 'styles', 'messages' and 'templates' to be objects (not
// arrays). json_encode considers empty arrays to be numerical and outputs "[]" instead
// of "{}". Force them to objects.
- $module = array(
+ $module = [
$name,
$scripts,
(object)$styles,
(object)$messages,
(object)$templates,
- );
+ ];
self::trimArray( $module );
return Xml::encodeJsCall( 'mw.loader.implement', $module, ResourceLoader::inDebugMode() );
public static function makeMessageSetScript( $messages ) {
return Xml::encodeJsCall(
'mw.messages.set',
- array( (object)$messages ),
+ [ (object)$messages ],
ResourceLoader::inDebugMode()
);
}
* @return array
*/
public static function makeCombinedStyles( array $stylePairs ) {
- $out = array();
+ $out = [];
foreach ( $stylePairs as $media => $styles ) {
// ResourceLoaderFileModule::getStyle can return the styles
// as a string or an array of strings. This is to allow separation in
if ( is_array( $name ) ) {
return Xml::encodeJsCall(
'mw.loader.state',
- array( $name ),
+ [ $name ],
ResourceLoader::inDebugMode()
);
} else {
return Xml::encodeJsCall(
'mw.loader.state',
- array( $name, $state ),
+ [ $name, $state ],
ResourceLoader::inDebugMode()
);
}
$script = str_replace( "\n", "\n\t", trim( $script ) );
return Xml::encodeJsCall(
"( function ( name, version, dependencies, group, source ) {\n\t$script\n} )",
- array( $name, $version, $dependencies, $group, $source ),
+ [ $name, $version, $dependencies, $group, $source ],
ResourceLoader::inDebugMode()
);
}
*
* @param Array $array
*/
- private static function trimArray( Array &$array ) {
+ private static function trimArray( array &$array ) {
$i = count( $array );
while ( $i-- ) {
if ( $array[$i] === null
- || $array[$i] === array()
+ || $array[$i] === []
|| ( $array[$i] instanceof XmlJsCode && $array[$i]->value === '{}' )
|| ( $array[$i] instanceof stdClass && self::isEmptyObject( $array[$i] ) )
) {
) {
if ( is_array( $name ) ) {
// Build module name index
- $index = array();
+ $index = [];
foreach ( $name as $i => &$module ) {
$index[$module[0]] = $i;
}
}
}
- array_walk( $name, array( 'self', 'trimArray' ) );
+ array_walk( $name, [ 'self', 'trimArray' ] );
return Xml::encodeJsCall(
'mw.loader.register',
- array( $name ),
+ [ $name ],
ResourceLoader::inDebugMode()
);
} else {
- $registration = array( $name, $version, $dependencies, $group, $source, $skip );
+ $registration = [ $name, $version, $dependencies, $group, $source, $skip ];
self::trimArray( $registration );
return Xml::encodeJsCall(
'mw.loader.register',
if ( is_array( $id ) ) {
return Xml::encodeJsCall(
'mw.loader.addSource',
- array( $id ),
+ [ $id ],
ResourceLoader::inDebugMode()
);
} else {
return Xml::encodeJsCall(
'mw.loader.addSource',
- array( $id, $properties ),
+ [ $id, $properties ],
ResourceLoader::inDebugMode()
);
}
* @return string
*/
public static function makeLoaderConditionalScript( $script ) {
- return "(window.RLQ = window.RLQ || []).push(function () {\n" .
- trim( $script ) . "\n} );";
+ return '(window.RLQ=window.RLQ||[]).push(function(){' .
+ trim( $script ) . '});';
}
/**
$js = self::makeLoaderConditionalScript( $script );
return new WrappedString(
Html::inlineScript( $js ),
- "<script>(window.RLQ = window.RLQ || []).push(function () {\n",
- "\n} );</script>"
+ '<script>(window.RLQ=window.RLQ||[]).push(function(){',
+ '});</script>'
);
}
public static function makeConfigSetScript( array $configuration ) {
return Xml::encodeJsCall(
'mw.config.set',
- array( $configuration ),
+ [ $configuration ],
ResourceLoader::inDebugMode()
- ) . ResourceLoader::FILTER_NOMIN;
+ );
}
/**
* @return string Packed query string
*/
public static function makePackedModulesString( $modules ) {
- $groups = array(); // array( prefix => array( suffixes ) )
+ $groups = []; // array( prefix => array( suffixes ) )
foreach ( $modules as $module ) {
$pos = strrpos( $module, '.' );
$prefix = $pos === false ? '' : substr( $module, 0, $pos );
$groups[$prefix][] = $suffix;
}
- $arr = array();
+ $arr = [];
foreach ( $groups as $prefix => $suffixes ) {
$p = $prefix === '' ? '' : $prefix . '.';
$arr[] = $p . implode( ',', $suffixes );
* @return string URL to load.php. May be protocol-relative if $wgLoadScript is, too.
*/
public function createLoaderURL( $source, ResourceLoaderContext $context,
- $extraQuery = array()
+ $extraQuery = []
) {
$query = self::createLoaderQuery( $context, $extraQuery );
$script = $this->getLoadScript( $source );
*/
public static function makeLoaderURL( $modules, $lang, $skin, $user = null,
$version = null, $debug = false, $only = null, $printable = false,
- $handheld = false, $extraQuery = array()
+ $handheld = false, $extraQuery = []
) {
global $wgLoadScript;
* @param array $extraQuery
* @return array
*/
- public static function createLoaderQuery( ResourceLoaderContext $context, $extraQuery = array() ) {
+ public static function createLoaderQuery( ResourceLoaderContext $context, $extraQuery = [] ) {
return self::makeLoaderQuery(
$context->getModules(),
$context->getLanguage(),
*/
public static function makeLoaderQuery( $modules, $lang, $skin, $user = null,
$version = null, $debug = false, $only = null, $printable = false,
- $handheld = false, $extraQuery = array()
+ $handheld = false, $extraQuery = []
) {
- $query = array(
+ $query = [
'modules' => self::makePackedModulesString( $modules ),
'lang' => $lang,
'skin' => $skin,
'debug' => $debug ? 'true' : 'false',
- );
+ ];
if ( $user !== null ) {
$query['user'] = $user;
}
* @throws MWException
* @return Less_Parser
*/
- public function getLessCompiler( $extraVars = array() ) {
+ public function getLessCompiler( $extraVars = [] ) {
// When called from the installer, it is possible that a required PHP extension
// is missing (at least for now; see bug 47564). If this is the case, throw an
// exception (caught by the installer) to prevent a fatal error later on.
public function getLessVars() {
if ( !$this->lessVars ) {
$lessVars = $this->config->get( 'ResourceLoaderLESSVars' );
- Hooks::run( 'ResourceLoaderGetLessVars', array( &$lessVars ) );
+ Hooks::run( 'ResourceLoaderGetLessVars', [ &$lessVars ] );
$this->lessVars = $lessVars;
}
return $this->lessVars;