mirror of
https://github.com/nextcloud/server.git
synced 2026-04-05 09:06:35 -04:00
check during ownCloud upgrade if all the installed apps are compatible with the new ownCloud version. Disable them if not
This commit is contained in:
parent
1645f77aad
commit
54c421f384
2 changed files with 36 additions and 5 deletions
37
lib/app.php
37
lib/app.php
|
|
@ -4,7 +4,7 @@
|
|||
*
|
||||
* @author Frank Karlitschek
|
||||
* @author Jakob Sack
|
||||
* @copyright 2010 Frank Karlitschek karlitschek@kde.org
|
||||
* @copyright 2012 Frank Karlitschek frank@owncloud.org
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
|
|
@ -63,11 +63,14 @@ class OC_App{
|
|||
|
||||
// The rest comes here
|
||||
$apps = self::getEnabledApps();
|
||||
// prevent app.php from printing output
|
||||
ob_start();
|
||||
foreach( $apps as $app ){
|
||||
if((is_null($types) or self::isType($app,$types))){
|
||||
self::loadApp($app);
|
||||
}
|
||||
}
|
||||
ob_end_clean();
|
||||
|
||||
self::$init = true;
|
||||
|
||||
|
|
@ -186,8 +189,16 @@ class OC_App{
|
|||
}
|
||||
}
|
||||
if($app!==false){
|
||||
OC_Appconfig::setValue( $app, 'enabled', 'yes' );
|
||||
return true;
|
||||
// check if the app is compatible with this version of ownCloud
|
||||
$info=OC_App::getAppInfo($app);
|
||||
$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;
|
||||
}else{
|
||||
OC_Appconfig::setValue( $app, 'enabled', 'yes' );
|
||||
return true;
|
||||
}
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
|
|
@ -514,6 +525,26 @@ class OC_App{
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 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'])){
|
||||
OC_Log::write('core','App "'.$info['name'].'" can\'t be used because it is not compatible with this version of ownCloud',OC_Log::ERROR);
|
||||
OC_App::disable( $app );
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ $(document).ready(function(){
|
|||
if(active){
|
||||
$.post(OC.filePath('settings','ajax','disableapp.php'),{appid:app},function(result){
|
||||
if(!result || result.status!='success'){
|
||||
OC.dialogs.alert('Error','Error while disabling app');
|
||||
OC.dialogs.alert('Error while disabling app','Error');
|
||||
}
|
||||
else {
|
||||
element.data('active',false);
|
||||
|
|
@ -54,7 +54,7 @@ $(document).ready(function(){
|
|||
}else{
|
||||
$.post(OC.filePath('settings','ajax','enableapp.php'),{appid:app},function(result){
|
||||
if(!result || result.status!='success'){
|
||||
OC.dialogs.alert('Error','Error while enabling app');
|
||||
OC.dialogs.alert('Error while enabling app','Error');
|
||||
}
|
||||
else {
|
||||
element.data('active',true);
|
||||
|
|
|
|||
Loading…
Reference in a new issue