http://www.mediawiki.org/wiki/Special:Code/MediaWiki/89254

Revision: 89254
Author:   freakolowsky
Date:     2011-06-01 13:43:38 +0000 (Wed, 01 Jun 2011)
Log Message:
-----------
* trying to create a way to update/install extension already included in the 
LocalSettings.php
* wgHooks and wgAutoloadClasses are initialized so they can be appended within 
extension inits

Modified Paths:
--------------
    trunk/phase3/includes/installer/DatabaseUpdater.php

Modified: trunk/phase3/includes/installer/DatabaseUpdater.php
===================================================================
--- trunk/phase3/includes/installer/DatabaseUpdater.php 2011-06-01 11:38:25 UTC 
(rev 89253)
+++ trunk/phase3/includes/installer/DatabaseUpdater.php 2011-06-01 13:43:38 UTC 
(rev 89254)
@@ -67,6 +67,7 @@
                }
                $this->maintenance->setDB( $db );
                $this->initOldGlobals();
+               $this->initIncludedExtensions();
                wfRunHooks( 'LoadExtensionSchemaUpdates', array( $this ) );
        }
 
@@ -89,6 +90,28 @@
        }
 
        /**
+        * Try to include extensions from LocalSettings so their 
LocalExtensionSchemaChanges hooks can be run
+        */
+       private function initIncludedExtensions() {
+               global $IP, $wgHooks, $wgAutoloadClasses;
+               $ls = file_get_contents( "$IP/LocalSettings.php" );
+               if ( $ls === false ) return;
+               $matches = array();
+               preg_match_all( 
'/[[:blank:]]*(?:require|include){1}(?:_once)?[[:blank:]]*\([[:blank:]]*"\$IP\/extensions\/([^\/].*)\/\1\.php"[[:blank:]]*\);[[:blank:]]*/i',
+                                               $ls, $matches, PREG_SET_ORDER );
+               unset( $ls );
+
+               if ( !isset( $wgHooks ) ) 
+                       $wgHooks = array();
+               if ( !isset( $wgAutoloadClasses ) ) 
+                       $wgAutoloadClasses = array();
+
+               foreach ( $matches as $match ) {
+                       include_once ( 
"$IP/extensions/{$match[1]}/{$match[1]}.php" );
+               }
+       }
+
+       /**
         * @throws MWException
         * @param DatabaseBase $db
         * @param bool $shared


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to