Include short descriptions for extensions bundled in the release
[lhc/web/wiklou.git] / includes / installer / Installer.php
index 765838b..e7ef537 100644 (file)
@@ -1407,6 +1407,24 @@ abstract class Installer {
                return "{$_SERVER['PHP_SELF']}?page=" . urlencode( $page );
        }
 
+       /**
+        * Load the extension credits for i18n strings.  Very hacky for
+        * now, but I expect it only be used for 1.22.0 at the most.
+        */
+       public function getExtensionInfo( $file ) {
+               global $wgExtensionCredits, $wgVersion, $wgResourceModules;
+
+               $wgVersion = "1.22";
+               $wgResourceModules = array();
+               require_once $file ;
+               $e = array_values( $wgExtensionCredits );
+               if( $e ) {
+                       $ext = array_values( $e[0] );
+                       $wgExtensionCredits = array();
+                       return $ext[0];
+               }
+       }
+
        /**
         * Finds extensions that follow the format /extensions/Name/Name.php,
         * and returns an array containing the value for 'Name' for each found extension.
@@ -1429,13 +1447,22 @@ abstract class Installer {
                        if ( !is_dir( "$extDir/$file" ) ) {
                                continue;
                        }
-                       if ( file_exists( "$extDir/$file/$file.php" ) ) {
-                               $exts[] = $file;
+
+                       $extFile = "$extDir/$file/$file.php";
+                       $extI18NFile = "$extDir/$file/$file.i18n.php";
+                       if ( file_exists( $extFile ) ) {
+                               if ( $info = $this->getExtensionInfo( $extFile ) ) {
+                                       $exts[$info['name']] = $info;
+
+                                       if ( file_exists( $extI18NFile ) ) {
+                                               global $wgExtensionMessagesFiles;
+                                               $wgExtensionMessagesFiles[$file] = $extI18NFile;
+                                       }
+                               }
                        }
                }
                closedir( $dh );
-               natcasesort( $exts );
-
+               uksort( $exts, 'strnatcasecmp' );
                return $exts;
        }
 
@@ -1462,8 +1489,9 @@ abstract class Installer {
 
                require "$IP/includes/DefaultSettings.php";
 
+               $extensions = $this->findExtensions();
                foreach ( $exts as $e ) {
-                       require_once "$IP/extensions/$e/$e.php";
+                       require_once $extensions[$e]['path'];
                }
 
                $hooksWeWant = isset( $wgHooks['LoadExtensionSchemaUpdates'] ) ?