6 * Copyright (c) 1999-2001 The SquirrelMail Development Team
7 * Licensed under the GNU GPL. For full terms see the file COPYING.
9 * This contains functions for manipulating user preferences
14 global $prefs_are_cached, $prefs_cache;
15 if (!session_is_registered('prefs_are_cached')) {
16 $prefs_are_cached = false;
17 $prefs_cache = array();
21 * Check the preferences into the session cache.
23 function cachePrefValues($data_dir, $username) {
24 global $prefs_are_cached, $prefs_cache;
26 if ($prefs_are_cached) {
30 $filename = $data_dir . $username . '.pref';
32 if (!file_exists($filename)) {
33 printf (_("Preference file, %s, does not exist. Log out, and log back in to create a default preference file."), $filename);
37 $file = fopen($filename, 'r');
39 /* Read in the preferences. */
41 while (! feof($file)) {
42 $pref = trim(fgets($file, 1024));
43 $equalsAt = strpos($pref, '=');
45 $key = substr($pref, 0, $equalsAt);
46 $value = substr($pref, $equalsAt +
1);
47 if (substr($key, 0, 9) == 'highlight') {
48 $key = 'highlight' . $highlight_num;
53 $prefs_cache[$key] = $value;
59 session_unregister('prefs_cache');
60 session_register('prefs_cache');
62 $prefs_are_cached = true;
63 session_unregister('prefs_are_cached');
64 session_register('prefs_are_cached');
68 * Return the value for the prefernce given by $string.
70 function getPref($data_dir, $username, $string, $default = '') {
74 cachePrefValues($data_dir, $username);
76 if (isset($prefs_cache[$string])) {
77 $result = $prefs_cache[$string];
86 * Save the preferences for this user.
88 function savePrefValues($data_dir, $username) {
91 $file = fopen($data_dir . $username . '.pref', 'w');
92 foreach ($prefs_cache as $Key => $Value) {
94 fwrite($file, $Key . '=' . $Value . "\n");
101 * Remove a preference for the current user.
103 function removePref($data_dir, $username, $string) {
106 cachePrefValues($data_dir, $username);
108 if (isset($prefs_cache[$string])) {
109 unset($prefs_cache[$string]);
112 savePrefValues($data_dir, $username);
116 * Set a there preference $string to $value.
118 function setPref($data_dir, $username, $string, $value) {
121 cachePrefValues($data_dir, $username);
122 if (isset($prefs_cache[$string]) && ($prefs_cache[$string] == $value)) {
127 removePref($data_dir, $username, $string);
131 $prefs_cache[$string] = $value;
132 savePrefValues($data_dir, $username);
136 * Check for a preferences file. If one can not be found, create it.
138 function checkForPrefs($data_dir, $username) {
139 $filename = $data_dir . $username . '.pref';
140 if (!file_exists($filename) ) {
141 if (!copy($data_dir . 'default_pref', $filename)) {
142 echo _("Error opening ") . $filename;
149 * Write the User Signature.
151 function setSig($data_dir, $username, $value) {
152 $file = fopen($data_dir . $username . '.sig', 'w');
153 fwrite($file, $value);
160 function getSig($data_dir, $username) {
161 $filename = $data_dir . $username . '.sig';
163 if (file_exists($filename)) {
164 $file = fopen($filename, 'r');
165 while (!feof($file)) {
166 $sig .= fgets($file, 1024);