mirror of
https://github.com/nextcloud/server.git
synced 2026-06-08 16:26:59 -04:00
Correctly purge the cache when an app is disabled via cli
This commit is contained in:
parent
0af2dc7d37
commit
d01cfde982
4 changed files with 23 additions and 12 deletions
|
|
@ -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');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in a new issue