'AutoloadClasses' => 'removeAbsolutePath',
'ExtensionCredits' => 'handleCredits',
'ResourceModules' => 'handleResourceModules',
+ 'ResourceModuleSkinStyles' => 'handleResourceModules',
'Hooks' => 'handleHooks',
'ExtensionFunctions' => 'handleExtensionFunctions',
);
+ /**
+ * Things that were formerly globals and should still be converted
+ *
+ * @var array
+ */
+ protected $formerGlobals = array(
+ 'TrackingCategories',
+ );
+
/**
* Keys that should be put at the top of the generated JSON file (T86608)
*
$processor = new ReflectionClass( 'ExtensionProcessor' );
$settings = $processor->getProperty( 'globalSettings' );
$settings->setAccessible( true );
- return $settings->getValue();
+ return $settings->getValue() + $this->formerGlobals;
}
public function execute() {
}
protected function handleResourceModules( $realName, $value ) {
+ $defaults = array();
+ $remote = $this->hasOption( 'skin' ) ? 'remoteSkinPath' : 'remoteExtPath';
foreach ( $value as $name => $data ) {
if ( isset( $data['localBasePath'] ) ) {
$data['localBasePath'] = $this->stripPath( $data['localBasePath'], $this->dir );
+ if ( !$defaults ) {
+ $defaults['localBasePath'] = $data['localBasePath'];
+ unset( $data['localBasePath'] );
+ if ( isset( $data[$remote] ) ) {
+ $defaults[$remote] = $data[$remote];
+ unset( $data[$remote] );
+ }
+ } else {
+ if ( $data['localBasePath'] === $defaults['localBasePath'] ) {
+ unset( $data['localBasePath'] );
+ }
+ if ( isset( $data[$remote] ) && isset( $defaults[$remote] )
+ && $data[$remote] === $defaults[$remote]
+ ) {
+ unset( $data[$remote] );
+ }
+ }
}
+
+
$this->json[$realName][$name] = $data;
}
+ if ( $defaults ) {
+ $this->json['ResourceFileModulePaths'] = $defaults;
+ }
}
}