%PDF- %PDF-
| Direktori : /www/varak.net/nextcloud.varak.net/apps/app_api/lib/Service/ |
| Current File : //www/varak.net/nextcloud.varak.net/apps/app_api/lib/Service/ExAppPreferenceService.php |
<?php
declare(strict_types=1);
namespace OCA\AppAPI\Service;
use OCA\AppAPI\Db\ExAppPreference;
use OCA\AppAPI\Db\ExAppPreferenceMapper;
use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Db\MultipleObjectsReturnedException;
use OCP\DB\Exception;
use Psr\Log\LoggerInterface;
/**
* App per-user preferences (preferences_ex)
*/
class ExAppPreferenceService {
public function __construct(
private ExAppPreferenceMapper $mapper,
private LoggerInterface $logger,
) {
}
public function setUserConfigValue(string $userId, string $appId, string $configKey, mixed $configValue) {
try {
$exAppPreference = $this->mapper->findByUserIdAppIdKey($userId, $appId, $configKey);
} catch (DoesNotExistException|MultipleObjectsReturnedException|Exception) {
$exAppPreference = null;
}
if ($exAppPreference === null) {
try {
return $this->mapper->insert(new ExAppPreference([
'userid' => $userId,
'appid' => $appId,
'configkey' => $configKey,
'configvalue' => $configValue ?? '',
]));
} catch (Exception $e) {
$this->logger->error('Error while inserting new config value: ' . $e->getMessage(), ['exception' => $e]);
return null;
}
} else {
$exAppPreference->setConfigvalue($configValue);
try {
if ($this->mapper->updateUserConfigValue($exAppPreference) !== 1) {
$this->logger->error('Error while updating preferences_ex config value');
return null;
}
return $exAppPreference;
} catch (Exception $e) {
$this->logger->error('Error while updating config value: ' . $e->getMessage(), ['exception' => $e]);
return null;
}
}
}
public function getUserConfigValues(string $userId, string $appId, array $configKeys): ?array {
try {
return array_map(function (ExAppPreference $exAppPreference) {
return [
'configkey' => $exAppPreference->getConfigkey(),
'configvalue' => $exAppPreference->getConfigvalue() ?? '',
];
}, $this->mapper->findByUserIdAppIdKeys($userId, $appId, $configKeys));
} catch (Exception) {
return null;
}
}
public function deleteUserConfigValues(array $configKeys, string $userId, string $appId): int {
try {
return $this->mapper->deleteUserConfigValues($configKeys, $userId, $appId);
} catch (Exception) {
return -1;
}
}
}