make it possible to load apps seperately. needed to fix oc-910 without breaking oc-863
This commit is contained in:
parent
b117a1e3ec
commit
773f3cf973
1 changed files with 14 additions and 19 deletions
33
lib/app.php
33
lib/app.php
|
@ -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 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue