ConfigService cleanup

Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
Julius Härtl
2020-11-06 14:51:26 +01:00
parent b18ebe83b6
commit ba384d9b72
3 changed files with 22 additions and 5 deletions

View File

@@ -55,7 +55,7 @@ class ConfigService {
public function getAll(): array {
$data = [
'calendar' => $this->get('calendar')
'calendar' => $this->isCalendarEnabled()
];
if ($this->groupManager->isAdmin($this->userId)) {
$data['groupLimit'] = $this->get('groupLimit');
@@ -65,7 +65,8 @@ class ConfigService {
public function get($key) {
$result = null;
switch ($key) {
[$scope, $id] = explode(':', $key, 2);
switch ($scope) {
case 'groupLimit':
if (!$this->groupManager->isAdmin($this->userId)) {
throw new NoPermissionException('You must be admin to get the group limit');
@@ -79,6 +80,15 @@ class ConfigService {
return $result;
}
public function isCalendarEnabled(int $boardId = null): bool {
$defaultState = (bool)$this->config->getUserValue($this->userId, Application::APP_ID, 'calendar', true);
if ($boardId === null) {
return $defaultState;
}
return (bool)$this->config->getUserValue($this->userId, Application::APP_ID, 'board:' . $boardId . ':calendar', $defaultState);
}
public function set($key, $value) {
$result = null;
[$scope, $id] = explode(':', $key, 2);
@@ -95,7 +105,7 @@ class ConfigService {
break;
case 'board':
[$boardId, $boardConfigKey] = explode(':', $key);
if (!in_array($value, [self::SETTING_BOARD_NOTIFICATION_DUE_ALL, self::SETTING_BOARD_NOTIFICATION_DUE_ASSIGNED, self::SETTING_BOARD_NOTIFICATION_DUE_OFF], true)) {
if ($boardConfigKey === 'notify-due' && !in_array($value, [self::SETTING_BOARD_NOTIFICATION_DUE_ALL, self::SETTING_BOARD_NOTIFICATION_DUE_ASSIGNED, self::SETTING_BOARD_NOTIFICATION_DUE_OFF], true)) {
throw new BadRequestException('Board notification option must be one of: off, assigned, all');
}
$this->config->setUserValue($this->userId, Application::APP_ID, $key, $value);