Add getInstalledApps and getAppsForUser to the app manager
This commit is contained in:
parent
9c47ab91f2
commit
2b58e8489f
|
@ -12,6 +12,7 @@ namespace OC\App;
|
||||||
use OCP\App\IAppManager;
|
use OCP\App\IAppManager;
|
||||||
use OCP\IAppConfig;
|
use OCP\IAppConfig;
|
||||||
use OCP\IGroupManager;
|
use OCP\IGroupManager;
|
||||||
|
use OCP\IUser;
|
||||||
use OCP\IUserSession;
|
use OCP\IUserSession;
|
||||||
|
|
||||||
class AppManager implements IAppManager {
|
class AppManager implements IAppManager {
|
||||||
|
@ -49,7 +50,7 @@ class AppManager implements IAppManager {
|
||||||
/**
|
/**
|
||||||
* @return string[] $appId => $enabled
|
* @return string[] $appId => $enabled
|
||||||
*/
|
*/
|
||||||
private function getInstalledApps() {
|
private function getInstalledAppsValues() {
|
||||||
if (!$this->installedAppsCache) {
|
if (!$this->installedAppsCache) {
|
||||||
$values = $this->appConfig->getValues(false, 'enabled');
|
$values = $this->appConfig->getValues(false, 'enabled');
|
||||||
$this->installedAppsCache = array_filter($values, function ($value) {
|
$this->installedAppsCache = array_filter($values, function ($value) {
|
||||||
|
@ -60,6 +61,29 @@ class AppManager implements IAppManager {
|
||||||
return $this->installedAppsCache;
|
return $this->installedAppsCache;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List all installed apps
|
||||||
|
*
|
||||||
|
* @return string[]
|
||||||
|
*/
|
||||||
|
public function getInstalledApps() {
|
||||||
|
return array_keys($this->getInstalledAppsValues());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List all apps enabled for a user
|
||||||
|
*
|
||||||
|
* @param \OCP\IUser $user
|
||||||
|
* @return string[]
|
||||||
|
*/
|
||||||
|
public function getAppsEnabledForUser(IUser $user) {
|
||||||
|
$apps = $this->getInstalledAppsValues();
|
||||||
|
$appsForUser = array_filter($apps, function ($enabled) use ($user) {
|
||||||
|
return $this->checkAppForUser($enabled, $user);
|
||||||
|
});
|
||||||
|
return array_keys($appsForUser);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if an app is enabled for user
|
* Check if an app is enabled for user
|
||||||
*
|
*
|
||||||
|
@ -71,9 +95,20 @@ class AppManager implements IAppManager {
|
||||||
if (is_null($user)) {
|
if (is_null($user)) {
|
||||||
$user = $this->userSession->getUser();
|
$user = $this->userSession->getUser();
|
||||||
}
|
}
|
||||||
$installedApps = $this->getInstalledApps();
|
$installedApps = $this->getInstalledAppsValues();
|
||||||
if (isset($installedApps[$appId])) {
|
if (isset($installedApps[$appId])) {
|
||||||
$enabled = $installedApps[$appId];
|
return $this->checkAppForUser($installedApps[$appId], $user);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $enabled
|
||||||
|
* @param IUser $user
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
private function checkAppForUser($enabled, $user) {
|
||||||
if ($enabled === 'yes') {
|
if ($enabled === 'yes') {
|
||||||
return true;
|
return true;
|
||||||
} elseif (is_null($user)) {
|
} elseif (is_null($user)) {
|
||||||
|
@ -88,9 +123,6 @@ class AppManager implements IAppManager {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -100,7 +132,7 @@ class AppManager implements IAppManager {
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function isInstalled($appId) {
|
public function isInstalled($appId) {
|
||||||
$installedApps = $this->getInstalledApps();
|
$installedApps = $this->getInstalledAppsValues();
|
||||||
return isset($installedApps[$appId]);
|
return isset($installedApps[$appId]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
|
|
||||||
namespace OCP\App;
|
namespace OCP\App;
|
||||||
|
|
||||||
|
use OCP\IUser;
|
||||||
|
|
||||||
interface IAppManager {
|
interface IAppManager {
|
||||||
/**
|
/**
|
||||||
* Check if an app is enabled for user
|
* Check if an app is enabled for user
|
||||||
|
@ -48,4 +50,19 @@ interface IAppManager {
|
||||||
* @param string $appId
|
* @param string $appId
|
||||||
*/
|
*/
|
||||||
public function disableApp($appId);
|
public function disableApp($appId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List all apps enabled for a user
|
||||||
|
*
|
||||||
|
* @param \OCP\IUser $user
|
||||||
|
* @return string[]
|
||||||
|
*/
|
||||||
|
public function getAppsEnabledForUser(IUser $user);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List all installed apps
|
||||||
|
*
|
||||||
|
* @return string[]
|
||||||
|
*/
|
||||||
|
public function getInstalledApps();
|
||||||
}
|
}
|
||||||
|
|
|
@ -192,4 +192,36 @@ class Manager extends \PHPUnit_Framework_TestCase {
|
||||||
$appConfig->setValue('test', 'enabled', '["foo"]');
|
$appConfig->setValue('test', 'enabled', '["foo"]');
|
||||||
$this->assertTrue($manager->isEnabledForUser('test'));
|
$this->assertTrue($manager->isEnabledForUser('test'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testGetInstalledApps() {
|
||||||
|
$userSession = $this->getMock('\OCP\IUserSession');
|
||||||
|
$groupManager = $this->getMock('\OCP\IGroupManager');
|
||||||
|
|
||||||
|
$appConfig = $this->getAppConfig();
|
||||||
|
$manager = new \OC\App\AppManager($userSession, $appConfig, $groupManager);
|
||||||
|
$appConfig->setValue('test1', 'enabled', 'yes');
|
||||||
|
$appConfig->setValue('test2', 'enabled', 'no');
|
||||||
|
$appConfig->setValue('test3', 'enabled', '["foo"]');
|
||||||
|
$this->assertEquals(['test1', 'test3'], $manager->getInstalledApps());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetAppsForUser() {
|
||||||
|
$userSession = $this->getMock('\OCP\IUserSession');
|
||||||
|
$groupManager = $this->getMock('\OCP\IGroupManager');
|
||||||
|
|
||||||
|
$user = new User('user1', null);
|
||||||
|
|
||||||
|
$groupManager->expects($this->any())
|
||||||
|
->method('getUserGroupIds')
|
||||||
|
->with($user)
|
||||||
|
->will($this->returnValue(array('foo', 'bar')));
|
||||||
|
|
||||||
|
$appConfig = $this->getAppConfig();
|
||||||
|
$manager = new \OC\App\AppManager($userSession, $appConfig, $groupManager);
|
||||||
|
$appConfig->setValue('test1', 'enabled', 'yes');
|
||||||
|
$appConfig->setValue('test2', 'enabled', 'no');
|
||||||
|
$appConfig->setValue('test3', 'enabled', '["foo"]');
|
||||||
|
$appConfig->setValue('test4', 'enabled', '["asd"]');
|
||||||
|
$this->assertEquals(['test1', 'test3'], $manager->getAppsEnabledForUser($user));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue