diff options
author | Joas Schilling <nickvergessen@owncloud.com> | 2015-04-01 15:37:22 +0200 |
---|---|---|
committer | Joas Schilling <nickvergessen@owncloud.com> | 2015-04-01 15:43:38 +0200 |
commit | d01cfde98229c6d1bd14feefd889205027920d14 (patch) | |
tree | efda9051a56382a5cb2313d360e9fde2cfcbb35f /lib/private/app/appmanager.php | |
parent | 0af2dc7d3775f5d40cdfd3fe0cd4325abd6ce40d (diff) | |
download | nextcloud-server-d01cfde98229c6d1bd14feefd889205027920d14.tar.gz nextcloud-server-d01cfde98229c6d1bd14feefd889205027920d14.zip |
Correctly purge the cache when an app is disabled via cli
Diffstat (limited to 'lib/private/app/appmanager.php')
-rw-r--r-- | lib/private/app/appmanager.php | 18 |
1 files changed, 17 insertions, 1 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'); } } |