summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Roach <fisharebest@webtrees.net>2019-01-18 16:29:17 +0000
committerGreg Roach <fisharebest@webtrees.net>2019-01-18 16:29:17 +0000
commit83c7613e024616d597b3e3682d8f3c4984bbfd8d (patch)
treeaa3e1b2ee1cf3fb1a8566172d41b46473f9a3d0f
parent5cdfbae86036fb027736ced050ffb4c2dfb3d257 (diff)
downloadwebtrees-83c7613e024616d597b3e3682d8f3c4984bbfd8d.tar.gz
webtrees-83c7613e024616d597b3e3682d8f3c4984bbfd8d.tar.bz2
webtrees-83c7613e024616d597b3e3682d8f3c4984bbfd8d.zip
Use cache to reduce DB queries on block_setting table
-rw-r--r--app/Module/AbstractModule.php16
-rw-r--r--app/User.php18
2 files changed, 20 insertions, 14 deletions
diff --git a/app/Module/AbstractModule.php b/app/Module/AbstractModule.php
index d3d5abe110..86bce4084a 100644
--- a/app/Module/AbstractModule.php
+++ b/app/Module/AbstractModule.php
@@ -56,18 +56,20 @@ abstract class AbstractModule
*
* @param int $block_id
* @param string $setting_name
- * @param string $default_value
+ * @param string $default
*
* @return string
*/
- public function getBlockSetting(int $block_id, string $setting_name, string $default_value = ''): string
+ public function getBlockSetting(int $block_id, string $setting_name, string $default = ''): string
{
- $setting_value = DB::table('block_setting')
- ->where('block_id', '=', $block_id)
- ->where('setting_name', '=', $setting_name)
- ->value('setting_value');
+ $settings = app('cache.array')->rememberForever('block_setting' . $block_id, function () use ($block_id) {
+ return DB::table('block_setting')
+ ->where('block_id', '=', $block_id)
+ ->pluck('setting_value', 'setting_name')
+ ->all();
+ });
- return $setting_value ?? $default_value;
+ return $settings[$setting_name] ?? $default;
}
/**
diff --git a/app/User.php b/app/User.php
index f94dd350be..7c9bdd3de5 100644
--- a/app/User.php
+++ b/app/User.php
@@ -558,14 +558,18 @@ class User
*/
public function getPreference($setting_name, $default = ''): string
{
- if (empty($this->preferences) && $this->user_id !== 0) {
- $this->preferences = DB::table('user_setting')
- ->where('user_id', '=', $this->user_id)
- ->pluck('setting_value', 'setting_name')
- ->all();
- }
+ $preferences = app('cache.array')->rememberForever('user_setting' . $this->user_id, function () {
+ if ($this->user_id) {
+ return DB::table('user_setting')
+ ->where('user_id', '=', $this->user_id)
+ ->pluck('setting_value', 'setting_name')
+ ->all();
+ } else {
+ return [];
+ }
+ });
- return $this->preferences[$setting_name] ?? $default;
+ return $preferences[$setting_name] ?? $default;
}
/**