Assembla home | Assembla project page
 

Changeset 150

Show
Ignore:
Timestamp:
11/10/08 21:06:08 (1 year ago)
Author:
aprice30
Message:

Added a line to only update the user profile fields if there is something to update them with.

The problem was when no user profile fields existed an empty array was being passed to the db->update function which was causing the error message. Closes #51

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/modules/auth/controllers/admin/members.php

    r135 r150  
    2727             // Call parent constructor 
    2828             parent::Admin_Controller(); 
    29               
     29 
    3030             // Load userlib language 
    3131             $this->lang->load('userlib'); 
    32               
     32 
    3333             // Set breadcrumb 
    3434             $this->page->set_crumb($this->lang->line('backendpro_members'),'auth/admin/members'); 
    35               
     35 
    3636             // Check for access permission 
    3737             check('Members'); 
    38               
     38 
    3939             // Load the validation library 
    4040             $this->load->library('validation'); 
    41               
     41 
    4242             log_message('debug','Members Class Initialized'); 
    4343         } 
    44           
     44 
    4545         /** 
    4646          * View Members 
     
    5353             // Get Member Infomation 
    5454             $data['members'] = $this->user_model->getUsers(); 
    55           
     55 
    5656             // Display Page 
    5757             $data['header'] = $this->lang->line('backendpro_members'); 
     
    6161             return; 
    6262         } 
    63           
     63 
    6464         /** 
    6565          * Set Profile Defaults 
     
    7777             return; 
    7878         } 
    79           
     79 
    8080         /** 
    8181          * Get User Details 
     
    9393             $data['group'] = $this->input->post('group'); 
    9494             $data['active'] = $this->input->post('active'); 
    95               
     95 
    9696             // Only if password is set encode it 
    9797             if($this->input->post('password') != '') 
    9898                $data['password'] = $this->userlib->encode_password($this->input->post('password')); 
    99               
     99 
    100100             return $data; 
    101101         } 
    102           
     102 
    103103         /** 
    104104          * Get Profile Details 
     
    117117             return $data; 
    118118         } 
    119           
     119 
    120120         /** 
    121121          * Display Member Form 
     
    135135             $fields['group'] = $this->lang->line('userlib_group'); 
    136136             $fields['active'] = $this->lang->line('userlib_active'); 
     137             // TODO: Make sure the config file is loaded here 
    137138             $fields = array_merge($fields, $this->config->item('userlib_profile_fields')); 
    138139             $this->validation->set_fields($fields); 
    139               
    140              // VALIDATION RULES 
    141              if( is_null($id)){     // CREATE USER 
     140 
     141             // Setup validation rules 
     142             if( is_null($id)) 
     143             { 
     144                // Use create user rules (make sure no-one has the same email) 
    142145                $rules['username'] = "trim|required|spare_username"; 
    143146                $rules['email'] = "trim|required|valid_email|spare_email"; 
    144147                $rules['password'] = "trim|required|min_length[".$this->preference->item('min_password_length')."]|matches[confirm_password]"; 
    145              } else {               // EDIT USER 
     148             } else 
     149             { 
     150                // Use edit user rules (make sure no-one other than the current user has the same email) 
    146151                $rules['username'] = "trim|required|spare_edit_username"; 
    147152                $rules['email'] = "trim|required|valid_email|spare_edit_email"; 
     
    149154             } 
    150155             $rules = array_merge($rules,$this->config->item('userlib_profile_rules')); 
    151               
    152              // SETUP FORM DEFAULT VALUES 
     156 
     157             // Setup form default values 
    153158             if( ! is_null($id) AND ! $this->input->post('submit')) 
    154159             { 
     
    156161                 $user = $this->user_model->getUsers(array('users.id'=>$id)); 
    157162                 $user = $user->row_array(); 
    158                   
     163 
    159164                 $this->validation->set_default_value('group',$user['group_id']); 
    160165                 unset($user['group']); 
     
    167172                 $this->validation->set_default_value('group',$this->preference->item('default_user_group')); 
    168173                 $this->validation->set_default_value('active','1'); 
    169                   
     174 
    170175                 // Setup profile defaults 
    171176                 $this->_set_profile_defaults(); 
     
    176181                 $this->validation->set_rules($rules); 
    177182             } 
    178               
     183 
    179184             // RUN 
    180185             if ($this->validation->run() === FALSE) 
     
    183188                 $this->page->set_asset('admin','js','generate_password.js'); 
    184189                 $this->page->set_asset('admin','css','generate_password.css'); 
    185                  
     190 
    186191                 // Construct Groups dropdown 
    187192                 $this->load->model('access_control_model'); 
    188193                 $data['groups'] = $this->access_control_model->buildAClDropdown('group','id'); 
    189                   
     194 
    190195                 // Display form 
    191196                 $this->validation->output_errors(); 
     
    206211                    $user['created'] = date('Y-m-d H:i:s'); 
    207212                    $profile = $this->_get_profile_details(); 
    208                      
     213 
    209214                    $this->db->trans_start(); 
    210215                    $this->user_model->insert('Users',$user); 
    211216                    $profile['user_id'] = $this->db->insert_id(); 
    212217                    $this->user_model->insert('UserProfiles',$profile); 
    213                      
     218 
    214219                    if($this->db->trans_status() === TRUE) 
    215220                    { 
     
    230235                    $user['modified'] = date('Y-m-d H:i:s'); 
    231236                    $profile = $this->_get_profile_details(); 
    232                      
     237 
    233238                    $this->db->trans_start(); 
    234239                    $this->user_model->update('Users',$user,array('id'=>$user['id'])); 
    235                     if($this->preference->item('allow_user_profiles')) 
     240 
     241                    // The && count($profile) > 0 has been added here since if no update keys=>values 
     242                    // are passed to the update method it errors saying the set method must be set 
     243                    // See bug #51 
     244                    if($this->preference->item('allow_user_profiles') && count($profile) > 0) 
    236245                        $this->user_model->update('UserProfiles',$profile,array('user_id'=>$user['id'])); 
    237                      
     246 
    238247                    if($this->db->trans_status() === TRUE) 
    239248                    { 
     
    250259             } 
    251260         } 
    252           
     261 
    253262         /** 
    254263          * Delete 
     
    263272             if(FALSE === ($selected = $this->input->post('select'))) 
    264273                redirect('auth/admin/members','location'); 
    265                  
     274 
    266275             foreach($selected as $user) 
    267276             { 
    268277                 $this->user_model->delete('Users',array('id'=>$user)); 
    269278             } 
    270               
     279 
    271280             flashMsg('success',$this->lang->line('userlib_user_deleted')); 
    272281             redirect('auth/admin/members','location'); 
  • trunk/user_guide/general/changelog.html

    r146 r150  
    6868<h3>Bug Fixes</h3> 
    6969<ul> 
     70        <li>Fixed bug where if no user profile fields are created but the user profiles are turned on, it would error saying "Must you set method" when trying to save a edited user account, See <a href="http://trac2.assembla.com/backendpro/ticket/51">Bug #51</a></li> 
    7071        <li>Fixed bug with <strong>unserialize() Spamming logs with errors</strong>, See <a href="http://trac2.assembla.com/backendpro/ticket/37">Bug #37</a></li> 
    7172</ul>