From: Kunal Mehta Date: Thu, 2 Apr 2015 05:51:38 +0000 (-0700) Subject: installer: Read from extension.json if possible X-Git-Tag: 1.31.0-rc.0~11803^2 X-Git-Url: http://git.cyclocoop.org/%28?a=commitdiff_plain;h=e33a719823b3e5bea55fb6bb65ca7cd501912667;p=lhc%2Fweb%2Fwiklou.git installer: Read from extension.json if possible We still have to keep in the hacky include code to support extensions not using extension registration yet. Bug: T94668 Change-Id: Ifedbf8026d46e376181e957725cd91d365295fcb --- diff --git a/includes/installer/Installer.php b/includes/installer/Installer.php index 4c31387ac8..985ece8d70 100644 --- a/includes/installer/Installer.php +++ b/includes/installer/Installer.php @@ -1489,16 +1489,31 @@ abstract class Installer { */ global $wgAutoloadClasses; $wgAutoloadClasses = array(); + $queue = array(); require "$IP/includes/DefaultSettings.php"; foreach ( $exts as $e ) { - require_once "$IP/extensions/$e/$e.php"; + if ( file_exists( "$IP/extensions/$e/extension.json" ) ) { + $queue["$IP/extensions/$e/extension.json"] = 1; + } else { + require_once "$IP/extensions/$e/$e.php"; + } } + $registry = new ExtensionRegistry(); + $data = $registry->readFromQueue( $queue ); + $wgAutoloadClasses += $data['autoload']; + $hooksWeWant = isset( $wgHooks['LoadExtensionSchemaUpdates'] ) ? $wgHooks['LoadExtensionSchemaUpdates'] : array(); + if ( isset( $data['globals']['wgHooks']['LoadExtensionSchemaUpdates'] ) ) { + $hooksWeWant = array_merge_recursive( + $hooksWeWant, + $data['globals']['wgHooks']['LoadExtensionSchemaUpdates'] + ); + } // Unset everyone else's hooks. Lord knows what someone might be doing // in ParserFirstCallInit (see bug 27171) $GLOBALS['wgHooks'] = array( 'LoadExtensionSchemaUpdates' => $hooksWeWant );