From e33a719823b3e5bea55fb6bb65ca7cd501912667 Mon Sep 17 00:00:00 2001 From: Kunal Mehta Date: Wed, 1 Apr 2015 22:51:38 -0700 Subject: [PATCH] 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 --- includes/installer/Installer.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) 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 ); -- 2.20.1