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.45 2006/07/15 12:00:44 tokul Exp $
* Check the preferences into the session cache.
* @param string $data_dir
* @param string $username
global $prefs_are_cached, $prefs_cache;
if ( isset
($prefs_are_cached) &&
$prefs_are_cached) {
// sm_print_r($prefs_cache);
/* 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.
* @param string $data_dir data directory
* @param string $username user name
* @param string $string preference name
* @param string $default (since 1.2.0) default preference value
function getPref($data_dir, $username, $string, $default =
'') {
if (isset
($prefs_cache[$string])) {
$result =
$prefs_cache[$string];
* Save the preferences for this user.
* @param string $data_dir data directory
* @param string $username user name
$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.
* @param string $data_dir data directory
* @param string $username user name
* @param string $string preference name
function removePref($data_dir, $username, $string) {
if (isset
($prefs_cache[$string])) {
unset
($prefs_cache[$string]);
* Set a there preference $string to $value.
* @param string $data_dir data directory
* @param string $username user name
* @param string $string preference name
* @param mixed $value preference 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.
* @param string $data_dir data directory
* @param string $username user name
* @param string $filename (since 1.2.0) preference file name.
* detects file name, if set to empty string.
/* First, make sure we have the filename. */
$filename =
getHashedFile($username, $data_dir, "$username.pref");
/* Then, check if the file exists. */
/* If it does not exist, check for default_prefs */
/* First, check legacy locations: data dir */
if(substr($data_dir,-
1) !=
'/') {
$default_pref =
$data_dir .
'default_pref';
/* or legacy location: internal data dir */
$default_pref =
SM_PATH .
'data/default_pref';
/* If no legacies, check where we'd expect it to be located:
$default_pref =
SM_PATH .
'config/default_pref';
/* If a default_pref file found, try to copy it, if none found,
* try to create an empty one. If that fails, report an error.
$uid =
$user_data['name'];
$errTitle =
_("Could not create initial preference file!");
$errString =
$errTitle .
"<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.
* @param string $data_dir data directory
* @param string $username user name
* @param integer $number (since 1.2.5) identity number.
* parameter was used for signature text before 1.2.5.
* @param string $value (since 1.2.5) signature text
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') );
* @param string $data_dir data directory
* @param string $username user name
* @param integer $number (since 1.2.5) identity number
* @return string signature
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:10:57 +0300 by phpDocumentor 1.3.0RC6