]> source.dussan.org Git - nextcloud-server.git/commitdiff
- isolate include calls in installer.php which prevents local variables to be overwritten
authorThomas Müller <thomas.mueller@tmit.eu>
Thu, 14 Jan 2016 16:26:30 +0000 (17:26 +0100)
committerThomas Müller <thomas.mueller@tmit.eu>
Thu, 14 Jan 2016 16:28:00 +0000 (17:28 +0100)
- add the app to the autoloader before calling install.php

lib/private/installer.php

index ef5efb09b4662d902a3962328d59bceb87368128..ace3d65c0025b0fbb19669fc6388fdb4bf1a3eb1 100644 (file)
@@ -128,8 +128,8 @@ class OC_Installer{
                }
 
                //run appinfo/install.php
-               if((!isset($data['noinstall']) or $data['noinstall']==false) and file_exists($basedir.'/appinfo/install.php')) {
-                       include $basedir.'/appinfo/install.php';
+               if((!isset($data['noinstall']) or $data['noinstall']==false)) {
+                       self::includeAppScript($basedir . '/appinfo/install.php');
                }
 
                //set the installed version
@@ -560,15 +560,16 @@ class OC_Installer{
         */
        public static function installShippedApp($app) {
                //install the database
-               if(is_file(OC_App::getAppPath($app)."/appinfo/database.xml")) {
-                       OC_DB::createDbFromStructure(OC_App::getAppPath($app)."/appinfo/database.xml");
+               $appPath = OC_App::getAppPath($app);
+               if(is_file("$appPath/appinfo/database.xml")) {
+                       OC_DB::createDbFromStructure("$appPath/appinfo/database.xml");
                }
 
                //run appinfo/install.php
-               if(is_file(OC_App::getAppPath($app)."/appinfo/install.php")) {
-                       include OC_App::getAppPath($app)."/appinfo/install.php";
-               }
-               $info=OC_App::getAppInfo($app);
+               \OC::$loader->addValidRoot($appPath);
+               self::includeAppScript("$appPath/appinfo/install.php");
+
+               $info = OC_App::getAppInfo($app);
                if (is_null($info)) {
                        return false;
                }
@@ -609,4 +610,13 @@ class OC_Installer{
 
                return empty($errors);
        }
+
+       /**
+        * @param $basedir
+        */
+       private static function includeAppScript($script) {
+               if ( file_exists($script) ){
+                       include $script;
+               }
+       }
 }