From a11ef5134cb4200399e74811bbf9d1100923efcd Mon Sep 17 00:00:00 2001
From: Joas Schilling <coding@schilljs.com>
Date: Wed, 6 Feb 2019 17:07:20 +0100
Subject: [PATCH] Add methods to get casted system values

Signed-off-by: Joas Schilling <coding@schilljs.com>
---
 lib/private/AllConfig.php | 36 ++++++++++++++++++++++++++++++++++++
 lib/public/IConfig.php    | 30 ++++++++++++++++++++++++++++++
 2 files changed, 66 insertions(+)

diff --git a/lib/private/AllConfig.php b/lib/private/AllConfig.php
index 09520aae2a9..05ac1bad64b 100644
--- a/lib/private/AllConfig.php
+++ b/lib/private/AllConfig.php
@@ -125,6 +125,42 @@ class AllConfig implements \OCP\IConfig {
 		return $this->systemConfig->getValue($key, $default);
 	}
 
+	/**
+	 * Looks up a boolean system wide defined value
+	 *
+	 * @param string $key the key of the value, under which it was saved
+	 * @param mixed $default the default value to be returned if the value isn't set
+	 * @return mixed the value or $default
+	 * @since 16.0.0
+	 */
+	public function getSystemValueBool(string $key, bool $default = false): bool {
+		return (bool) $this->getSystemValue($key, $default);
+	}
+
+	/**
+	 * Looks up an integer system wide defined value
+	 *
+	 * @param string $key the key of the value, under which it was saved
+	 * @param mixed $default the default value to be returned if the value isn't set
+	 * @return mixed the value or $default
+	 * @since 16.0.0
+	 */
+	public function getSystemValueInt(string $key, int $default = 0): int {
+		return (int) $this->getSystemValue($key, $default);
+	}
+
+	/**
+	 * Looks up a string system wide defined value
+	 *
+	 * @param string $key the key of the value, under which it was saved
+	 * @param mixed $default the default value to be returned if the value isn't set
+	 * @return mixed the value or $default
+	 * @since 16.0.0
+	 */
+	public function getSystemValueString(string $key, string $default = ''): string {
+		return (string) $this->getSystemValue($key, $default);
+	}
+
 	/**
 	 * Looks up a system wide defined value and filters out sensitive data
 	 *
diff --git a/lib/public/IConfig.php b/lib/public/IConfig.php
index e4cd158f872..878c0acf0c3 100644
--- a/lib/public/IConfig.php
+++ b/lib/public/IConfig.php
@@ -74,6 +74,36 @@ interface IConfig {
 	 */
 	public function getSystemValue($key, $default = '');
 
+	/**
+	 * Looks up a boolean system wide defined value
+	 *
+	 * @param string $key the key of the value, under which it was saved
+	 * @param bool $default the default value to be returned if the value isn't set
+	 * @return bool the value or $default
+	 * @since 16.0.0
+	 */
+	public function getSystemValueBool(string $key, bool $default = false): bool;
+
+	/**
+	 * Looks up an integer system wide defined value
+	 *
+	 * @param string $key the key of the value, under which it was saved
+	 * @param int $default the default value to be returned if the value isn't set
+	 * @return int the value or $default
+	 * @since 16.0.0
+	 */
+	public function getSystemValueInt(string $key, int $default = 0): int;
+
+	/**
+	 * Looks up a string system wide defined value
+	 *
+	 * @param string $key the key of the value, under which it was saved
+	 * @param string $default the default value to be returned if the value isn't set
+	 * @return string the value or $default
+	 * @since 16.0.0
+	 */
+	public function getSystemValueString(string $key, string $default = ''): string;
+
 	/**
 	 * Looks up a system wide defined value and filters out sensitive data
 	 *
-- 
GitLab