From 5bcf0ac4e7522d7b40926ded5a7845d1a674c820 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20Schro=CC=88der?= Date: Sun, 10 Nov 2013 15:11:50 +0100 Subject: [PATCH] improved setting manager --- application/core/settingManager.php | 62 +++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 13 deletions(-) diff --git a/application/core/settingManager.php b/application/core/settingManager.php index c163533c..d0a8311d 100644 --- a/application/core/settingManager.php +++ b/application/core/settingManager.php @@ -73,6 +73,23 @@ class SettingManager { return true; } + /** + * Get class name from param + * + * @param mixed $object + * @return string + */ + private function getClassName($object) { + if (is_object($object)) { + return get_class($object); + } + if (is_string($object)) { + return $object; + } + trigger_error('Invalid class param. ' . $object); + return (string) $object; + } + /** * Get type for given parameter * @@ -137,7 +154,6 @@ class SettingManager { if ($type === null) { $type = $this->getType($value); } - if ($type === self::TYPE_ARRAY) { return implode($this->arrayDelimiter, $value); } @@ -156,10 +172,7 @@ class SettingManager { if ($default === null || is_object($default)) { return false; } - $className = $object; - if (is_object($object)) { - $className = get_class($object); - } + $className = $this->getClassName($object); $type = $this->getType($default); $default = $this->formatSetting($default, $type); $mysqli = $this->maniaControl->database->mysqli; @@ -198,10 +211,7 @@ class SettingManager { * @return mixed */ public function getSetting($object, $settingName, $default = null) { - $className = $object; - if (is_object($object)) { - $className = get_class($object); - } + $className = $this->getClassName($object); $mysqli = $this->maniaControl->database->mysqli; $settingQuery = "SELECT `type`, `value` FROM `" . self::TABLE_SETTINGS . "` WHERE `class` = ? @@ -239,10 +249,7 @@ class SettingManager { * @return bool */ public function setSetting($object, $settingName, $value) { - $className = $object; - if (is_object($object)) { - $className = get_class($object); - } + $className = $this->getClassName($object); $mysqli = $this->maniaControl->database->mysqli; $settingQuery = "UPDATE `" . self::TABLE_SETTINGS . "` SET `value` = ? @@ -263,6 +270,35 @@ class SettingManager { $settingStatement->close(); return true; } + + /** + * Reset a setting to its default value + * + * @param object $object + * @param string $settingname + * @return bool + */ + public function resetSetting($object, $settingname) { + $className = $this->getClassName($object); + $mysqli = $this->maniaControl->database->mysqli; + $settingQuery = "UPDATE `" . self::TABLE_SETTINGS . "` + SET `value` = `default` + WHERE `class` = ? + AND `setting` = ?;"; + $settingStatement = $mysqli->prepare($settingQuery); + if ($mysqli->error) { + trigger_error($mysqli->error); + return false; + } + $settingStatement->bind_param('ss', $className, $settingName); + $settingStatement->execute(); + if ($settingStatement->error) { + trigger_error($settingStatement->error); + return false; + } + $settingStatement->close(); + return true; + } } ?>