X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Fprefs.php;h=76704e93e5416be5c0dbaa604bca2be60cf61332;hb=63123e7c55270c877981b5bb6a76607bad7a16fc;hp=5a2a89d45059eab6ceb4f92632484ca36994ba72;hpb=d3cdb279bd61b172926b51d41d09c8a691d6c347;p=squirrelmail.git diff --git a/functions/prefs.php b/functions/prefs.php index 5a2a89d4..76704e93 100644 --- a/functions/prefs.php +++ b/functions/prefs.php @@ -1,75 +1,146 @@ - 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($username, $string) { - $filename = "../data/$username.pref"; - $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 getPref($data_dir, $username, $string) { + global $prefs_cache; + + cachePrefValues($data_dir, $username); + + if (isset($prefs_cache[$string])) + return $prefs_cache[$string]; + return ''; + } + + + 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($username, $string, $set_to) { - $filename = "../data/$username.pref"; - $found = false; + 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'; 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; + if (!copy($data_dir . 'default_pref', $filename)) { + echo _("Error opening ") . $filename; + exit; } } - 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); - } + /** 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($username) { - $filename = "../data/$username.pref"; - if (!file_exists($filename)) { - if (!copy("../data/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 +?>