X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=functions%2Fprefs.php;h=5ecf530f94476e64b9e831386f583201b8a36184;hp=79cee53ebd825187f431ab9379e181b61329f396;hb=7dc31c07fa0d40ff75069563d1fe45a41ebe06ed;hpb=96ba920bb2821a38dfa3d7554f7b3406d3464544 diff --git a/functions/prefs.php b/functions/prefs.php index 79cee53e..5ecf530f 100644 --- a/functions/prefs.php +++ b/functions/prefs.php @@ -1,81 +1,153 @@ - 0) { + $Key = substr($pref, 0, $equalsAt); + $Value = substr($pref, $equalsAt + 1); + if (substr($Key, 0, 9) == 'highlight') { + $Key = 'highlight' . $highlight_num; + $highlight_num ++; + } + + if ($Value != '') { + $prefs_cache[$Key] = $Value; + } + } + } + fclose($file); + + session_unregister('prefs_cache'); + session_register('prefs_cache'); + + $prefs_are_cached = true; + session_unregister('prefs_are_cached'); + session_register('prefs_are_cached'); + } + + /** returns the value for $string **/ - function getPref($data_dir, $username, $string) { - $filename = "$data_dir$username.pref"; - if (!file_exists($filename)) { - echo "Preference file \"$filename\" not found. Exiting abnormally"; - exit; - } + function getPref($data_dir, $username, $string, $default = '') { + global $prefs_cache; - $file = fopen($filename, "r"); + cachePrefValues($data_dir, $username); - /** read in all the preferences **/ - for ($i=0; !feof($file); $i++) { - $pref = fgets($file, 1024); - if (substr($pref, 0, strpos($pref, "=")) == $string) { - fclose($file); - return trim(substr($pref, strpos($pref, "=")+1)); - } + if (isset($prefs_cache[$string])) + return $prefs_cache[$string]; + else + return $default; + } + + + function savePrefValues($data_dir, $username) { + global $prefs_cache; + + $file = fopen($data_dir . $username . '.pref', 'w'); + foreach ($prefs_cache as $Key => $Value) { + if (isset($Value)) { + fwrite($file, $Key . '=' . $Value . "\n"); + } } fclose($file); - return ""; } + + function removePref($data_dir, $username, $string) { + global $prefs_cache; + + cachePrefValues($data_dir, $username); + + if (isset($prefs_cache[$string])) { + unset($prefs_cache[$string]); + } + + savePrefValues($data_dir, $username); + } + /** sets the pref, $string, to $set_to **/ function setPref($data_dir, $username, $string, $set_to) { - $filename = "$data_dir$username.pref"; - $found = false; - if (!file_exists($filename)) { - echo "Preference file, $filename, does not exist. Log out, and log back in to create a default preference file.
"; - exit; - } - $file = fopen($filename, "r"); - - /** read in all the preferences **/ - for ($i=0; !feof($file); $i++) { - $pref[$i] = fgets($file, 1024); - if (substr($pref[$i], 0, strpos($pref[$i], "=")) == $string) { - $found = true; - $pos = $i; - } + global $prefs_cache; + + cachePrefValues($data_dir, $username); + if (isset($prefs_cache[$string]) && $prefs_cache[$string] == $set_to) + return; + if ($set_to === '') { + removePref($data_dir, $username, $string); + return; } - fclose($file); + $prefs_cache[$string] = $set_to; + savePrefValues($data_dir, $username); + } - $file = fopen($filename, "w"); - if ($found == true) { - for ($i=0; $i < count($pref); $i++) { - if ($i == $pos) { - fwrite($file, "$string=$set_to\n", 1024); - } else { - fwrite($file, "$pref[$i]", 1024); - } - } - } else { - for ($i=0; $i < count($pref); $i++) { - fwrite($file, "$pref[$i]", 1024); + + /** This checks if there is a pref file, if there isn't, it will + create it. **/ + function checkForPrefs($data_dir, $username) { + $filename = $data_dir . $username . '.pref'; + if (!file_exists($filename)) { + if (!copy($data_dir . 'default_pref', $filename)) { + echo _("Error opening ") . $filename; + exit; } - fwrite($file, "$string=$set_to\n", 1024); } + } + + /** Writes the Signature **/ + function setSig($data_dir, $username, $string) { + $file = fopen($data_dir . $username . '.sig', 'w'); + fwrite($file, $string); fclose($file); } - /** This checks if there is a pref file, if there isn't, it will create it. **/ - function checkForPrefs($data_dir, $username) { - $filename = "$data_dir$username.pref"; - echo "$filename"; - if (!file_exists($filename)) { - if (!copy("$data_dir$default_pref", $filename)) { - echo "Error opening $filename"; - exit; + + + /** Gets the signature **/ + function getSig($data_dir, $username) { + $filename = $data_dir . $username . '.sig'; + $sig = ''; + if (file_exists($filename)) { + $file = fopen($filename, 'r'); + while (!feof($file)) { + $sig .= fgets($file, 1024); } + fclose($file); } - return; + return $sig; } -?> \ No newline at end of file +?>