59177427 |
1 | <?php |
65b14f90 |
2 | /** |
3 | ** prefs.php |
4 | ** |
5 | ** This contains functions for manipulating user preferences |
245a6892 |
6 | ** |
7 | ** $Id$ |
65b14f90 |
8 | **/ |
9 | |
f435778e |
10 | if (defined('prefs_php')) |
11 | return; |
12 | define('prefs_php', true); |
13 | |
14 | global $prefs_are_cached, $prefs_cache; |
374b7e37 |
15 | if (!session_is_registered('prefs_are_cached')) { |
16 | $prefs_are_cached = false; |
17 | $prefs_cache = array(); |
18 | } |
31ac7db8 |
19 | |
374b7e37 |
20 | function cachePrefValues($data_dir, $username) { |
31ac7db8 |
21 | global $prefs_are_cached, $prefs_cache; |
22 | |
23 | if ($prefs_are_cached) |
24 | return; |
25 | |
26 | $filename = $data_dir . $username . '.pref'; |
27 | |
28 | if (!file_exists($filename)) { |
374b7e37 |
29 | printf (_("Preference file, %s, does not exist. Log out, and log back in to create a default preference file."), $filename); |
31ac7db8 |
30 | exit; |
31 | } |
32 | |
63123e7c |
33 | $file = fopen($filename, 'r'); |
31ac7db8 |
34 | |
35 | /** read in all the preferences **/ |
36 | $highlight_num = 0; |
37 | while (! feof($file)) { |
38 | $pref = trim(fgets($file, 1024)); |
374b7e37 |
39 | $equalsAt = strpos($pref, '='); |
40 | if ($equalsAt > 0) { |
41 | $Key = substr($pref, 0, $equalsAt); |
42 | $Value = substr($pref, $equalsAt + 1); |
43 | if (substr($Key, 0, 9) == 'highlight') { |
44 | $Key = 'highlight' . $highlight_num; |
45 | $highlight_num ++; |
31ac7db8 |
46 | } |
47 | |
374b7e37 |
48 | if ($Value != '') { |
49 | $prefs_cache[$Key] = $Value; |
50 | } |
51 | } |
31ac7db8 |
52 | } |
53 | fclose($file); |
374b7e37 |
54 | |
55 | session_unregister('prefs_cache'); |
56 | session_register('prefs_cache'); |
31ac7db8 |
57 | |
58 | $prefs_are_cached = true; |
374b7e37 |
59 | session_unregister('prefs_are_cached'); |
60 | session_register('prefs_are_cached'); |
31ac7db8 |
61 | } |
62 | |
63 | |
65b14f90 |
64 | /** returns the value for $string **/ |
d0747e26 |
65 | function getPref($data_dir, $username, $string) { |
31ac7db8 |
66 | global $prefs_cache; |
67 | |
68 | cachePrefValues($data_dir, $username); |
69 | |
70 | if (isset($prefs_cache[$string])) |
71 | return $prefs_cache[$string]; |
72 | return ''; |
65b14f90 |
73 | } |
74 | |
44f642f5 |
75 | |
374b7e37 |
76 | function savePrefValues($data_dir, $username) { |
31ac7db8 |
77 | global $prefs_cache; |
78 | |
63123e7c |
79 | $file = fopen($data_dir . $username . '.pref', 'w'); |
374b7e37 |
80 | foreach ($prefs_cache as $Key => $Value) { |
81 | if (isset($Value)) { |
31ac7db8 |
82 | fwrite($file, $Key . '=' . $Value . "\n"); |
374b7e37 |
83 | } |
44f642f5 |
84 | } |
85 | fclose($file); |
31ac7db8 |
86 | } |
44f642f5 |
87 | |
44f642f5 |
88 | |
31ac7db8 |
89 | function removePref($data_dir, $username, $string) { |
90 | global $prefs_cache; |
91 | |
92 | cachePrefValues($data_dir, $username); |
93 | |
374b7e37 |
94 | if (isset($prefs_cache[$string])) { |
31ac7db8 |
95 | unset($prefs_cache[$string]); |
374b7e37 |
96 | } |
97 | |
31ac7db8 |
98 | savePrefValues($data_dir, $username); |
44f642f5 |
99 | } |
100 | |
65b14f90 |
101 | /** sets the pref, $string, to $set_to **/ |
d0747e26 |
102 | function setPref($data_dir, $username, $string, $set_to) { |
31ac7db8 |
103 | global $prefs_cache; |
104 | |
105 | cachePrefValues($data_dir, $username); |
bf1d3803 |
106 | if (isset($prefs_cache[$string]) && $prefs_cache[$string] == $set_to) |
fa42b484 |
107 | return; |
ed9f3a67 |
108 | if ($set_to === '') { |
fa42b484 |
109 | removePref($data_dir, $username, $string); |
110 | return; |
111 | } |
31ac7db8 |
112 | $prefs_cache[$string] = $set_to; |
31ac7db8 |
113 | savePrefValues($data_dir, $username); |
65b14f90 |
114 | } |
115 | |
f804972b |
116 | |
d068c0ec |
117 | /** This checks if there is a pref file, if there isn't, it will |
118 | create it. **/ |
d0747e26 |
119 | function checkForPrefs($data_dir, $username) { |
63123e7c |
120 | $filename = $data_dir . $username . '.pref'; |
65b14f90 |
121 | if (!file_exists($filename)) { |
63123e7c |
122 | if (!copy($data_dir . 'default_pref', $filename)) { |
123 | echo _("Error opening ") . $filename; |
65b14f90 |
124 | exit; |
125 | } |
126 | } |
65b14f90 |
127 | } |
f804972b |
128 | |
129 | |
f804972b |
130 | /** Writes the Signature **/ |
131 | function setSig($data_dir, $username, $string) { |
63123e7c |
132 | $file = fopen($data_dir . $username . '.sig', 'w'); |
f804972b |
133 | fwrite($file, $string); |
134 | fclose($file); |
135 | } |
136 | |
137 | |
138 | |
139 | /** Gets the signature **/ |
140 | function getSig($data_dir, $username) { |
63123e7c |
141 | $filename = $data_dir . $username . '.sig'; |
142 | $sig = ''; |
f804972b |
143 | if (file_exists($filename)) { |
63123e7c |
144 | $file = fopen($filename, 'r'); |
f804972b |
145 | while (!feof($file)) { |
146 | $sig .= fgets($file, 1024); |
147 | } |
148 | fclose($file); |
f804972b |
149 | } |
150 | return $sig; |
151 | } |
5f29dd3b |
152 | ?> |