X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=functions%2Fdb_prefs.php;h=442e9d26d4cb293f7b0cbff3fff3eb6638382dcc;hp=3d478cf3b51148b313576975db77cd2e06704f19;hb=234b03244d3b7ec197a1708ef599222d01b0cb95;hpb=f435778e5dabea883d6394d5ab43ae72d51dfd50 diff --git a/functions/db_prefs.php b/functions/db_prefs.php index 3d478cf3..442e9d26 100644 --- a/functions/db_prefs.php +++ b/functions/db_prefs.php @@ -1,194 +1,209 @@ '../themes/default_theme.php', - 'show_html_default' => '0'); - + 'show_html_default' => '0'); + function dbPrefs() { - $this->open(); + $this->open(); } - + function open() { - if(isset($this->dbh)) return true; - $dbh = DB::connect($this->DSN, true); - - if(DB::isError($dbh) || DB::isWarning($dbh)) { - $this->error = DB::errorMessage($dbh); - return false; - } - - $this->dbh = $dbh; - return true; + if(isset($this->dbh)) return true; + $dbh = DB::connect($this->DSN, true); + + if(DB::isError($dbh) || DB::isWarning($dbh)) { + $this->error = DB::errorMessage($dbh); + return false; + } + + $this->dbh = $dbh; + return true; } - + function failQuery($res = NULL) { - if($res == NULL) { - printf(_("Preference database error (%s). Exiting abnormally"), - $this->error); - } else { - printf(_("Preference database error (%s). Exiting abnormally"), - DB::errorMessage($res)); - } - exit; + if($res == NULL) { + printf(_("Preference database error (%s). Exiting abnormally"), + $this->error); + } else { + printf(_("Preference database error (%s). Exiting abnormally"), + DB::errorMessage($res)); + } + exit; } function getKey($user, $key) { - $this->open(); - $query = sprintf("SELECT prefval FROM %s ". - "WHERE user='%s' AND prefkey='%s'", - $this->table, - $this->dbh->quoteString($user), - $this->dbh->quoteString($key)); - - $res = $this->dbh->query($query); - if(DB::isError($res)) - $this->failQuery($res); - - if($row = $res->fetchRow(DB_FETCHMODE_ASSOC)) { - return $row['prefval']; - } else { - if(isset($this->default[$key])) { - return $this->default[$key]; - } else { - return ''; - } - } - - return ''; + $this->open(); + $query = sprintf("SELECT prefval FROM %s ". + "WHERE user='%s' AND prefkey='%s'", + $this->table, + $this->dbh->quoteString($user), + $this->dbh->quoteString($key)); + + $res = $this->dbh->query($query); + if(DB::isError($res)) + $this->failQuery($res); + + if($row = $res->fetchRow(DB_FETCHMODE_ASSOC)) { + return $row['prefval']; + } else { + if(isset($this->default[$key])) { + return $this->default[$key]; + } else { + return ''; + } + } + + return ''; } function deleteKey($user, $key) { - $this->open(); - $query = sprintf("DELETE FROM %s WHERE user='%s' AND prefkey='%s'", - $this->table, - $this->dbh->quoteString($user), - $this->dbh->quoteString($key)); + $this->open(); + $query = sprintf("DELETE FROM %s WHERE user='%s' AND prefkey='%s'", + $this->table, + $this->dbh->quoteString($user), + $this->dbh->quoteString($key)); - $res = $this->dbh->simpleQuery($query); - if(DB::isError($res)) - $this->failQuery($res); + $res = $this->dbh->simpleQuery($query); + if(DB::isError($res)) + $this->failQuery($res); - if(substr($key, 0, 9) == 'highlight') { - $this->renumberHighlightList($user); - } + if(substr($key, 0, 9) == 'highlight') { + $this->renumberHighlightList($user); + } - return true; + return true; } function setKey($user, $key, $value) { - $this->open(); - $query = sprintf("REPLACE INTO %s (user,prefkey,prefval) ". - "VALUES('%s','%s','%s')", - $this->table, - $this->dbh->quoteString($user), - $this->dbh->quoteString($key), - $this->dbh->quoteString($value)); - - $res = $this->dbh->simpleQuery($query); - if(DB::isError($res)) - $this->failQuery($res); - - return true; + $this->open(); + $query = sprintf("REPLACE INTO %s (user,prefkey,prefval) ". + "VALUES('%s','%s','%s')", + $this->table, + $this->dbh->quoteString($user), + $this->dbh->quoteString($key), + $this->dbh->quoteString($value)); + + $res = $this->dbh->simpleQuery($query); + if(DB::isError($res)) + $this->failQuery($res); + + 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.... + ** but it is not, so.... **/ function renumberHighlightList($user) { - $this->open(); - $query = sprintf("SELECT * FROM %s WHERE user='%s' ". - "AND prefkey LIKE 'highlight%%' ORDER BY prefkey", - $this->table, - $this->dbh->quoteString($user)); - - $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 prefkey='%s' WHERE user='%s' ". - "AND prefkey='%s'", - $this->table, - $this->dbh->quoteString($newkey), - $this->dbh->quoteString($user), - $this->dbh->quoteString($oldkey)); - - $res = $this->dbh->simpleQuery($query); - if(DB::isError($res)) - $this->failQuery($res); - } - } - - return; + $this->open(); + $query = sprintf("SELECT * FROM %s WHERE user='%s' ". + "AND prefkey LIKE 'highlight%%' ORDER BY prefkey", + $this->table, + $this->dbh->quoteString($user)); + + $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 prefkey='%s' WHERE user='%s' ". + "AND prefkey='%s'", + $this->table, + $this->dbh->quoteString($newkey), + $this->dbh->quoteString($user), + $this->dbh->quoteString($oldkey)); + + $res = $this->dbh->simpleQuery($query); + if(DB::isError($res)) + $this->failQuery($res); + } + } + + return; } } // end class dbPrefs /** returns the value for the pref $string **/ - function getPref($data_dir, $username, $string) { + function getPref($data_dir, $username, $string, $default ) { $db = new dbPrefs; if(isset($db->error)) { - printf(_("Preference database error (%s). Exiting abnormally"), - $db->error); - exit; + printf( _("Preference database error (%s). Exiting abnormally"), + $db->error); + exit; } return $db->getKey($username, $string); @@ -202,12 +217,12 @@ $db->deleteKey($username, $string); return; } - + /** sets the pref, $string, to $set_to **/ function setPref($data_dir, $username, $string, $set_to) { $db = new dbPrefs; if(isset($db->error)) - $db->failQuery(); + $db->failQuery(); $db->setKey($username, $string, $set_to); return; @@ -217,14 +232,14 @@ function checkForPrefs($data_dir, $username) { $db = new dbPrefs; if(isset($db->error)) - $db->failQuery(); + $db->failQuery(); } /** Writes the Signature **/ function setSig($data_dir, $username, $string) { $db = new dbPrefs; - if(isset($db->error)) - $db->failQuery(); + if(isset($db->error)) + $db->failQuery(); $db->setKey($username, "___signature___", $string); return; @@ -234,7 +249,7 @@ function getSig($data_dir, $username) { $db = new dbPrefs; if(isset($db->error)) - $db->failQuery(); + $db->failQuery(); return $db->getKey($username, "___signature___"); }