root/db-prefs.php

Revision 2131, 2.2 kB (checked in by www-ttrss, 1 year ago)

[project @ get_pref: do not use cache when querying prefs for specific user]

Line 
1 <?php
2     require_once "config.php";
3     require_once "db.php";
4
5     if (!defined('DISABLE_SESSIONS') && !SINGLE_USER_MODE) {
6         if (!$_SESSION["prefs_cache"])
7             $_SESSION["prefs_cache"] = array();
8     }
9
10     function get_pref($link, $pref_name, $user_id = false, $die_on_error = false) {
11
12         $pref_name = db_escape_string($pref_name);
13         $prefs_cache = true;
14
15         if (!$user_id) {
16             $user_id = $_SESSION["uid"];
17         } else {
18             $user_id = sprintf("%d", $user_id);
19             $prefs_cache = false;
20         }
21
22         if ($prefs_cache && !defined('DISABLE_SESSIONS') && !SINGLE_USER_MODE) {   
23             if ($_SESSION["prefs_cache"] && $_SESSION["prefs_cache"][$pref_name]) {
24                 $tuple = $_SESSION["prefs_cache"][$pref_name];
25                 return convert_pref_type($tuple["value"], $tuple["type"]);
26             }
27         }
28
29         $result = db_query($link, "SELECT
30             value,ttrss_prefs_types.type_name as type_name
31             FROM
32                 ttrss_user_prefs,ttrss_prefs,ttrss_prefs_types
33             WHERE
34                 ttrss_user_prefs.pref_name = '$pref_name' AND
35                 ttrss_prefs_types.id = type_id AND
36                 owner_uid = '$user_id' AND
37                 ttrss_user_prefs.pref_name = ttrss_prefs.pref_name");
38
39         if (db_num_rows($result) > 0) {
40             $value = db_fetch_result($result, 0, "value");
41             $type_name = db_fetch_result($result, 0, "type_name");
42
43             if (!defined('DISABLE_SESSIONS') && !SINGLE_USER_MODE) {   
44                 if ($user_id = $_SESSION["uid"]) {
45                     $_SESSION["prefs_cache"][$pref_name]["type"] = $type_name;
46                     $_SESSION["prefs_cache"][$pref_name]["value"] = $value;
47                 }
48             }
49
50             return convert_pref_type($value, $type_name);
51             
52         } else {       
53             if ($die_on_error) {
54                 die("Fatal error, unknown preferences key: $pref_name");
55             } else {
56                 return null;
57             }
58         }
59     }
60
61     function convert_pref_type($value, $type_name) {
62         if ($type_name == "bool") {           
63             return $value == "true";               
64         } else if ($type_name == "integer") {           
65             return sprintf("%d", $value);               
66         } else {
67             return $value;
68         }
69     }
70
71     // doesn't peform any type checking, be vigilant
72     
73     function set_pref($link, $key, $value) {
74         $key = db_escape_string($key);
75         $value = db_escape_string($value);
76     
77         db_query($link, "UPDATE ttrss_user_prefs SET
78             value = '$value' WHERE pref_name = '$key'
79                 AND owner_uid = " . $_SESSION["uid"]);
80
81         $_SESSION["prefs_cache"] = array();
82
83     }
84 ?>
85
Note: See TracBrowser for help on using the browser.