%PDF- %PDF-
| Direktori : /www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/Services/ |
| Current File : /www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/Services/UserSettingsService.php |
<?php
/**
* This file is part of the Passwords App
* created by Marius David Wieschollek
* and licensed under the AGPL.
*/
namespace OCA\Passwords\Services;
use Exception;
use OCA\Passwords\Exception\ApiException;
use OCA\Passwords\Helper\Settings\ClientSettingsHelper;
use OCA\Passwords\Helper\Settings\ServerSettingsHelper;
use OCA\Passwords\Helper\Settings\UserSettingsHelper;
/**
* Class UserSettingsService
*
* @package OCA\Passwords\Services
*/
class UserSettingsService {
/**
* @var UserSettingsHelper
*/
protected UserSettingsHelper $userSettings;
/**
* @var ClientSettingsHelper
*/
protected ClientSettingsHelper $clientSettings;
/**
* @var ServerSettingsHelper
*/
protected ServerSettingsHelper $serverSettings;
/**
* UserSettingsService constructor.
*
* @param UserSettingsHelper $userSettings
* @param ClientSettingsHelper $clientSettings
* @param ServerSettingsHelper $serverSettings
*/
public function __construct(
UserSettingsHelper $userSettings,
ClientSettingsHelper $clientSettings,
ServerSettingsHelper $serverSettings
) {
$this->userSettings = $userSettings;
$this->serverSettings = $serverSettings;
$this->clientSettings = $clientSettings;
}
/**
* @param string $key
* @param string|null $userId
*
* @return mixed
* @throws Exception
*/
public function get(string $key, string $userId = null) {
[$scope, $subKey] = explode('.', $key, 2);
switch($scope) {
case 'user':
return $this->userSettings->get($subKey, $userId);
case 'client':
return $this->clientSettings->get($subKey, $userId);
case 'server':
return $this->serverSettings->get($subKey);
}
return null;
}
/**
* @param string $key
* @param $value
* @param string|null $userId
*
* @return bool|float|int|mixed|null|string
* @throws ApiException
* @throws Exception
*/
public function set(string $key, $value, string $userId = null) {
[$scope, $subKey] = explode('.', $key, 2);
switch($scope) {
case 'user':
return $this->userSettings->set($subKey, $value, $userId);
case 'client':
return $this->clientSettings->set($subKey, $value, $userId);
}
return null;
}
/**
* @param string $key
* @param string|null $userId
*
* @return mixed|null
* @throws Exception
*/
public function reset(string $key, string $userId = null) {
[$scope, $subKey] = explode('.', $key, 2);
switch($scope) {
case 'user':
return $this->userSettings->reset($subKey, $userId);
case 'client':
return $this->clientSettings->reset($subKey, $userId);
}
return null;
}
/**
* @param array|null $scope
* @param string|null $userId
*
* @return array
* @throws Exception
*/
public function list(array $scope = null, string $userId = null): array {
$settings = [];
if($scope === null || in_array('server', $scope)) {
$settings = array_merge($settings, $this->serverSettings->list());
}
if($scope === null || in_array('user', $scope)) {
$settings = array_merge($settings, $this->userSettings->list($userId));
}
if($scope === null || in_array('client', $scope)) {
$settings = array_merge($settings, $this->clientSettings->list($userId));
}
return $settings;
}
}