From 31ac7db819a9a223e7b71f0e901265abe4019a34 Mon Sep 17 00:00:00 2001 From: fidian Date: Thu, 8 Mar 2001 17:26:48 +0000 Subject: [PATCH] * Changed preferences to cache them for reading (Yeay!) * Prefereneces now remove empty preferences, invalid lines, etc. * Message highlighting numbering is now semi-automatic (the numbers are 'corrected' when the preference file is loaded) * Changed the chosen_theme stuff in load_prefs.php to not erase the filename of the theme it is trying to load * Removed more warnings git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@1178 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- functions/prefs.php | 166 ++++++++++++++++++++------------------------ src/load_prefs.php | 7 +- src/options.php | 6 +- 3 files changed, 82 insertions(+), 97 deletions(-) diff --git a/functions/prefs.php b/functions/prefs.php index e4d86920..aadbcb3f 100644 --- a/functions/prefs.php +++ b/functions/prefs.php @@ -8,111 +8,100 @@ **/ $prefs_php = true; - + + $prefs_are_cached = false; + $prefs_cache = array(); + + function cachePrefValues($data_dir, $username) + { + global $prefs_are_cached, $prefs_cache; + + if ($prefs_are_cached) + return; + + $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); + exit; + } + + $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 ++; + } + + if ($Value != '') + $prefs_cache[$Key] = $Value; + } + } + fclose($file); + + $prefs_are_cached = true; + } + + /** returns the value for $string **/ function getPref($data_dir, $username, $string) { - $filename = "$data_dir$username.pref"; - if (!file_exists($filename)) { - printf (_("Preference file %s not found. Exiting abnormally"), $filename); - exit; - } - - $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)); - } - } - fclose($file); - return ""; + global $prefs_cache; + + cachePrefValues($data_dir, $username); + + if (isset($prefs_cache[$string])) + return $prefs_cache[$string]; + return ''; } - function removePref($data_dir, $username, $string) { - $filename = "$data_dir$username.pref"; - $found = false; - if (!file_exists($filename)) { - printf (_("Preference file, %s, does not exist. Log out, and log back in to create a default preference file."), $filename); - echo "
\n"; - 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); - } - } - if (isset($hlt)) { - for ($i=0; $i < count($hlt); $i++) { - fwrite($file, "highlight$i=$hlt[$i]"); - } - } - 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) { - $filename = "$data_dir$username.pref"; - $found = false; - if (!file_exists($filename)) { - printf (_("Preference file, %s, does not exist. Log out, and log back in to create a default preference file."), $filename); - echo "\n
\n"; - 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); - } + global $prefs_cache; + + cachePrefValues($data_dir, $username); + + $prefs_cache[$string] = $set_to; - fclose($file); + 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) { @@ -126,7 +115,6 @@ } - /** Writes the Signature **/ function setSig($data_dir, $username, $string) { $filename = "$data_dir$username.sig"; diff --git a/src/load_prefs.php b/src/load_prefs.php index 29085ec2..3691d079 100644 --- a/src/load_prefs.php +++ b/src/load_prefs.php @@ -31,12 +31,9 @@ break; } } - if (!$in_ary) { - $chosen_theme = ""; - } - if ((isset($chosen_theme)) && (file_exists($chosen_theme))) { - $loaded=@include("$chosen_theme"); + if ($in_ary && (file_exists($chosen_theme))) { + $loaded=@include($chosen_theme); } else { if (file_exists($theme[0]["PATH"])) { require($theme[0]["PATH"]); diff --git a/src/options.php b/src/options.php index 43a5ce6f..9c8662b4 100644 --- a/src/options.php +++ b/src/options.php @@ -51,9 +51,9 @@ # Save personal information if (isset($full_name)) setPref($data_dir, $username, 'full_name', $full_name); if (isset($email_address)) setPref($data_dir, $username, 'email_address', $email_address); - if (isset($reply_to)) setPref($data_dir, $username, 'reply_to', $reply_to); - setPref($data_dir, $username, 'use_signature', $usesignature); - setPref($data_dir, $username, 'prefix_sig', $prefixsig); + if (isset($reply_to)) setPref($data_dir, $username, 'reply_to', $reply_to); + if (isset($usesignature)) setPref($data_dir, $username, 'use_signature', $usesignature); + if (isset($prefixsig)) setPref($data_dir, $username, 'prefix_sig', $prefixsig); if (isset($signature_edit)) setSig($data_dir, $username, $signature_edit); do_hook('options_personal_save'); -- 2.25.1