X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=functions%2Fprefs.php;h=5ecf530f94476e64b9e831386f583201b8a36184;hp=097c2dac2d0bc53a9ab4a92a8a73c129962096d7;hb=7dc31c07fa0d40ff75069563d1fe45a41ebe06ed;hpb=32c7898caf59016a8b858f2dc3beb7f9e0049064 diff --git a/functions/prefs.php b/functions/prefs.php index 097c2dac..5ecf530f 100644 --- a/functions/prefs.php +++ b/functions/prefs.php @@ -1,92 +1,136 @@ - 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)); - } - } - fclose($file); - return ""; + if (isset($prefs_cache[$string])) + return $prefs_cache[$string]; + else + return $default; } - /** 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; - } - } - fclose($file); - $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); - } - fwrite($file, "$string=$set_to\n", 1024); + 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); } + 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) { + 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; + } + $prefs_cache[$string] = $set_to; + savePrefValues($data_dir, $username); + } - /** This checks if there is a pref file, if there isn't, it will create it. **/ + /** 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"; + $filename = $data_dir . $username . '.pref'; if (!file_exists($filename)) { - if (!copy("$data_dir" . "default_pref", $filename)) { - echo _("Error opening ") ."$filename"; + if (!copy($data_dir . 'default_pref', $filename)) { + echo _("Error opening ") . $filename; exit; } } - return; } - /** Writes the Signature **/ function setSig($data_dir, $username, $string) { - $filename = "$data_dir$username.sig"; - $file = fopen($filename, "w"); + $file = fopen($data_dir . $username . '.sig', 'w'); fwrite($file, $string); fclose($file); } @@ -95,16 +139,14 @@ /** Gets the signature **/ function getSig($data_dir, $username) { - $filename = "$data_dir$username.sig"; + $filename = $data_dir . $username . '.sig'; + $sig = ''; if (file_exists($filename)) { - $file = fopen($filename, "r"); + $file = fopen($filename, 'r'); while (!feof($file)) { $sig .= fgets($file, 1024); } fclose($file); - } else { - echo _("Signature file not found."); - exit; } return $sig; }