From 775d385e09f1a828c02ec2374110e9418df4ba9e Mon Sep 17 00:00:00 2001 From: Alex Tselegidis Date: Fri, 17 Dec 2021 08:44:38 +0100 Subject: [PATCH] Added caching to the settings helper so that we avoid unnecessary queries to the database. --- application/helpers/setting_helper.php | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/application/helpers/setting_helper.php b/application/helpers/setting_helper.php index 547e4013..747c0906 100644 --- a/application/helpers/setting_helper.php +++ b/application/helpers/setting_helper.php @@ -45,6 +45,8 @@ if ( ! function_exists('setting')) throw new InvalidArgumentException('The $key argument cannot be empty.'); } + $cache = config('settings'); + if (is_array($key)) { foreach ($key as $name => $value) @@ -60,13 +62,22 @@ if ( ! function_exists('setting')) } $CI->settings_model->save($setting); + + $cache[$name] = $value; } + config(['settings' => $cache]); + return NULL; } - $setting = $CI->settings_model->query()->where('name', $key)->get()->row_array(); + if (empty($cache[$key])) + { + $setting = $CI->settings_model->query()->where('name', $key)->get()->row_array(); - return $setting['value'] ?? $default; + $cache[$key] = $setting['value'] ?? NULL; + } + + return $cache[$key] ?? $default; } }