Changeset 2864204 in github


Ignore:
Timestamp:
Aug 7, 2008 3:02:07 AM (5 years ago)
Author:
thomascube <thomas@…>
Branches:
master, HEAD, courier-fix, dev-browser-capabilities, pdo, release-0.6, release-0.7, release-0.8
Children:
e3fdcf5
Parents:
ff73e02
Message:

Don't save prefs with default values if they haven't been changed yet

File:
1 edited

Legend:

Unmodified
Added
Removed
  • program/include/rcube_user.php

    re200330 r2864204  
    66 |                                                                       | 
    77 | This file is part of the RoundCube Webmail client                     | 
    8  | Copyright (C) 2005-2007, RoundCube Dev. - Switzerland                 | 
     8 | Copyright (C) 2005-2008, RoundCube Dev. - Switzerland                 | 
    99 | Licensed under the GNU GPL                                            | 
    1010 |                                                                       | 
     
    9999   * Write the given user prefs to the user's record 
    100100   * 
    101    * @param mixed User prefs to save 
     101   * @param array User prefs to save 
    102102   * @return boolean True on success, False on failure 
    103103   */ 
     
    106106    if (!$this->ID) 
    107107      return false; 
     108       
     109    $config = rcmail::get_instance()->config; 
     110    $old_prefs = (array)$this->get_prefs(); 
    108111 
    109112    // merge (partial) prefs array with existing settings 
    110     $a_user_prefs += (array)$this->get_prefs(); 
    111     unset($a_user_prefs['language']); 
    112  
     113    $save_prefs = $a_user_prefs + $old_prefs; 
     114    unset($save_prefs['language']); 
     115     
     116    // don't save prefs with default values if they haven't been changed yet 
     117    foreach ($a_user_prefs as $key => $value) { 
     118      if (!isset($old_prefs[$key]) && ($value == $config->get($key))) 
     119        unset($save_prefs[$key]); 
     120    } 
     121     
    113122    $this->db->query( 
    114123      "UPDATE ".get_table_name('users')." 
     
    116125              language=? 
    117126       WHERE  user_id=?", 
    118       serialize($a_user_prefs), 
     127      serialize($save_prefs), 
    119128      $_SESSION['language'], 
    120129      $this->ID); 
    121130 
    122131    $this->language = $_SESSION['language']; 
    123     if ($this->db->affected_rows()) 
    124     { 
    125       rcmail::get_instance()->config->merge($a_user_prefs); 
     132    if ($this->db->affected_rows()) { 
     133      $config->merge($a_user_prefs); 
    126134      return true; 
    127135    } 
Note: See TracChangeset for help on using the changeset viewer.