definition['icons'] ) || !$this->definition['icons'] ) { throw new InvalidArgumentException( "Parameter 'icons' must be given." ); } // A few things check for the "icons" prefix on this value, so specify it even though // we don't use it for actually loading the data, like in the other modules. $this->definition['themeImages'] = 'icons'; } private function getIcons() { return $this->definition['icons']; } protected function loadOOUIDefinition( $theme, $unused ) { // This is shared between instances of this class, so we only have to load the JSON files once static $data = []; if ( !isset( $data[$theme] ) ) { $data[$theme] = []; // Load and merge the JSON data for all "icons-foo" modules foreach ( self::$knownImagesModules as $module ) { if ( substr( $module, 0, 5 ) === 'icons' ) { $moreData = $this->readJSONFile( $this->getThemeImagesPath( $theme, $module ) ); if ( $moreData ) { $data[$theme] = array_replace_recursive( $data[$theme], $moreData ); } } } } $definition = $data[$theme]; // Filter out the data for all other icons, leaving only the ones we want for this module $iconsNames = $this->getIcons(); foreach ( array_keys( $definition['images'] ) as $iconName ) { if ( !in_array( $iconName, $iconsNames ) ) { unset( $definition['images'][$iconName] ); } } return $definition; } public static function extractLocalBasePath( $options, $localBasePath = null ) { global $IP; if ( $localBasePath === null ) { $localBasePath = $IP; } // Ignore any 'localBasePath' present in $options, this always refers to files in MediaWiki core return $localBasePath; } }