make it possible to load apps seperately. needed to fix oc-910 without breaking oc-863

This commit is contained in:
Arthur Schiwon 2012-06-04 21:30:58 +02:00
parent b117a1e3ec
commit 773f3cf973

View file

@ -27,7 +27,6 @@
* upgrading and removing apps. * upgrading and removing apps.
*/ */
class OC_App{ class OC_App{
static private $init = false;
static private $apps = array(); static private $apps = array();
static private $activeapp = ''; static private $activeapp = '';
static private $navigation = array(); static private $navigation = array();
@ -36,6 +35,7 @@ class OC_App{
static private $personalForms = array(); static private $personalForms = array();
static private $appInfo = array(); static private $appInfo = array();
static private $appTypes = array(); static private $appTypes = array();
static private $loadedApps = array();
/** /**
* @brief loads all apps * @brief loads all apps
@ -49,15 +49,11 @@ class OC_App{
* if $types is set, only apps of those types will be loaded * if $types is set, only apps of those types will be loaded
*/ */
public static function loadApps($types=null){ public static function loadApps($types=null){
// Did we already load everything?
if( self::$init ){
return true;
}
// Our very own core apps are hardcoded // Our very own core apps are hardcoded
foreach( array( 'settings') as $app ){ foreach( array( 'settings') as $app ){
if(is_null($types)){ if(is_null($types) && !in_array($app, self::$loadedApps)){
require( $app.'/appinfo/app.php' ); require( $app.'/appinfo/app.php' );
self::$loadedApps[] = $app;
} }
} }
@ -66,14 +62,13 @@ class OC_App{
// prevent app.php from printing output // prevent app.php from printing output
ob_start(); ob_start();
foreach( $apps as $app ){ 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::loadApp($app);
self::$loadedApps[] = $app;
} }
} }
ob_end_clean(); ob_end_clean();
self::$init = true;
// return // return
return true; return true;
} }
@ -129,7 +124,7 @@ class OC_App{
*/ */
public static function setAppTypes($app){ public static function setAppTypes($app){
$appData=self::getAppInfo($app); $appData=self::getAppInfo($app);
if(isset($appData['types'])){ if(isset($appData['types'])){
$appTypes=implode(',',$appData['types']); $appTypes=implode(',',$appData['types']);
}else{ }else{
@ -191,7 +186,7 @@ class OC_App{
if($app!==false){ if($app!==false){
// check if the app is compatible with this version of ownCloud // check if the app is compatible with this version of ownCloud
$info=OC_App::getAppInfo($app); $info=OC_App::getAppInfo($app);
$version=OC_Util::getVersion(); $version=OC_Util::getVersion();
if(!isset($info['require']) or ($version[0]>$info['require'])){ 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); 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; return false;
@ -525,13 +520,13 @@ class OC_App{
} }
} }
} }
// check if the current enabled apps are compatible with the current ownCloud version. disable them if not. // 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 // this is important if you upgrade ownCloud and have non ported 3rd party apps installed
$apps =OC_App::getEnabledApps(); $apps =OC_App::getEnabledApps();
$version=OC_Util::getVersion(); $version=OC_Util::getVersion();
foreach($apps as $app) { foreach($apps as $app) {
// check if the app is compatible with this version of ownCloud // check if the app is compatible with this version of ownCloud
$info=OC_App::getAppInfo($app); $info=OC_App::getAppInfo($app);
if(!isset($info['require']) or ($version[0]>$info['require'])){ if(!isset($info['require']) or ($version[0]>$info['require'])){
@ -539,12 +534,12 @@ class OC_App{
OC_App::disable( $app ); OC_App::disable( $app );
} }
} }
} }
/** /**