/*
* db_prefs.php
*
- * Copyright (c) 1999-2002 The SquirrelMail Project Team
+ * Copyright (c) 1999-2003 The SquirrelMail Project Team
* Licensed under the GNU GPL. For full terms see the file COPYING.
*
* This contains functions for manipulating user preferences
define('SMDB_PGSQL', 2);
require_once('DB.php');
-require_once('../config/config.php');
+require_once(SM_PATH . 'config/config.php');
global $prefs_are_cached, $prefs_cache;
return;
}
- session_unregister('prefs_cache');
- session_unregister('prefs_are_cached');
+ sqsession_unregister('prefs_cache');
+ sqsession_unregister('prefs_are_cached');
$db = new dbPrefs;
if(isset($db->error)) {
$prefs_are_cached = true;
- session_register('prefs_cache');
- session_register('prefs_are_cached');
+ sqsession_register($prefs_cache, 'prefs_cache');
+ sqsession_register($prefs_are_cached, 'prefs_are_cached');
}
class dbPrefs {
var $error = NULL;
var $db_type = SMDB_UNKNOWN;
- var $default = Array('chosen_theme' => '../themes/default_theme.php',
+ var $default = Array('theme_default' => 0,
'show_html_default' => '0');
function open() {
}
$dbh = DB::connect($prefs_dsn, true);
- if(DB::isError($dbh) || DB::isWarning($dbh)) {
+ if(DB::isError($dbh)) {
$this->error = DB::errorMessage($dbh);
return false;
}
unset($prefs_cache[$key]);
- if(substr($key, 0, 9) == 'highlight') {
- $this->renumberHighlightList($user);
- }
-
return true;
}
}
}
- /*
- * When a highlight option is deleted the preferences module
- * must renumber the list. This should be done somewhere else,
- * but it is not, so....
- */
- function renumberHighlightList($user) {
- if (!$this->open()) {
- return;
- }
- $query = sprintf("SELECT %s, %s as prefkey, %s as prefval FROM %s WHERE %s='%s' ".
- "AND %s LIKE 'highlight%%' ORDER BY %s",
- $this->user_field,
- $this->key_field,
- $this->val_field,
- $this->table,
- $this->user_field,
- $this->dbh->quoteString($user),
- $this->key_field,
- $this->key_field);
-
- $res = $this->dbh->query($query);
- if(DB::isError($res)) {
- $this->failQuery($res);
- }
-
- /* Store old data in array */
- $rows = Array();
- while($row = $res->fetchRow(DB_FETCHMODE_ASSOC)) {
- $rows[] = $row;
- }
-
- /* Renumber keys of old data */
- $hilinum = 0;
- for($i = 0; $i < count($rows) ; $i++) {
- $oldkey = $rows[$i]['prefkey'];
- $newkey = substr($oldkey, 0, 9) . $hilinum;
- $hilinum++;
-
- if($oldkey != $newkey) {
- $query = sprintf("UPDATE %s SET %s='%s' ".
- "WHERE %s ='%s' AND %s='%s'",
- $this->table,
- $this->key_field,
- $this->dbh->quoteString($newkey),
- $this->user_field,
- $this->dbh->quoteString($user),
- $this->key_field,
- $this->dbh->quoteString($oldkey));
-
- $res = $this->dbh->simpleQuery($query);
- if(DB::isError($res)) {
- $this->failQuery($res);
- }
- }
- }
-
- return;
- }
-
} /* end class dbPrefs */
/* Remove the pref $string */
function removePref($data_dir, $username, $string) {
+ global $prefs_cache;
$db = new dbPrefs;
if(isset($db->error)) {
$db->failQuery();
}
$db->deleteKey($username, $string);
+
+ if (isset($prefs_cache[$string])) {
+ unset($prefs_cache[$string]);
+ }
+
+ sqsession_register($prefs_cache , 'prefs_cache');
return;
}
return;
}
- if ($set_to == '') {
+ if ($set_to === '') {
removePref($data_dir, $username, $string);
return;
}
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_BAIL, 1);
assert ('$set_to == $prefs_cache[$string]');
-
+ sqsession_register($prefs_cache , 'prefs_cache');
return;
}