diff --git a/lib/private/app.php b/lib/private/app.php index ecdc8ca832..3422626068 100644 --- a/lib/private/app.php +++ b/lib/private/app.php @@ -1022,13 +1022,17 @@ class OC_App { public static function isAppCompatible($ocVersion, $appInfo){ $requireMin = ''; $requireMax = ''; - if (isset($appInfo['requiremin'])) { + if (isset($appInfo['dependencies']['owncloud']['@attributes']['min-version'])) { + $requireMin = $appInfo['dependencies']['owncloud']['@attributes']['min-version']; + } else if (isset($appInfo['requiremin'])) { $requireMin = $appInfo['requiremin']; } else if (isset($appInfo['require'])) { $requireMin = $appInfo['require']; } - if (isset($appInfo['requiremax'])) { + if (isset($appInfo['dependencies']['owncloud']['@attributes']['max-version'])) { + $requireMax = $appInfo['dependencies']['owncloud']['@attributes']['max-version']; + } else if (isset($appInfo['requiremax'])) { $requireMax = $appInfo['requiremax']; } diff --git a/lib/private/app/dependencyanalyzer.php b/lib/private/app/dependencyanalyzer.php index ae40e8523f..e4564c4e03 100644 --- a/lib/private/app/dependencyanalyzer.php +++ b/lib/private/app/dependencyanalyzer.php @@ -182,6 +182,8 @@ class DependencyAnalyzer { $minVersion = $dependencies['owncloud']['@attributes']['min-version']; } elseif (isset($appInfo['requiremin'])) { $minVersion = $appInfo['requiremin']; + } elseif (isset($appInfo['require'])) { + $minVersion = $appInfo['require']; } $maxVersion = null; if (isset($dependencies['owncloud']['@attributes']['max-version'])) { diff --git a/tests/lib/app.php b/tests/lib/app.php index 23c1a340e0..1bd350f216 100644 --- a/tests/lib/app.php +++ b/tests/lib/app.php @@ -112,7 +112,7 @@ class Test_App extends \Test\TestCase { ), true ), - // multiple OC number + // multiple OC number array( '4.3.1', array( @@ -120,7 +120,7 @@ class Test_App extends \Test\TestCase { ), true ), - // single app number + // single app number array( '4', array( @@ -208,6 +208,55 @@ class Test_App extends \Test\TestCase { ), true ), + // dependencies versions before require* + array( + '6.0.0.0', + array( + 'requiremin' => '5.0', + 'requiremax' => '7.0', + 'dependencies' => array( + 'owncloud' => array( + '@attributes' => array( + 'min-version' => '7.0', + 'max-version' => '7.0', + ), + ), + ), + ), + false + ), + array( + '6.0.0.0', + array( + 'requiremin' => '5.0', + 'requiremax' => '7.0', + 'dependencies' => array( + 'owncloud' => array( + '@attributes' => array( + 'min-version' => '5.0', + 'max-version' => '5.0', + ), + ), + ), + ), + false + ), + array( + '6.0.0.0', + array( + 'requiremin' => '5.0', + 'requiremax' => '5.0', + 'dependencies' => array( + 'owncloud' => array( + '@attributes' => array( + 'min-version' => '5.0', + 'max-version' => '7.0', + ), + ), + ), + ), + true + ), ); }