thomascube
2008-08-07 e3fdcf5919b8bea98d6c765f22e04a448a0c31dd
program/include/rcube_user.php
@@ -5,7 +5,7 @@
 | program/include/rcube_user.inc                                        |
 |                                                                       |
 | This file is part of the RoundCube Webmail client                     |
 | Copyright (C) 2005-2007, RoundCube Dev. - Switzerland                 |
 | Copyright (C) 2005-2008, RoundCube Dev. - Switzerland                 |
 | Licensed under the GNU GPL                                            |
 |                                                                       |
 | PURPOSE:                                                              |
@@ -98,31 +98,39 @@
  /**
   * Write the given user prefs to the user's record
   *
   * @param mixed User prefs to save
   * @param array User prefs to save
   * @return boolean True on success, False on failure
   */
  function save_prefs($a_user_prefs)
  {
    if (!$this->ID)
      return false;
    $config = rcmail::get_instance()->config;
    $old_prefs = (array)$this->get_prefs();
    // merge (partial) prefs array with existing settings
    $a_user_prefs += (array)$this->get_prefs();
    unset($a_user_prefs['language']);
    $save_prefs = $a_user_prefs + $old_prefs;
    unset($save_prefs['language']);
    // don't save prefs with default values if they haven't been changed yet
    foreach ($a_user_prefs as $key => $value) {
      if (!isset($old_prefs[$key]) && ($value == $config->get($key)))
        unset($save_prefs[$key]);
    }
    $this->db->query(
      "UPDATE ".get_table_name('users')."
       SET    preferences=?,
              language=?
       WHERE  user_id=?",
      serialize($a_user_prefs),
      serialize($save_prefs),
      $_SESSION['language'],
      $this->ID);
    $this->language = $_SESSION['language'];
    if ($this->db->affected_rows())
    {
      rcmail::get_instance()->config->merge($a_user_prefs);
    if ($this->db->affected_rows()) {
      $config->merge($a_user_prefs);
      return true;
    }
@@ -420,11 +428,11 @@
  static function email2user($email)
  {
    $user = $email;
    $r = self::findinvirtual("^$email");
    $r = self::findinvirtual("^$email\s");
    for ($i=0; $i<count($r); $i++)
    {
      $data = $r[$i];
      $data = trim($r[$i]);
      $arr = preg_split('/\s+/', $data);
      if (count($arr) > 0)
      {
@@ -446,7 +454,7 @@
  static function user2email($user)
  {
    $email = "";
    $r = self::findinvirtual("$user$");
    $r = self::findinvirtual("\s$user\s*$");
    for ($i=0; $i<count($r); $i++)
    {