From 7f9aaad324cfa1fbc81b01b0cd95440f05218ad3 Mon Sep 17 00:00:00 2001 From: Marcin Kurczewski Date: Tue, 22 Oct 2013 00:30:12 +0200 Subject: [PATCH] User settings DB column greatly compressed --- src/Models/Model_User.php | 23 ++++++++++++----------- src/Models/PostSafety.php | 5 +++++ 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/Models/Model_User.php b/src/Models/Model_User.php index c1f9f0ee..46db8404 100644 --- a/src/Models/Model_User.php +++ b/src/Models/Model_User.php @@ -43,32 +43,33 @@ class Model_User extends RedBean_SimpleModel + const SETTING_SAFETY = 1; + const SETTING_ENDLESS_SCROLLING = 2; + public function hasEnabledSafety($safety) { - return $this->getSetting('safety-' . $safety) !== false; + return $this->getSetting(self::SETTING_SAFETY) & PostSafety::toFlag($safety); } public function enableSafety($safety, $enabled) { + $new = $this->getSetting(self::SETTING_SAFETY); if (!$enabled) { - $this->setSetting('safety-' . $safety, false); - $anythingEnabled = false; - foreach (PostSafety::getAll() as $safety) - if (self::hasEnabledSafety($safety)) - $anythingEnabled = true; - if (!$anythingEnabled) - $this->setSetting('safety-' . PostSafety::Safe, true); + $new &= ~PostSafety::toFlag($safety); + if (!$new) + $new = PostSafety::toFlag(PostSafety::Safe); } else { - $this->setSetting('safety-' . $safety, true); + $new |= PostSafety::toFlag($safety); } + $this->setSetting(self::SETTING_SAFETY, $new); } public function hasEnabledEndlessScrolling() { - $ret = $this->getSetting('endless-scrolling'); + $ret = $this->getSetting(self::SETTING_ENDLESS_SCROLLING); if ($ret === null) $ret = \Chibi\Registry::getConfig()->browsing->endlessScrollingDefault; return $ret; @@ -76,7 +77,7 @@ class Model_User extends RedBean_SimpleModel public function enableEndlessScrolling($enabled) { - $this->setSetting('endless-scrolling', (bool) $enabled); + $this->setSetting(self::SETTING_ENDLESS_SCROLLING, $enabled ? 1 : 0); } diff --git a/src/Models/PostSafety.php b/src/Models/PostSafety.php index 1c02d982..845977b5 100644 --- a/src/Models/PostSafety.php +++ b/src/Models/PostSafety.php @@ -4,4 +4,9 @@ class PostSafety extends Enum const Safe = 1; const Sketchy = 2; const Unsafe = 3; + + public static function toFlag($safety) + { + return pow(2, $safety); + } }