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