Source for file file_prefs.php
Documentation is available at file_prefs.php
* This contains functions for manipulating user preferences in files
* @copyright © 1999-2006 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id: file_prefs.php,v 1.26.2.12 2006/04/14 22:27:07 jervfors Exp $
* Check the preferences into the session cache.
global $prefs_are_cached, $prefs_cache;
if ( isset
($prefs_are_cached) &&
$prefs_are_cached) {
/* Calculate the filename for the user's preference file */
$filename =
getHashedFile($username, $data_dir, "$username.pref");
/* A call to checkForPrefs here should take eliminate the need for */
/* this to be called throughout the rest of the SquirrelMail code. */
/* Make sure that the preference file now DOES exist. */
logout_error( sprintf( _("Preference file, %s, does not exist. Log out, and log back in to create a default preference file."), $filename) );
/* Open the file, or else display an error to the user. */
if(!$file =
@fopen($filename, 'r'))
logout_error( sprintf( _("Preference file, %s, could not be opened. Contact your system administrator to resolve this issue."), $filename) );
/* Read in the preferences. */
/* keep reading a pref until we reach an eol (\n (or \r for macs)) */
while($read =
fgets($file, 1024))
$equalsAt =
strpos($pref, '=');
$key =
substr($pref, 0, $equalsAt);
$value =
substr($pref, $equalsAt +
1);
/* this is to 'rescue' old-style highlighting rules. */
if (substr($key, 0, 9) ==
'highlight') {
$key =
'highlight' .
$highlight_num;
$prefs_cache[$key] =
$value;
$prefs_are_cached =
TRUE;
* Return the value for the preference given by $string.
function getPref($data_dir, $username, $string, $default =
'') {
if (isset
($prefs_cache[$string])) {
$result =
$prefs_cache[$string];
* Save the preferences for this user.
$filename =
getHashedFile($username, $data_dir, "$username.pref");
/* Open the file for writing, or else display an error to the user. */
if(!$file =
@fopen($filename.
'.tmp', 'w'))
logout_error( sprintf( _("Preference file, %s, could not be opened. Contact your system administrator to resolve this issue."), $filename.
'.tmp') );
foreach ($prefs_cache as $Key =>
$Value) {
if ( sq_fwrite($file, $Key .
'=' .
$Value .
"\n") ===
FALSE ) {
logout_error( sprintf( _("Preference file, %s, could not be written. Contact your system administrator to resolve this issue.") , $filename .
'.tmp') );
if (! @copy($filename .
'.tmp',$filename) ) {
logout_error( sprintf( _("Preference file, %s, could not be copied from temporary file, %s. Contact your system administrator to resolve this issue."), $filename, $filename .
'.tmp') );
* Remove a preference for the current user.
function removePref($data_dir, $username, $string) {
if (isset
($prefs_cache[$string])) {
unset
($prefs_cache[$string]);
* Set a there preference $string to $value.
function setPref($data_dir, $username, $string, $value) {
if (isset
($prefs_cache[$string]) &&
($prefs_cache[$string] ==
$value)) {
$prefs_cache[$string] =
$value;
* Check for a preferences file. If one can not be found, create it.
/* First, make sure we have the filename. */
$filename =
getHashedFile($username, $data_dir, "$username.pref");
/* Then, check if the file exists. */
/* First, check the $data_dir for the default preference file. */
if(substr($data_dir,-
1) !=
'/') {
$default_pref =
$data_dir .
'default_pref';
/* If it is not there, check the internal data directory. */
$default_pref =
SM_PATH .
'data/default_pref';
/* Otherwise, report an error. */
$errTitle =
sprintf( _("Error opening %s"), $default_pref );
$errString =
$errTitle .
"<br />\n" .
_("Default preference file not found or not readable!") .
"<br />\n" .
_("Please contact your system administrator and report this error.") .
"<br />\n";
} else if (!@copy($default_pref, $filename)) {
$uid =
$user_data['name'];
$errString =
$errTitle .
'<br />' .
_("Could not create initial preference file!") .
"<br />\n" .
sprintf( _("%s should be writable by user %s"), $data_dir, $uid ) .
"<br />\n" .
_("Please contact your system administrator and report this error.") .
"<br />\n";
* Write the User Signature.
function setSig($data_dir, $username, $number, $value) {
// Limit signature size to 64KB (database BLOB limit)
$filename =
getHashedFile($username, $data_dir, "$username.si$number");
/* Open the file for writing, or else display an error to the user. */
if(!$file =
@fopen("$filename.tmp", 'w')) {
logout_error( sprintf( _("Signature file, %s, could not be opened. Contact your system administrator to resolve this issue."), $filename .
'.tmp') );
logout_error( sprintf( _("Signature file, %s, could not be written. Contact your system administrator to resolve this issue.") , $filename .
'.tmp'));
if (! @copy($filename .
'.tmp',$filename) ) {
logout_error( sprintf( _("Signature file, %s, could not be copied from temporary file, %s. Contact your system administrator to resolve this issue."), $filename, $filename .
'.tmp') );
function getSig($data_dir, $username, $number) {
$filename =
getHashedFile($username, $data_dir, "$username.si$number");
/* Open the file, or else display an error to the user. */
if(!$file =
@fopen($filename, 'r'))
logout_error( sprintf( _("Signature file, %s, could not be opened. Contact your system administrator to resolve this issue."), $filename) );
$sig .=
fgets($file, 1024);
Documentation generated on Sat, 07 Oct 2006 16:31:10 +0300 by phpDocumentor 1.3.0RC6