summaryrefslogtreecommitdiff
path: root/app/User.php
diff options
context:
space:
mode:
authorGreg Roach <fisharebest@gmail.com>2017-03-07 12:02:25 +0000
committerGreg Roach <fisharebest@gmail.com>2017-06-17 16:17:44 +0100
commit15d603e7c7c15d20f055d3d9c38d6b133453c5be (patch)
tree14cd348cd8d2cbb465626429334a9558c0bf5a43 /app/User.php
parent95664b44addad5559917902d85518988a3ea7bc4 (diff)
downloadwebtrees-15d603e7c7c15d20f055d3d9c38d6b133453c5be.tar.gz
webtrees-15d603e7c7c15d20f055d3d9c38d6b133453c5be.tar.bz2
webtrees-15d603e7c7c15d20f055d3d9c38d6b133453c5be.zip
jQuery-3, Bootstrap-4, FontAwesome-4.7, Select2-4, remove popup windows
Diffstat (limited to 'app/User.php')
-rw-r--r--app/User.php55
1 files changed, 19 insertions, 36 deletions
diff --git a/app/User.php b/app/User.php
index 0f440938ae..e54b2868f6 100644
--- a/app/User.php
+++ b/app/User.php
@@ -31,8 +31,8 @@ class User {
/** @var string The email address of this user. */
private $email;
- /** @var array Cached copy of the wt_user_setting table. */
- private $preferences;
+ /** @var string[] Cached copy of the wt_user_setting table. */
+ private $preferences = [];
/** @var User[] Only fetch users from the database once. */
private static $cache = [];
@@ -452,28 +452,27 @@ class User {
* Since we'll fetch several settings for each user, and since there aren’t
* that many of them, fetch them all in one database query
*
- * @param string $setting_name
- * @param string|null $default
+ * @param string $setting_name
+ * @param string $default
*
- * @return string|null
+ * @return string
*/
- public function getPreference($setting_name, $default = null) {
- if ($this->preferences === null) {
- if ($this->user_id) {
- $this->preferences = Database::prepare(
- "SELECT SQL_CACHE setting_name, setting_value FROM `##user_setting` WHERE user_id = ?"
- )->execute([$this->user_id])->fetchAssoc();
- } else {
- // Not logged in? We have no preferences.
- $this->preferences = [];
- }
+ public function getPreference($setting_name, $default = '') {
+ if (empty($this->preferences) && $this->user_id !== null) {
+ $this->preferences = Database::prepare(
+ "SELECT SQL_CACHE setting_name, setting_value" .
+ " FROM `##user_setting`" .
+ " WHERE user_id = :user_id"
+ )->execute([
+ 'user_id' => $this->user_id,
+ ])->fetchAssoc();
}
- if (array_key_exists($setting_name, $this->preferences)) {
- return $this->preferences[$setting_name];
- } else {
- return $default;
+ if (!array_key_exists($setting_name, $this->preferences)) {
+ $this->preferences[$setting_name] = $default;
}
+
+ return $this->preferences[$setting_name];
}
/**
@@ -488,24 +487,8 @@ class User {
if ($this->user_id && $this->getPreference($setting_name) !== $setting_value) {
Database::prepare("REPLACE INTO `##user_setting` (user_id, setting_name, setting_value) VALUES (?, ?, LEFT(?, 255))")
->execute([$this->user_id, $setting_name, $setting_value]);
- $this->preferences[$setting_name] = $setting_value;
- }
-
- return $this;
- }
- /**
- * Delete a setting for the user.
- *
- * @param string $setting_name
- *
- * @return User
- */
- public function deletePreference($setting_name) {
- if ($this->user_id && $this->getPreference($setting_name) !== null) {
- Database::prepare("DELETE FROM `##user_setting` WHERE user_id = ? AND setting_name = ?")
- ->execute([$this->user_id, $setting_name]);
- unset($this->preferences[$setting_name]);
+ $this->preferences[$setting_name] = $setting_value;
}
return $this;