From 773f3cf97377b2e6cad9ba68fb4461005e5d8ff6 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Mon, 4 Jun 2012 21:30:58 +0200 Subject: [PATCH] make it possible to load apps seperately. needed to fix oc-910 without breaking oc-863 --- lib/app.php | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/lib/app.php b/lib/app.php index 78de0fa21b6e..e4ec0fe588da 100644 --- a/lib/app.php +++ b/lib/app.php @@ -27,7 +27,6 @@ * upgrading and removing apps. */ class OC_App{ - static private $init = false; static private $apps = array(); static private $activeapp = ''; static private $navigation = array(); @@ -36,6 +35,7 @@ class OC_App{ static private $personalForms = array(); static private $appInfo = array(); static private $appTypes = array(); + static private $loadedApps = array(); /** * @brief loads all apps @@ -49,15 +49,11 @@ class OC_App{ * if $types is set, only apps of those types will be loaded */ public static function loadApps($types=null){ - // Did we already load everything? - if( self::$init ){ - return true; - } - // Our very own core apps are hardcoded foreach( array( 'settings') as $app ){ - if(is_null($types)){ + if(is_null($types) && !in_array($app, self::$loadedApps)){ require( $app.'/appinfo/app.php' ); + self::$loadedApps[] = $app; } } @@ -66,14 +62,13 @@ public static function loadApps($types=null){ // prevent app.php from printing output ob_start(); foreach( $apps as $app ){ - if((is_null($types) or self::isType($app,$types))){ + if((is_null($types) or self::isType($app,$types)) && !in_array($app, self::$loadedApps)){ self::loadApp($app); + self::$loadedApps[] = $app; } } ob_end_clean(); - self::$init = true; - // return return true; } @@ -129,7 +124,7 @@ private static function getAppTypes($app){ */ public static function setAppTypes($app){ $appData=self::getAppInfo($app); - + if(isset($appData['types'])){ $appTypes=implode(',',$appData['types']); }else{ @@ -191,7 +186,7 @@ public static function enable( $app ){ if($app!==false){ // check if the app is compatible with this version of ownCloud $info=OC_App::getAppInfo($app); - $version=OC_Util::getVersion(); + $version=OC_Util::getVersion(); if(!isset($info['require']) or ($version[0]>$info['require'])){ OC_Log::write('core','App "'.$info['name'].'" can\'t be installed because it is not compatible with this version of ownCloud',OC_Log::ERROR); return false; @@ -525,13 +520,13 @@ public static function updateApps(){ } } } - + // check if the current enabled apps are compatible with the current ownCloud version. disable them if not. // this is important if you upgrade ownCloud and have non ported 3rd party apps installed $apps =OC_App::getEnabledApps(); $version=OC_Util::getVersion(); foreach($apps as $app) { - + // check if the app is compatible with this version of ownCloud $info=OC_App::getAppInfo($app); if(!isset($info['require']) or ($version[0]>$info['require'])){ @@ -539,12 +534,12 @@ public static function updateApps(){ OC_App::disable( $app ); } - - + + } - - - + + + } /**