* This function set an app as enabled in appconfig.
*/
public static function enable($app, $groups = null) {
- self::$enabledAppsCache = array(); // flush
+ self::$enabledAppsCache = []; // flush
if (!Installer::isInstalled($app)) {
$app = self::installApp($app);
+ } else {
+ // check for required dependencies
+ $config = \OC::$server->getConfig();
+ $l = \OC::$server->getL10N('core');
+ $info = self::getAppInfo($app);
+
+ self::checkAppDependencies($config, $l, $info);
}
$appManager = \OC::$server->getAppManager();
}
// check for required dependencies
- $dependencyAnalyzer = new DependencyAnalyzer(new Platform($config), $l);
- $missing = $dependencyAnalyzer->analyze($info);
- if (!empty($missing)) {
- $missingMsg = join(PHP_EOL, $missing);
- throw new \Exception(
- $l->t('App "%s" cannot be installed because the following dependencies are not fulfilled: %s',
- array($info['name'], $missingMsg)
- )
- );
- }
+ self::checkAppDependencies($config, $l, $info);
$config->setAppValue($app, 'enabled', 'yes');
if (isset($appData['id'])) {
return $data;
}
+
+ /**
+ * @param $config
+ * @param $l
+ * @param $info
+ * @throws Exception
+ */
+ protected static function checkAppDependencies($config, $l, $info) {
+ $dependencyAnalyzer = new DependencyAnalyzer(new Platform($config), $l);
+ $missing = $dependencyAnalyzer->analyze($info);
+ if (!empty($missing)) {
+ $missingMsg = join(PHP_EOL, $missing);
+ throw new \Exception(
+ $l->t('App "%s" cannot be installed because the following dependencies are not fulfilled: %s',
+ [$info['name'], $missingMsg]
+ )
+ );
+ }
+ }
}
namespace Test\App;
-use OC;
+use OC\App\DependencyAnalyzer;
use OC\App\Platform;
use OCP\IL10N;
use Test\TestCase;
/** @var IL10N */
private $l10nMock;
- /** @var \OC\App\DependencyAnalyzer */
+ /** @var DependencyAnalyzer */
private $analyser;
public function setUp() {
- $this->platformMock = $this->getMockBuilder('\OC\App\Platform')
+ $this->platformMock = $this->getMockBuilder(Platform::class)
->disableOriginalConstructor()
->getMock();
$this->platformMock->expects($this->any())
return vsprintf($text, $parameters);
}));
- $this->analyser = new \OC\App\DependencyAnalyzer($this->platformMock, $this->l10nMock);
+ $this->analyser = new DependencyAnalyzer($this->platformMock, $this->l10nMock);
}
/**
/**
* @dataProvider providesDatabases
+ * @param $expectedMissing
+ * @param $databases
*/
public function testDatabases($expectedMissing, $databases) {
- $app = array(
- 'dependencies' => array(
- )
- );
+ $app = [
+ 'dependencies' => [
+ ]
+ ];
if (!is_null($databases)) {
$app['dependencies']['database'] = $databases;
}
* @return array
*/
function providesLibs() {
- return array(
+ return [
// we expect curl to exist
- array(array(), 'curl'),
+ [[], 'curl'],
// we expect abcde to exist
- array(array('The library abcde is not available.'), array('abcde')),
+ [['The library abcde is not available.'], ['abcde']],
// curl in version 100.0 does not exist
- array(array('Library curl with a version higher than 100.0 is required - available version 2.3.4.'),
- array(array('@attributes' => array('min-version' => '100.0'), '@value' => 'curl'))),
+ [['Library curl with a version higher than 100.0 is required - available version 2.3.4.'],
+ [['@attributes' => ['min-version' => '100.0'], '@value' => 'curl']]],
// curl in version 100.0 does not exist
- array(array('Library curl with a version lower than 1.0.0 is required - available version 2.3.4.'),
- array(array('@attributes' => array('max-version' => '1.0.0'), '@value' => 'curl'))),
- array(array('Library curl with a version lower than 2.3.3 is required - available version 2.3.4.'),
- array(array('@attributes' => array('max-version' => '2.3.3'), '@value' => 'curl'))),
- array(array('Library curl with a version higher than 2.3.5 is required - available version 2.3.4.'),
- array(array('@attributes' => array('min-version' => '2.3.5'), '@value' => 'curl'))),
- array(array(),
- array(array('@attributes' => array('min-version' => '2.3.4', 'max-version' => '2.3.4'), '@value' => 'curl'))),
- array(array(),
- array(array('@attributes' => array('min-version' => '2.3', 'max-version' => '2.3'), '@value' => 'curl'))),
- array(array(),
- array(array('@attributes' => array('min-version' => '2', 'max-version' => '2'), '@value' => 'curl'))),
- );
+ [['Library curl with a version lower than 1.0.0 is required - available version 2.3.4.'],
+ [['@attributes' => ['max-version' => '1.0.0'], '@value' => 'curl']]],
+ [['Library curl with a version lower than 2.3.3 is required - available version 2.3.4.'],
+ [['@attributes' => ['max-version' => '2.3.3'], '@value' => 'curl']]],
+ [['Library curl with a version higher than 2.3.5 is required - available version 2.3.4.'],
+ [['@attributes' => ['min-version' => '2.3.5'], '@value' => 'curl']]],
+ [[],
+ [['@attributes' => ['min-version' => '2.3.4', 'max-version' => '2.3.4'], '@value' => 'curl']]],
+ [[],
+ [['@attributes' => ['min-version' => '2.3', 'max-version' => '2.3'], '@value' => 'curl']]],
+ [[],
+ [['@attributes' => ['min-version' => '2', 'max-version' => '2'], '@value' => 'curl']]],
+ [[],
+ ['@attributes' => ['min-version' => '2', 'max-version' => '2'], '@value' => 'curl']],
+ ];
}
/**