X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=functions%2Fprefs.php;h=5ecf530f94476e64b9e831386f583201b8a36184;hp=e43d18071970f33891b6869181ac259f3b4f1478;hb=7dc31c07fa0d40ff75069563d1fe45a41ebe06ed;hpb=e9f8ea4ecb40efdb6f19631f8359ebd1fbf588be diff --git a/functions/prefs.php b/functions/prefs.php index e43d1807..5ecf530f 100644 --- a/functions/prefs.php +++ b/functions/prefs.php @@ -1,131 +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; } - function removePref($data_dir, $username, $string) { - $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"); - for ($i=0; !feof($file); $i++) { - $pref[$i] = fgets($file, 1024); - if (substr($pref[$i], 0, strpos($pref[$i], "=")) == $string) { - $i--; - } + 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); + } - for ($i=0,$j=0; $i < count($pref); $i++) { - if (substr($pref[$i], 0, 9) == "highlight") { - $hlt[$j] = substr($pref[$i], strpos($pref[$i], "=")+1); - $j++; - } - } - $file = fopen($filename, "w"); - for ($i=0; $i < count($pref); $i++) { - if (substr($pref[$i], 0, 9) != "highlight") { - fwrite($file, "$pref[$i]", 1024); - } - } - for ($i=0; $i < count($hlt); $i++) { - fwrite($file, "highlight$i=$hlt[$i]"); + function removePref($data_dir, $username, $string) { + global $prefs_cache; + + cachePrefValues($data_dir, $username); + + if (isset($prefs_cache[$string])) { + unset($prefs_cache[$string]); } - - fclose($file); + + 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; + 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; } - $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); - } - - fclose($file); + $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. **/ 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; } } } - /** 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); } @@ -134,9 +139,10 @@ /** 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); }