X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Fprefs.php;h=76704e93e5416be5c0dbaa604bca2be60cf61332;hb=63123e7c55270c877981b5bb6a76607bad7a16fc;hp=30bfd06ada945e97d99af38d1076571d01ccbdc7;hpb=19acd99fabdc29d6e87eebb355f5f8c6b0fac4da;p=squirrelmail.git diff --git a/functions/prefs.php b/functions/prefs.php index 30bfd06a..76704e93 100644 --- a/functions/prefs.php +++ b/functions/prefs.php @@ -1,94 +1,129 @@ - 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; - } + global $prefs_cache; + + cachePrefValues($data_dir, $username); + + if (isset($prefs_cache[$string])) + return $prefs_cache[$string]; + return ''; + } - $file = fopen($filename, "r"); - /** 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)); - } + 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 ""; } - /** 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 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) { + global $prefs_cache; + + cachePrefValues($data_dir, $username); + $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); } @@ -97,16 +132,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; }