fully psalm lvl2 compliant
This commit is contained in:
parent
174ffd462e
commit
d16b0f2d20
@ -5,6 +5,7 @@
|
||||
"type": "project",
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"require-dev": {
|
||||
"symfony/event-dispatcher": "^5.4.22",
|
||||
"nextcloud/ocp": "^27.0.0",
|
||||
"psalm/phar": "^5.12.0",
|
||||
"nextcloud/coding-standard": "^1.1.1"
|
||||
|
316
composer.lock
generated
316
composer.lock
generated
@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "5c7be477b217d6074abc6c2f8d2c2256",
|
||||
"content-hash": "72e9bc76d92d0e26e0b3af7ed7ce6a68",
|
||||
"packages": [],
|
||||
"packages-dev": [
|
||||
{
|
||||
@ -379,6 +379,320 @@
|
||||
"source": "https://github.com/php-fig/log/tree/1.1.4"
|
||||
},
|
||||
"time": "2021-05-03T11:20:27+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/deprecation-contracts",
|
||||
"version": "v2.5.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/deprecation-contracts.git",
|
||||
"reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
|
||||
"reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "2.5-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/contracts",
|
||||
"url": "https://github.com/symfony/contracts"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"function.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Nicolas Grekas",
|
||||
"email": "p@tchwork.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "A generic function and convention to trigger deprecation notices",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-01-02T09:53:40+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/event-dispatcher",
|
||||
"version": "v5.4.22",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/event-dispatcher.git",
|
||||
"reference": "1df20e45d56da29a4b1d8259dd6e950acbf1b13f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1df20e45d56da29a4b1d8259dd6e950acbf1b13f",
|
||||
"reference": "1df20e45d56da29a4b1d8259dd6e950acbf1b13f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"symfony/deprecation-contracts": "^2.1|^3",
|
||||
"symfony/event-dispatcher-contracts": "^2|^3",
|
||||
"symfony/polyfill-php80": "^1.16"
|
||||
},
|
||||
"conflict": {
|
||||
"symfony/dependency-injection": "<4.4"
|
||||
},
|
||||
"provide": {
|
||||
"psr/event-dispatcher-implementation": "1.0",
|
||||
"symfony/event-dispatcher-implementation": "2.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"psr/log": "^1|^2|^3",
|
||||
"symfony/config": "^4.4|^5.0|^6.0",
|
||||
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
|
||||
"symfony/error-handler": "^4.4|^5.0|^6.0",
|
||||
"symfony/expression-language": "^4.4|^5.0|^6.0",
|
||||
"symfony/http-foundation": "^4.4|^5.0|^6.0",
|
||||
"symfony/service-contracts": "^1.1|^2|^3",
|
||||
"symfony/stopwatch": "^4.4|^5.0|^6.0"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/dependency-injection": "",
|
||||
"symfony/http-kernel": ""
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Component\\EventDispatcher\\": ""
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/Tests/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Fabien Potencier",
|
||||
"email": "fabien@symfony.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/event-dispatcher/tree/v5.4.22"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-03-17T11:31:58+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/event-dispatcher-contracts",
|
||||
"version": "v2.5.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
|
||||
"reference": "f98b54df6ad059855739db6fcbc2d36995283fe1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1",
|
||||
"reference": "f98b54df6ad059855739db6fcbc2d36995283fe1",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.2.5",
|
||||
"psr/event-dispatcher": "^1"
|
||||
},
|
||||
"suggest": {
|
||||
"symfony/event-dispatcher-implementation": ""
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "2.5-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/contracts",
|
||||
"url": "https://github.com/symfony/contracts"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Symfony\\Contracts\\EventDispatcher\\": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Nicolas Grekas",
|
||||
"email": "p@tchwork.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Generic abstractions related to dispatching event",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"abstractions",
|
||||
"contracts",
|
||||
"decoupling",
|
||||
"interfaces",
|
||||
"interoperability",
|
||||
"standards"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-01-02T09:53:40+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php80",
|
||||
"version": "v1.27.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-php80.git",
|
||||
"reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
|
||||
"reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "1.27-dev"
|
||||
},
|
||||
"thanks": {
|
||||
"name": "symfony/polyfill",
|
||||
"url": "https://github.com/symfony/polyfill"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"bootstrap.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Symfony\\Polyfill\\Php80\\": ""
|
||||
},
|
||||
"classmap": [
|
||||
"Resources/stubs"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Ion Bazan",
|
||||
"email": "ion.bazan@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Nicolas Grekas",
|
||||
"email": "p@tchwork.com"
|
||||
},
|
||||
{
|
||||
"name": "Symfony Community",
|
||||
"homepage": "https://symfony.com/contributors"
|
||||
}
|
||||
],
|
||||
"description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
|
||||
"homepage": "https://symfony.com",
|
||||
"keywords": [
|
||||
"compatibility",
|
||||
"polyfill",
|
||||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://symfony.com/sponsor",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/fabpot",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2022-11-03T14:55:06+00:00"
|
||||
}
|
||||
],
|
||||
"aliases": [],
|
||||
|
@ -14,17 +14,32 @@ namespace OCA\Epubreader\AppInfo;
|
||||
|
||||
use OCA\Epubreader\Hooks;
|
||||
use OCP\AppFramework\App;
|
||||
use OCP\AppFramework\Bootstrap\IBootContext;
|
||||
use OCP\AppFramework\Bootstrap\IBootstrap;
|
||||
use OCP\AppFramework\Bootstrap\IRegistrationContext;
|
||||
use OCP\Util;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
|
||||
class Application extends App {
|
||||
class Application extends App implements IBootstrap {
|
||||
|
||||
public const APP_ID = 'epubreader';
|
||||
|
||||
public function __construct() {
|
||||
parent::__construct(self::APP_ID);
|
||||
|
||||
$l = \OC::$server->getL10N('epubreader');
|
||||
Hooks::register();
|
||||
Util::addscript('epubreader', 'plugin');
|
||||
Util::addscript(self::APP_ID, 'plugin');
|
||||
}
|
||||
|
||||
public function boot(IBootContext $context): void {
|
||||
/** @psalm-suppress DeprecatedMethod */
|
||||
Util::connectHook('\OCP\Config', 'js', 'OCA\Epubreader\Hooks', 'announce_settings');
|
||||
|
||||
$context->injectFn(function (EventDispatcherInterface $dispatcher) {
|
||||
$dispatcher->addListener('OC\Files::preDelete', [Hooks::class, 'deleteFile']);
|
||||
$dispatcher->addListener('OC\User::preDelete', [Hooks::class, 'deleteUser']);
|
||||
});
|
||||
}
|
||||
|
||||
public function register(IRegistrationContext $context): void {
|
||||
}
|
||||
}
|
||||
|
@ -12,30 +12,48 @@
|
||||
|
||||
namespace OCA\Epubreader\Controller;
|
||||
|
||||
use OCA\Epubreader\Config;
|
||||
use OCA\Epubreader\AppInfo\Application;
|
||||
use OCP\AppFramework\Controller;
|
||||
use OCP\AppFramework\Http\JSONResponse;
|
||||
use OCP\IConfig;
|
||||
use OCP\IL10N;
|
||||
use OCP\IRequest;
|
||||
|
||||
class SettingsController extends Controller {
|
||||
|
||||
private string $userId;
|
||||
private IL10N $l10n;
|
||||
private IConfig $configManager;
|
||||
|
||||
public function __construct(
|
||||
string $appName,
|
||||
IRequest $request,
|
||||
string $userId,
|
||||
IL10N $l10n,
|
||||
IConfig $configManager
|
||||
) {
|
||||
parent::__construct($appName, $request);
|
||||
$this->userId = $userId;
|
||||
$this->l10n = $l10n;
|
||||
$this->configManager = $configManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief set preference for file type association
|
||||
*
|
||||
* @NoAdminRequired
|
||||
*
|
||||
* @param int $EpubEnable
|
||||
* @param int $PdfEnable
|
||||
* @param int $CbxEnable
|
||||
* @param string $EpubEnable
|
||||
* @param string $PdfEnable
|
||||
* @param string $CbxEnable
|
||||
*/
|
||||
public function setPreference(int $EpubEnable, int $PdfEnable, int $CbxEnable): JSONResponse {
|
||||
$l = \OC::$server->getL10N('epubreader');
|
||||
|
||||
Config::set('epub_enable', $EpubEnable);
|
||||
Config::set('pdf_enable', $PdfEnable);
|
||||
Config::set('cbx_enable', $CbxEnable);
|
||||
public function setPreference(string $EpubEnable, string $PdfEnable, string $CbxEnable): JSONResponse {
|
||||
$this->configManager->setUserValue($this->userId, Application::APP_ID, 'epub_enable', $EpubEnable);
|
||||
$this->configManager->setUserValue($this->userId, Application::APP_ID, 'pdf_enable', $PdfEnable);
|
||||
$this->configManager->setUserValue($this->userId, Application::APP_ID, 'cbx_enable', $CbxEnable);
|
||||
|
||||
$response = [
|
||||
'data' => ['message' => $l->t('Settings updated successfully.')],
|
||||
'data' => ['message' => $this->l10n->t('Settings updated successfully.')],
|
||||
'status' => 'success'
|
||||
];
|
||||
|
||||
|
@ -10,32 +10,17 @@
|
||||
|
||||
namespace OCA\Epubreader;
|
||||
|
||||
use \OC\User\User as User;
|
||||
use OCP\Files\Node;
|
||||
use OCA\Epubreader\AppInfo\Application;
|
||||
use OCP\IConfig;
|
||||
use OCP\IDBConnection;
|
||||
use OCP\Util;
|
||||
use OCP\IUser;
|
||||
use OCP\Server;
|
||||
|
||||
class Hooks {
|
||||
|
||||
public static function register(): void {
|
||||
/** @psalm-suppress DeprecatedMethod */
|
||||
Util::connectHook('\OCP\Config', 'js', 'OCA\Epubreader\Hooks', 'announce_settings');
|
||||
|
||||
\OC::$server->getRootFolder()->listen('\OC\Files', 'preDelete', function (Node $node) {
|
||||
$fileId = $node->getId();
|
||||
$connection = \OC::$server->getDatabaseConnection();
|
||||
self::deleteFile($connection, $fileId);
|
||||
});
|
||||
\OC::$server->getUserManager()->listen('\OC\User', 'preDelete', function (User $user) {
|
||||
$userId = $user->getUID();
|
||||
$connection = \OC::$server->getDatabaseConnection();
|
||||
self::deleteUser($connection, $userId);
|
||||
});
|
||||
}
|
||||
|
||||
public static function announce_settings(array $settings): void {
|
||||
// Nextcloud encodes this as JSON, Owncloud does not (yet) (#75)
|
||||
// TODO: rmeove this when Owncloud starts encoding oc_appconfig as JSON just like it already encodes most other properties
|
||||
// TODO: remove this when Owncloud starts encoding oc_appconfig as JSON just like it already encodes most other properties
|
||||
if (array_key_exists('array', $settings) &&
|
||||
is_array($settings['array']) &&
|
||||
array_key_exists('oc_appconfig', $settings['array'])
|
||||
@ -44,9 +29,9 @@ class Hooks {
|
||||
/** @var array $array */
|
||||
$array = ($isJson) ? json_decode((string) $settings['array']['oc_appconfig'], true) : $settings['array']['oc_appconfig'];
|
||||
$array['filesReader'] = [
|
||||
'enableEpub' => Config::get('epub_enable', 'true'),
|
||||
'enablePdf' => Config::get('pdf_enable', 'true'),
|
||||
'enableCbx' => Config::get('cbx_enable', 'true'),
|
||||
'enableEpub' => Server::get(IConfig::class)->getUserValue(Server::get(IUser::class)->getUID(), Application::APP_ID, 'epub_enable', 'true'),
|
||||
'enablePdf' => Server::get(IConfig::class)->getUserValue(Server::get(IUser::class)->getUID(), Application::APP_ID, 'pdf_enable', 'true'),
|
||||
'enableCbx' => Server::get(IConfig::class)->getUserValue(Server::get(IUser::class)->getUID(), Application::APP_ID, 'cbx_enable', 'true'),
|
||||
];
|
||||
$settings['array']['oc_appconfig'] = ($isJson) ? json_encode($array) : $array;
|
||||
}
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace OCA\Epubreader\Settings;
|
||||
|
||||
use OCA\Epubreader\AppInfo\Application;
|
||||
use OCP\AppFramework\Http\TemplateResponse;
|
||||
use OCP\IConfig;
|
||||
use OCP\Settings\ISettings;
|
||||
@ -34,12 +35,12 @@ class Personal implements ISettings {
|
||||
*/
|
||||
public function getForm(): TemplateResponse {
|
||||
$parameters = [
|
||||
'EpubEnable' => $this->configManager->getUserValue($this->userId, 'epubreader', 'epub_enable'),
|
||||
'PdfEnable' => $this->configManager->getUserValue($this->userId, 'epubreader', 'pdf_enable'),
|
||||
'CbxEnable' => $this->configManager->getUserValue($this->userId, 'epubreader', 'cbx_enable'),
|
||||
'EpubEnable' => $this->configManager->getUserValue($this->userId, Application::APP_ID, 'epub_enable'),
|
||||
'PdfEnable' => $this->configManager->getUserValue($this->userId, Application::APP_ID, 'pdf_enable'),
|
||||
'CbxEnable' => $this->configManager->getUserValue($this->userId, Application::APP_ID, 'cbx_enable'),
|
||||
];
|
||||
|
||||
return new TemplateResponse('epubreader', 'settings-personal', $parameters, '');
|
||||
return new TemplateResponse(Application::APP_ID, 'settings-personal', $parameters, '');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -56,7 +57,7 @@ class Personal implements ISettings {
|
||||
* @since 9.1
|
||||
*/
|
||||
public function getSection(): string {
|
||||
return 'epubreader';
|
||||
return Application::APP_ID;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -65,7 +66,7 @@ class Personal implements ISettings {
|
||||
* @return string
|
||||
*/
|
||||
public function getSectionID(): string {
|
||||
return 'epubreader';
|
||||
return Application::APP_ID;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
namespace OCA\Epubreader\Settings;
|
||||
|
||||
use OCA\Epubreader\AppInfo\Application;
|
||||
use OCP\IL10N;
|
||||
use OCP\IURLGenerator;
|
||||
use OCP\Settings\IIconSection;
|
||||
@ -31,7 +32,7 @@ class PersonalSection implements IIconSection {
|
||||
* @return string
|
||||
*/
|
||||
public function getIcon(): string {
|
||||
return $this->urlGenerator->imagePath('epubreader', 'app.svg');
|
||||
return $this->urlGenerator->imagePath(Application::APP_ID, 'app.svg');
|
||||
}
|
||||
|
||||
/**
|
||||
@ -40,7 +41,7 @@ class PersonalSection implements IIconSection {
|
||||
* @return string
|
||||
*/
|
||||
public function getID(): string {
|
||||
return 'epubreader';
|
||||
return Application::APP_ID;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,63 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* ownCloud - Epubreader App
|
||||
*
|
||||
* @author Frank de Lange
|
||||
* @copyright 2014,2018 Frank de Lange
|
||||
*
|
||||
* This file is licensed under the Affero General Public License version 3 or
|
||||
* later.
|
||||
*/
|
||||
|
||||
namespace OCA\Epubreader;
|
||||
|
||||
/**
|
||||
* Config class for Reader
|
||||
*/
|
||||
class Config {
|
||||
|
||||
/**
|
||||
* @brief get user config value
|
||||
*
|
||||
* @param string $key value to retrieve
|
||||
* @param string $default default value to use
|
||||
* @return string retrieved value or default
|
||||
*/
|
||||
public static function get(string $key, string $default): string {
|
||||
return \OC::$server->getConfig()->getUserValue(\OC_User::getUser(), 'epubreader', $key, $default);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief set user config value
|
||||
*
|
||||
* @param string $key key for value to change
|
||||
* @param string $value value to use
|
||||
* @return bool success
|
||||
*/
|
||||
public static function set(string $key, string $value): bool {
|
||||
return \OC::$server->getConfig()->setUserValue(\OC_User::getUser(), 'epubreader', $key, $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief get app config value
|
||||
*
|
||||
* @param string $key value to retrieve
|
||||
* @param string $default default value to use
|
||||
* @return string retrieved value or default
|
||||
*/
|
||||
public static function getApp(string $key, string $default): string {
|
||||
return \OC::$server->getConfig()->getAppValue('epubreader', $key, $default);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief set app config value
|
||||
*
|
||||
* @param string $key key for value to change
|
||||
* @param string $value value to use
|
||||
* @return bool success
|
||||
*/
|
||||
public static function setApp(string $key, string $value): bool {
|
||||
return \OC::$server->getConfig()->setAppValue('epubreader', $key, $value);
|
||||
}
|
||||
}
|
@ -29,11 +29,6 @@
|
||||
<referencedClass name="Doctrine\DBAL\Schema\Table" />
|
||||
</errorLevel>
|
||||
</UndefinedDocblockClass>
|
||||
<UndefinedClass>
|
||||
<errorLevel type="suppress">
|
||||
<referencedClass name="OC" />
|
||||
</errorLevel>
|
||||
</UndefinedClass>
|
||||
<PropertyNotSetInConstructor errorLevel="suppress" />
|
||||
</issueHandlers>
|
||||
</psalm>
|
||||
|
Reference in New Issue
Block a user