diff options
author | Frederic Guillot <fred@kanboard.net> | 2016-01-14 21:42:28 -0500 |
---|---|---|
committer | Frederic Guillot <fred@kanboard.net> | 2016-01-14 21:42:28 -0500 |
commit | 9e24bb2ef08b86c6d1aa150fda5a05538f4882da (patch) | |
tree | 88c5e575d58680359dca293c7971292cf08b0626 /app | |
parent | a8f404421f3e404ccd285da861a8cb25f3642f31 (diff) |
Do not cache app settings in session
Diffstat (limited to 'app')
-rw-r--r-- | app/Controller/Currency.php | 2 | ||||
-rw-r--r-- | app/Core/Session/SessionStorage.php | 1 | ||||
-rw-r--r-- | app/Model/Config.php | 112 | ||||
-rw-r--r-- | app/Model/Currency.php | 26 | ||||
-rw-r--r-- | app/Model/Setting.php | 6 |
5 files changed, 68 insertions, 79 deletions
diff --git a/app/Controller/Currency.php b/app/Controller/Currency.php index 3d0deeac..42e404f8 100644 --- a/app/Controller/Currency.php +++ b/app/Controller/Currency.php @@ -38,7 +38,7 @@ class Currency extends Base 'values' => $values, 'errors' => $errors, 'rates' => $this->currency->getAll(), - 'currencies' => $this->config->getCurrencies(), + 'currencies' => $this->currency->getCurrencies(), 'title' => t('Settings').' > '.t('Currency rates'), ))); } diff --git a/app/Core/Session/SessionStorage.php b/app/Core/Session/SessionStorage.php index 5ee1d811..667d9253 100644 --- a/app/Core/Session/SessionStorage.php +++ b/app/Core/Session/SessionStorage.php @@ -8,7 +8,6 @@ namespace Kanboard\Core\Session; * @package session * @author Frederic Guillot * - * @property array $config * @property array $user * @property array $flash * @property array $csrf diff --git a/app/Model/Config.php b/app/Model/Config.php index 839a2fd4..d815246f 100644 --- a/app/Model/Config.php +++ b/app/Model/Config.php @@ -15,32 +15,6 @@ use Kanboard\Core\Session\SessionManager; class Config extends Setting { /** - * Get available currencies - * - * @access public - * @return array - */ - public function getCurrencies() - { - return array( - 'USD' => t('USD - US Dollar'), - 'EUR' => t('EUR - Euro'), - 'GBP' => t('GBP - British Pound'), - 'CHF' => t('CHF - Swiss Francs'), - 'CAD' => t('CAD - Canadian Dollar'), - 'AUD' => t('AUD - Australian Dollar'), - 'NZD' => t('NZD - New Zealand Dollar'), - 'INR' => t('INR - Indian Rupee'), - 'JPY' => t('JPY - Japanese Yen'), - 'RSD' => t('RSD - Serbian dinar'), - 'SEK' => t('SEK - Swedish Krona'), - 'NOK' => t('NOK - Norwegian Krone'), - 'BAM' => t('BAM - Konvertible Mark'), - 'RUB' => t('RUB - Russian Ruble'), - ); - } - - /** * Get available timezones * * @access public @@ -60,6 +34,31 @@ class Config extends Setting } /** + * Get current timezone + * + * @access public + * @return string + */ + public function getCurrentTimezone() + { + if ($this->userSession->isLogged() && ! empty($this->sessionStorage->user['timezone'])) { + return $this->sessionStorage->user['timezone']; + } + + return $this->get('application_timezone', 'UTC'); + } + + /** + * Set timezone + * + * @access public + */ + public function setupTimezone() + { + date_default_timezone_set($this->getCurrentTimezone()); + } + + /** * Get available languages * * @access public @@ -157,43 +156,6 @@ class Config extends Setting } /** - * Get a config variable from the session or the database - * - * @access public - * @param string $name Parameter name - * @param string $default_value Default value of the parameter - * @return string - */ - public function get($name, $default_value = '') - { - if (! SessionManager::isOpen()) { - return $this->getOption($name, $default_value); - } - - // Cache config in session - if (! isset($this->sessionStorage->config[$name])) { - $this->sessionStorage->config = $this->getAll(); - } - - if (! empty($this->sessionStorage->config[$name])) { - return $this->sessionStorage->config[$name]; - } - - return $default_value; - } - - /** - * Reload settings in the session and the translations - * - * @access public - */ - public function reload() - { - $this->sessionStorage->config = $this->getAll(); - $this->setupTranslations(); - } - - /** * Load translations * * @access public @@ -204,28 +166,27 @@ class Config extends Setting } /** - * Get current timezone + * Get a config variable from the session or the database * * @access public + * @param string $name Parameter name + * @param string $default_value Default value of the parameter * @return string */ - public function getCurrentTimezone() + public function get($name, $default_value = '') { - if ($this->userSession->isLogged() && ! empty($this->sessionStorage->user['timezone'])) { - return $this->sessionStorage->user['timezone']; - } - - return $this->get('application_timezone', 'UTC'); + $options = $this->memoryCache->proxy($this, 'getAll'); + return isset($options[$name]) && $options[$name] !== '' ? $options[$name] : $default_value; } /** - * Set timezone + * Reload settings in the session and the translations * * @access public */ - public function setupTimezone() + public function reload() { - date_default_timezone_set($this->getCurrentTimezone()); + $this->setupTranslations(); } /** @@ -236,7 +197,7 @@ class Config extends Setting */ public function optimizeDatabase() { - return $this->db->getconnection()->exec("VACUUM"); + return $this->db->getconnection()->exec('VACUUM'); } /** @@ -266,10 +227,11 @@ class Config extends Setting * * @access public * @param string $option Parameter name + * @return boolean */ public function regenerateToken($option) { - $this->save(array($option => Token::getToken())); + return $this->save(array($option => Token::getToken())); } /** diff --git a/app/Model/Currency.php b/app/Model/Currency.php index 4351d2aa..abcce2f0 100644 --- a/app/Model/Currency.php +++ b/app/Model/Currency.php @@ -18,6 +18,32 @@ class Currency extends Base const TABLE = 'currencies'; /** + * Get available application currencies + * + * @access public + * @return array + */ + public function getCurrencies() + { + return array( + 'USD' => t('USD - US Dollar'), + 'EUR' => t('EUR - Euro'), + 'GBP' => t('GBP - British Pound'), + 'CHF' => t('CHF - Swiss Francs'), + 'CAD' => t('CAD - Canadian Dollar'), + 'AUD' => t('AUD - Australian Dollar'), + 'NZD' => t('NZD - New Zealand Dollar'), + 'INR' => t('INR - Indian Rupee'), + 'JPY' => t('JPY - Japanese Yen'), + 'RSD' => t('RSD - Serbian dinar'), + 'SEK' => t('SEK - Swedish Krona'), + 'NOK' => t('NOK - Norwegian Krone'), + 'BAM' => t('BAM - Konvertible Mark'), + 'RUB' => t('RUB - Russian Ruble'), + ); + } + + /** * Get all currency rates * * @access public diff --git a/app/Model/Setting.php b/app/Model/Setting.php index 3507d424..44e6c065 100644 --- a/app/Model/Setting.php +++ b/app/Model/Setting.php @@ -47,10 +47,12 @@ abstract class Setting extends Base */ public function getOption($name, $default = '') { - return $this->db + $value = $this->db ->table(self::TABLE) ->eq('option', $name) - ->findOneColumn('value') ?: $default; + ->findOneColumn('value'); + + return $value === null || $value === false || $value === '' ? $default : $value; } /** |