Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernhard Posselt <nukeawhale@gmail.com>2013-02-25 15:38:00 +0400
committerBernhard Posselt <nukeawhale@gmail.com>2013-02-25 15:38:00 +0400
commit5bf3d286f02474c99dd52b2680594c9ed272f92a (patch)
treee793845f1507171e3a26f5d34ad6ed70f0e9936f /lib/app.php
parentecd40f0abc8328692df44a2b082fb2ba5dcfbbd2 (diff)
created unittests and factored out version test into seperate method
Diffstat (limited to 'lib/app.php')
-rw-r--r--lib/app.php36
1 files changed, 32 insertions, 4 deletions
diff --git a/lib/app.php b/lib/app.php
index 91bb833b0d0..2eb43a582e2 100644
--- a/lib/app.php
+++ b/lib/app.php
@@ -223,8 +223,7 @@ class OC_App{
// check if the app is compatible with this version of ownCloud
$info=OC_App::getAppInfo($app);
$version=OC_Util::getVersion();
- $fullVersion = (float) ($version[0] . '.' . $version[1] . $version[2]);
- if(!isset($info['require']) or ($fullVersion < (float) $info['require'])) {
+ if(!isset($info['require']) or !self::isAppVersionCompatible($version, $info['require'])) {
OC_Log::write('core',
'App "'.$info['name'].'" can\'t be installed because it is'
.' not compatible with this version of ownCloud',
@@ -852,8 +851,7 @@ class OC_App{
foreach($apps as $app) {
// check if the app is compatible with this version of ownCloud
$info = OC_App::getAppInfo($app);
- $fullVersion = (float) ($version[0] . '.' . $version[1] . $version[2]);
- if(!isset($info['require']) or ($fullVersion < (float) $info['require'])) {
+ if(!isset($info['require']) or !self::isAppVersionCompatible($version, $info['require'])) {
OC_Log::write('core',
'App "'.$info['name'].'" ('.$app.') can\'t be used because it is'
.' not compatible with this version of ownCloud',
@@ -864,6 +862,36 @@ class OC_App{
}
}
+
+ /**
+ * Compares the app version with the owncloud version to see if the app
+ * requires a newer version than the currently active one
+ * @param array $owncloudVersions array with 3 entries: major minor bugfix
+ * @param string $appRequired the required version from the xml
+ * major.minor.bugfix
+ * @return boolean true if compatible, otherwise false
+ */
+ public static function isAppVersionCompatible($owncloudVersions, $appRequired){
+ $appVersions = explode('.', $appRequired);
+
+ for($i=0; $i<count($appVersions); $i++){
+ $appVersion = (int) $appVersions[$i];
+
+ if(isset($owncloudVersions[$i])){
+ $owncloudVersion = $owncloudVersions[$i];
+ } else {
+ $owncloudVersion = 0;
+ }
+
+ if($owncloudVersion < $appVersion){
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+
/**
* get the installed version of all apps
*/