X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Fprefs.php;h=0042efe7ae7c1d63145c4543fb9a701c32a838f6;hb=943292e4d8df9faec0129b60227c5562564be6f8;hp=aaa263b2aa4550a3407b37f5c3c37eed44757dd1;hpb=f435778e5dabea883d6394d5ab43ae72d51dfd50;p=squirrelmail.git diff --git a/functions/prefs.php b/functions/prefs.php index aaa263b2..0042efe7 100644 --- a/functions/prefs.php +++ b/functions/prefs.php @@ -12,11 +12,12 @@ define('prefs_php', true); global $prefs_are_cached, $prefs_cache; - $prefs_are_cached = false; - $prefs_cache = array(); + if (!session_is_registered('prefs_are_cached')) { + $prefs_are_cached = false; + $prefs_cache = array(); + } - function cachePrefValues($data_dir, $username) - { + function cachePrefValues($data_dir, $username) { global $prefs_are_cached, $prefs_cache; if ($prefs_are_cached) @@ -25,34 +26,38 @@ $filename = $data_dir . $username . '.pref'; if (!file_exists($filename)) { - printf (_("Preference file, %s, does not exist. Log out, and log back in to create a default preference file."), $filename); + printf (_("Preference file, %s, does not exist. Log out, and log back in to create a default preference file."), $filename); exit; } - $file = fopen($filename, "r"); + $file = fopen($filename, 'r'); /** read in all the preferences **/ $highlight_num = 0; while (! feof($file)) { $pref = trim(fgets($file, 1024)); - $equalsAt = strpos($pref, '='); - if ($equalsAt > 0) - { - $Key = substr($pref, 0, $equalsAt); - $Value = substr($pref, $equalsAt + 1); - if (substr($Key, 0, 9) == 'highlight') - { - $Key = 'highlight' . $highlight_num; - $highlight_num ++; + $equalsAt = strpos($pref, '='); + if ($equalsAt > 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; - } + 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'); } @@ -68,15 +73,14 @@ } - function savePrefValues($data_dir, $username) - { + function savePrefValues($data_dir, $username) { global $prefs_cache; - $file = fopen($data_dir . $username . '.pref', "w"); - foreach ($prefs_cache as $Key => $Value) - { - if (isset($Value)) + $file = fopen($data_dir . $username . '.pref', 'w'); + foreach ($prefs_cache as $Key => $Value) { + if (isset($Value)) { fwrite($file, $Key . '=' . $Value . "\n"); + } } fclose($file); } @@ -87,9 +91,10 @@ cachePrefValues($data_dir, $username); - if (isset($prefs_cache[$string])) + if (isset($prefs_cache[$string])) { unset($prefs_cache[$string]); - + } + savePrefValues($data_dir, $username); } @@ -98,9 +103,13 @@ 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); } @@ -108,10 +117,10 @@ /** 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; } } @@ -120,8 +129,7 @@ /** 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); } @@ -130,10 +138,10 @@ /** Gets the signature **/ function getSig($data_dir, $username) { - $filename = "$data_dir$username.sig"; - $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); }