%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/AppSettingsService.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 OCA\Passwords\Exception\ApiException;
use OCA\Passwords\Helper\AppSettings\BackupSettingsHelper;
use OCA\Passwords\Helper\AppSettings\DefaultSettingsHelper;
use OCA\Passwords\Helper\AppSettings\EncryptionSettingsHelper;
use OCA\Passwords\Helper\AppSettings\EntitySettingsHelper;
use OCA\Passwords\Helper\AppSettings\NightlySettingsHelper;
use OCA\Passwords\Helper\AppSettings\ServiceSettingsHelper;
use OCA\Passwords\Helper\AppSettings\SurveySettingsHelper;
use OCP\AppFramework\Http;
/**
* Class AppSettingsService
*
* @package OCA\Passwords\Services
*/
class AppSettingsService {
/**
* AppSettingsService constructor.
*
* @param EntitySettingsHelper $entitySettings
* @param BackupSettingsHelper $backupSettings
* @param SurveySettingsHelper $surveySettings
* @param ServiceSettingsHelper $serviceSettings
* @param NightlySettingsHelper $nightlySettings
* @param DefaultSettingsHelper $defaultSettings
* @param EncryptionSettingsHelper $encryptionSettings
*/
public function __construct(
protected EntitySettingsHelper $entitySettings,
protected BackupSettingsHelper $backupSettings,
protected SurveySettingsHelper $surveySettings,
protected ServiceSettingsHelper $serviceSettings,
protected NightlySettingsHelper $nightlySettings,
protected DefaultSettingsHelper $defaultSettings,
protected EncryptionSettingsHelper $encryptionSettings
) {
}
/**
* @param string $key
*
* @return mixed
* @throws ApiException
*/
public function get(string $key): array {
[$scope, $subKey] = explode('.', $key, 2);
switch($scope) {
case 'entity':
return $this->entitySettings->get($subKey);
case 'backup':
return $this->backupSettings->get($subKey);
case 'survey':
return $this->surveySettings->get($subKey);
case 'service':
return $this->serviceSettings->get($subKey);
case 'settings':
return $this->defaultSettings->get($subKey);
case 'nightly':
return $this->nightlySettings->get($subKey);
case 'encryption':
return $this->encryptionSettings->get($subKey);
}
throw new ApiException('Unknown setting identifier', Http::STATUS_BAD_REQUEST);
}
/**
* @param string $key
* @param $value
*
* @return array
* @throws ApiException
*/
public function set(string $key, $value): array {
[$scope, $subKey] = explode('.', $key, 2);
switch($scope) {
case 'entity':
return $this->entitySettings->set($subKey, $value);
case 'backup':
return $this->backupSettings->set($subKey, $value);
case 'survey':
return $this->surveySettings->set($subKey, $value);
case 'service':
return $this->serviceSettings->set($subKey, $value);
case 'settings':
return $this->defaultSettings->set($subKey, $value);
case 'nightly':
return $this->nightlySettings->set($subKey, $value);
case 'encryption':
return $this->encryptionSettings->set($subKey, $value);
}
throw new ApiException('Unknown setting identifier', Http::STATUS_BAD_REQUEST);
}
/**
* @param string $key
*
* @return mixed|null
* @throws ApiException
*/
public function reset(string $key) {
[$scope, $subKey] = explode('.', $key, 2);
switch($scope) {
case 'entity':
return $this->entitySettings->reset($subKey);
case 'backup':
return $this->backupSettings->reset($subKey);
case 'survey':
return $this->surveySettings->reset($subKey);
case 'service':
return $this->serviceSettings->reset($subKey);
case 'settings':
return $this->defaultSettings->reset($subKey);
case 'nightly':
return $this->nightlySettings->reset($subKey);
case 'encryption':
return $this->encryptionSettings->reset($subKey);
}
throw new ApiException('Unknown setting identifier', Http::STATUS_BAD_REQUEST);
}
/**
* @param array|null $scope
*
* @return array
*/
public function list(array $scope = null): array {
$settings = [];
if($scope === null || in_array('entity', $scope)) {
$settings = array_merge($settings, $this->entitySettings->list());
}
if($scope === null || in_array('backup', $scope)) {
$settings = array_merge($settings, $this->backupSettings->list());
}
if($scope === null || in_array('survey', $scope)) {
$settings = array_merge($settings, $this->surveySettings->list());
}
if($scope === null || in_array('service', $scope)) {
$settings = array_merge($settings, $this->serviceSettings->list());
}
if($scope === null || in_array('settings', $scope)) {
$settings = array_merge($settings, $this->defaultSettings->list());
}
if($scope === null || in_array('nightly', $scope)) {
$settings = array_merge($settings, $this->nightlySettings->list());
}
if($scope === null || in_array('encryption', $scope)) {
$settings = array_merge($settings, $this->encryptionSettings->list());
}
return $settings;
}
}