summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/private/app/appmanager.php18
-rw-r--r--lib/private/server.php10
-rw-r--r--settings/ajax/disableapp.php4
-rw-r--r--settings/ajax/enableapp.php3
4 files changed, 23 insertions, 12 deletions
diff --git a/lib/private/app/appmanager.php b/lib/private/app/appmanager.php
index 1cfa0bce25c..c05b2a3b035 100644
--- a/lib/private/app/appmanager.php
+++ b/lib/private/app/appmanager.php
@@ -24,6 +24,7 @@ namespace OC\App;
use OCP\App\IAppManager;
use OCP\IAppConfig;
+use OCP\ICacheFactory;
use OCP\IGroupManager;
use OCP\IUser;
use OCP\IUserSession;
@@ -44,6 +45,9 @@ class AppManager implements IAppManager {
*/
private $groupManager;
+ /** @var \OCP\ICacheFactory */
+ private $memCacheFactory;
+
/**
* @var string[] $appId => $enabled
*/
@@ -54,10 +58,11 @@ class AppManager implements IAppManager {
* @param \OCP\IAppConfig $appConfig
* @param \OCP\IGroupManager $groupManager
*/
- public function __construct(IUserSession $userSession, IAppConfig $appConfig, IGroupManager $groupManager) {
+ public function __construct(IUserSession $userSession, IAppConfig $appConfig, IGroupManager $groupManager, ICacheFactory $memCacheFactory) {
$this->userSession = $userSession;
$this->appConfig = $appConfig;
$this->groupManager = $groupManager;
+ $this->memCacheFactory = $memCacheFactory;
}
/**
@@ -157,6 +162,7 @@ class AppManager implements IAppManager {
public function enableApp($appId) {
$this->installedAppsCache[$appId] = 'yes';
$this->appConfig->setValue($appId, 'enabled', 'yes');
+ $this->clearAppsCache();
}
/**
@@ -172,6 +178,7 @@ class AppManager implements IAppManager {
}, $groups);
$this->installedAppsCache[$appId] = json_encode($groupIds);
$this->appConfig->setValue($appId, 'enabled', json_encode($groupIds));
+ $this->clearAppsCache();
}
/**
@@ -186,5 +193,14 @@ class AppManager implements IAppManager {
}
unset($this->installedAppsCache[$appId]);
$this->appConfig->setValue($appId, 'enabled', 'no');
+ $this->clearAppsCache();
+ }
+
+ /**
+ * Clear the cached list of apps when enabling/disabling an app
+ */
+ protected function clearAppsCache() {
+ $settingsMemCache = $this->memCacheFactory->create('settings');
+ $settingsMemCache->clear('listApps');
}
}
diff --git a/lib/private/server.php b/lib/private/server.php
index 592f8d9a042..8c5169f229e 100644
--- a/lib/private/server.php
+++ b/lib/private/server.php
@@ -309,10 +309,12 @@ class Server extends SimpleContainer implements IServerContainer {
return new TempManager(get_temp_dir(), $c->getLogger());
});
$this->registerService('AppManager', function(Server $c) {
- $userSession = $c->getUserSession();
- $appConfig = $c->getAppConfig();
- $groupManager = $c->getGroupManager();
- return new \OC\App\AppManager($userSession, $appConfig, $groupManager);
+ return new \OC\App\AppManager(
+ $c->getUserSession(),
+ $c->getAppConfig(),
+ $c->getGroupManager(),
+ $c->getMemCacheFactory()
+ );
});
$this->registerService('DateTimeZone', function(Server $c) {
return new DateTimeZone(
diff --git a/settings/ajax/disableapp.php b/settings/ajax/disableapp.php
index cc02203b4a3..f99969d91a4 100644
--- a/settings/ajax/disableapp.php
+++ b/settings/ajax/disableapp.php
@@ -31,9 +31,5 @@ if (!array_key_exists('appid', $_POST)) {
$appId = (string)$_POST['appid'];
$appId = OC_App::cleanAppId($appId);
-// FIXME: Clear the cache - move that into some sane helper method
-\OC::$server->getMemCacheFactory()->create('settings')->remove('listApps-0');
-\OC::$server->getMemCacheFactory()->create('settings')->remove('listApps-1');
-
OC_App::disable($appId);
OC_JSON::success();
diff --git a/settings/ajax/enableapp.php b/settings/ajax/enableapp.php
index aa688c4964c..b63bce76d92 100644
--- a/settings/ajax/enableapp.php
+++ b/settings/ajax/enableapp.php
@@ -30,9 +30,6 @@ $groups = isset($_POST['groups']) ? (array)$_POST['groups'] : null;
try {
OC_App::enable(OC_App::cleanAppId((string)$_POST['appid']), $groups);
- // FIXME: Clear the cache - move that into some sane helper method
- \OC::$server->getMemCacheFactory()->create('settings')->remove('listApps-0');
- \OC::$server->getMemCacheFactory()->create('settings')->remove('listApps-1');
OC_JSON::success();
} catch (Exception $e) {
OC_Log::write('core', $e->getMessage(), OC_Log::ERROR);