Merge "Use {{int:}} on MediaWiki:Blockedtext and MediaWiki:Autoblockedtext"
[lhc/web/wiklou.git] / includes / registration / ExtensionRegistry.php
index bb4c7fd..b34a123 100644 (file)
@@ -1,7 +1,5 @@
 <?php
 
-use MediaWiki\MediaWikiServices;
-
 /**
  * ExtensionRegistry class
  *
@@ -82,6 +80,7 @@ class ExtensionRegistry {
        private static $instance;
 
        /**
+        * @codeCoverageIgnore
         * @return ExtensionRegistry
         */
        public static function getInstance() {
@@ -105,9 +104,11 @@ class ExtensionRegistry {
                        } else {
                                throw new Exception( "$path does not exist!" );
                        }
+                       // @codeCoverageIgnoreStart
                        if ( !$mtime ) {
                                $err = error_get_last();
                                throw new Exception( "Couldn't stat $path: {$err['message']}" );
+                               // @codeCoverageIgnoreEnd
                        }
                }
                $this->queued[$path] = $mtime;
@@ -139,7 +140,10 @@ class ExtensionRegistry {
                // We use a try/catch because we don't want to fail here
                // if $wgObjectCaches is not configured properly for APC setup
                try {
-                       $cache = MediaWikiServices::getInstance()->getLocalServerObjectCache();
+                       // Don't use MediaWikiServices here to prevent instantiating it before extensions have
+                       // been loaded
+                       $cacheId = ObjectCache::detectLocalServerCache();
+                       $cache = ObjectCache::newFromId( $cacheId );
                } catch ( MWException $e ) {
                        $cache = new EmptyBagOStuff();
                }
@@ -199,6 +203,7 @@ class ExtensionRegistry {
         * @param array $queue keys are filenames, values are ignored
         * @return array extracted info
         * @throws Exception
+        * @throws ExtensionDependencyError
         */
        public function readFromQueue( array $queue ) {
                global $wgVersion;
@@ -270,11 +275,7 @@ class ExtensionRegistry {
                );
 
                if ( $incompatible ) {
-                       if ( count( $incompatible ) === 1 ) {
-                               throw new Exception( $incompatible[0] );
-                       } else {
-                               throw new Exception( implode( "\n", $incompatible ) );
-                       }
+                       throw new ExtensionDependencyError( $incompatible );
                }
 
                // Need to set this so we can += to it later
@@ -406,16 +407,6 @@ class ExtensionRegistry {
                return $this->loaded;
        }
 
-       /**
-        * Mark a thing as loaded
-        *
-        * @param string $name
-        * @param array $credits
-        */
-       protected function markLoaded( $name, array $credits ) {
-               $this->loaded[$name] = $credits;
-       }
-
        /**
         * Fully expand autoloader paths
         *