Julio Montoya 12 лет назад
Родитель
Сommit
eb84eb60b1

+ 3 - 3
main/admin/resume_session.php

@@ -118,7 +118,7 @@ $coach_info = api_get_user_info($session['id_coach']);
              elseif($session['visibility'] == 2) 
              elseif($session['visibility'] == 2) 
                  echo get_lang('Visible');
                  echo get_lang('Visible');
              elseif($session['visibility'] == 3) 
              elseif($session['visibility'] == 3) 
-                echo api_ucfirst(get_lang('Invisible'))  ;
+                echo api_ucfirst(get_lang('Invisible'));
         } else {
         } else {
             //By default course sessions can be access normally see function api_get_session_visibility() when no date_end is proposed            
             //By default course sessions can be access normally see function api_get_session_visibility() when no date_end is proposed            
             echo get_lang('Visible'); 
             echo get_lang('Visible'); 
@@ -136,7 +136,7 @@ foreach ($session_fields as $session_field) {
         continue;        
         continue;        
     }
     }
     $obj = new SessionFieldValue();
     $obj = new SessionFieldValue();
-    $result = $obj->get_values_by_session_and_field_id($id_session, $session_field['id']);
+    $result = $obj->get_values_by_session_and_field_id($id_session, $session_field['id'], true);
     
     
     $session_value = null;
     $session_value = null;
     if ($result) {
     if ($result) {
@@ -157,7 +157,7 @@ if ($multiple_url_is_on) {
     echo '</td>';
     echo '</td>';
     echo '<td>';
     echo '<td>';
     $url_list = UrlManager::get_access_url_from_session($id_session);
     $url_list = UrlManager::get_access_url_from_session($id_session);
-    foreach($url_list as $url_data) {
+    foreach ($url_list as $url_data) {
         echo $url_data['url'].'<br />';
         echo $url_data['url'].'<br />';
     }        
     }        
     echo '</td></tr>';
     echo '</td></tr>';

+ 0 - 1
main/admin/session_add.php

@@ -250,7 +250,6 @@ $form->addElement('text', 'coach_access_start_date', array(get_lang('SessionCoac
 $form->addElement('text', 'coach_access_end_date', array(get_lang('SessionCoachEndDate'), get_lang('SessionCoachEndDateComment')), array('id' => 'coach_access_end_date'));
 $form->addElement('text', 'coach_access_end_date', array(get_lang('SessionCoachEndDate'), get_lang('SessionCoachEndDateComment')), array('id' => 'coach_access_end_date'));
 $form->addRule(array('coach_access_start_date', 'coach_access_end_date'), get_lang('StartDateMustBeBeforeTheEndDate'), 'compare_datetime_text', '< allow_empty');
 $form->addRule(array('coach_access_start_date', 'coach_access_end_date'), get_lang('StartDateMustBeBeforeTheEndDate'), 'compare_datetime_text', '< allow_empty');
 
 
-
 $session_field = new SessionField();
 $session_field = new SessionField();
 $session_field->add_elements($form, $id);
 $session_field->add_elements($form, $id);
 
 

+ 2 - 3
main/admin/session_fields.php

@@ -85,7 +85,7 @@ $(function() {
                 break;
                 break;
             case "4":
             case "4":
                 $("#example").html("'.addslashes(Display::return_icon('userfield_drop_down.png')).'");
                 $("#example").html("'.addslashes(Display::return_icon('userfield_drop_down.png')).'");
-                    break;
+                break;
             case "5":
             case "5":
                 $("#example").html("'.addslashes(Display::return_icon('userfield_multidropdown.png')).'");
                 $("#example").html("'.addslashes(Display::return_icon('userfield_multidropdown.png')).'");
                 break;
                 break;
@@ -108,7 +108,6 @@ $(function() {
                 $("#example").html("'.addslashes(Display::return_icon('userfield_data.png')).'");                                            
                 $("#example").html("'.addslashes(Display::return_icon('userfield_data.png')).'");                                            
                 break;
                 break;
         }
         }
-
     });
     });
 
 
     var value = 1;
     var value = 1;
@@ -141,7 +140,7 @@ switch ($action) {
         $form = $obj->return_form($url, 'add');
         $form = $obj->return_form($url, 'add');
 
 
         // The validation or display
         // The validation or display
-        if ($form->validate()) {            
+        if ($form->validate()) {          
             if ($check) {
             if ($check) {
                 $values = $form->exportValues();       
                 $values = $form->exportValues();       
                 $res    = $obj->save($values);            
                 $res    = $obj->save($values);            

+ 51 - 29
main/inc/lib/session_field.lib.php

@@ -12,10 +12,9 @@ class SessionField extends Model {
     public function add_elements($form, $session_id = null) {
     public function add_elements($form, $session_id = null) {
         if (empty($form)) {
         if (empty($form)) {
             return false;
             return false;
-        }        
-        $extra_data = array();
+        }       
         if (!empty($session_id)) {
         if (!empty($session_id)) {
-            $extra_data = self::get_session_extra_data($session_id);
+            $extra_data = self::get_session_extra_data($session_id);            
             if ($form) {
             if ($form) {
                 $form->setDefaults($extra_data);
                 $form->setDefaults($extra_data);
             }
             }
@@ -74,25 +73,51 @@ class SessionField extends Model {
 		
 		
 		if (!empty($session_fields) > 0) {
 		if (!empty($session_fields) > 0) {
 			foreach ($session_fields as $session_field) {
 			foreach ($session_fields as $session_field) {
-				//if ($session_field['field_type'] == self::USER_FIELD_TYPE_TAG) {
-					//$tags = self::get_user_tags_to_string($user_id,$row['id'],false);                    
-					//$extra_data['extra_'.$row['fvar']] = $tags;
-				//} else {
-                    $field_value = $session_field_values->get_values_by_session_and_field_id($session_id, $session_field['id']);
-                    if ($field_value) {
-                        $field_value = $field_value['field_value'];
-                        switch ($session_field['field_type']) {
-                            case UserManager::USER_FIELD_TYPE_SELECT_MULTIPLE:
-                                $field_value = split(';', $field_value);                                
-                            case UserManager::USER_FIELD_TYPE_RADIO:
-                                $extra_data['extra_'.$session_field['field_variable']]['extra_'.$session_field['field_variable']] = $field_value;
-                                break;
-                            default:
-                                $extra_data['extra_'.$session_field['field_variable']] = $field_value;
-                                break;
-                        }
-                    }                   
-				//}
+                $field_value = $session_field_values->get_values_by_session_and_field_id($session_id, $session_field['id']);                    
+                if ($field_value) {
+                    $field_value = $field_value['field_value'];                    
+                    
+                    switch ($session_field['field_type']) {
+                        case UserManager::USER_FIELD_TYPE_DOUBLE_SELECT:
+                            $session_field_options = new SessionFieldOption();
+                            $field_options = $session_field_options->get_field_options_by_field($session_field['id']);
+                                                
+                            $field_details['options'] = $field_options;
+                            $field_details['field_variable'] = $session_field['field_variable'];
+
+                            $values = array();                    
+                            foreach ($field_details['options'] as $key => $element) {                          
+                                if ($element['option_display_text'][0] == '*') {
+                                    $values['*'][$element['option_value']] = str_replace('*', '', $element['option_display_text']);
+                                } else {
+                                    $values[0][$element['option_value']] = $element['option_display_text'];
+                                }
+                            }
+
+                            if (is_array($extra_data)) {
+                                $selected_values = explode(';', $field_value);
+                                $extra_data['extra_'.$field_details['field_variable']] = array();
+
+                                // looping through the selected values and assigning the selected values to either the first or second select form
+                                foreach ($selected_values as $key => $selected_value) {                                
+                                    if (in_array($selected_value, $values[0])) {
+                                        $extra_data['extra_'.$field_details['field_variable']]['extra_'.$field_details['field_variable']] = $selected_value;
+                                    } else {
+                                        $extra_data['extra_'.$field_details['field_variable']]['extra_'.$field_details['field_variable'].'*'] = $selected_value;
+                                    }                                
+                                }                        
+                            }
+                            break;
+                        case UserManager::USER_FIELD_TYPE_SELECT_MULTIPLE:
+                            $field_value = explode(';', $field_value);                                
+                        case UserManager::USER_FIELD_TYPE_RADIO:
+                            $extra_data['extra_'.$session_field['field_variable']]['extra_'.$session_field['field_variable']] = $field_value;
+                            break;
+                        default:
+                            $extra_data['extra_'.$session_field['field_variable']] = $field_value;
+                            break;
+                    }
+                }				
 			}
 			}
 		}        
 		}        
 		return $extra_data;
 		return $extra_data;
@@ -176,9 +201,9 @@ class SessionField extends Model {
         //$form->addElement('advanced_settings','<a class="btn btn-show" id="advanced_parameters" href="javascript://">'.get_lang('AdvancedParameters').'</a>');
         //$form->addElement('advanced_settings','<a class="btn btn-show" id="advanced_parameters" href="javascript://">'.get_lang('AdvancedParameters').'</a>');
         //$form->addElement('html','<div id="options" style="display:none">');
         //$form->addElement('html','<div id="options" style="display:none">');
        
        
-        $form->addElement('text', 'field_variable', get_lang('FieldLabel'), array('class' => 'span4'));        
-        $form->addElement('text', 'field_options', get_lang('FieldPossibleValues'), array('id' => 'field_options'));        
-        $form->addElement('text', 'field_default_value', get_lang('FieldDefaultValue'), array('id' => 'field_default_value'));        
+        $form->addElement('text', 'field_variable', get_lang('FieldLabel'), array('class' => 'span5'));        
+        $form->addElement('text', 'field_options', get_lang('FieldPossibleValues'), array('id' => 'field_options', 'class' => 'span5'));        
+        $form->addElement('text', 'field_default_value', get_lang('FieldDefaultValue'), array('id' => 'field_default_value', 'class' => 'span5'));        
                 
                 
         $group = array();
         $group = array();
         $group[] = $form->createElement('radio', 'field_visible', null, get_lang('Yes'), 1);
         $group[] = $form->createElement('radio', 'field_visible', null, get_lang('Yes'), 1);
@@ -197,8 +222,6 @@ class SessionField extends Model {
  
  
         //$form->addElement('html', '</div>');
         //$form->addElement('html', '</div>');
       
       
-   
-        
 	    /*$status_list = $this->get_status_list();         
 	    /*$status_list = $this->get_status_list();         
         $form->addElement('select', 'status', get_lang('Status'), $status_list);*/
         $form->addElement('select', 'status', get_lang('Status'), $status_list);*/
         
         
@@ -239,8 +262,7 @@ class SessionField extends Model {
     }
     }
      
      
      public function update($params) {
      public function update($params) {
-         $params = self::clean_parameters($params);
-         
+        $params = self::clean_parameters($params);        
         if (isset($params['id'])) {            
         if (isset($params['id'])) {            
              $session_field_option = new SessionFieldOption();
              $session_field_option = new SessionFieldOption();
              $params['field_id'] = $params['id'];
              $params['field_id'] = $params['id'];

+ 3 - 2
main/inc/lib/session_field_option.lib.php

@@ -31,7 +31,7 @@ class SessionFieldOption extends Model {
         if (empty($field_id)) {
         if (empty($field_id)) {
             return false;
             return false;
         }
         }
-    
+        var_dump($params);
         if (!empty($params['field_options']) && 
         if (!empty($params['field_options']) && 
             in_array($params['field_type'], array(
             in_array($params['field_type'], array(
                 UserManager::USER_FIELD_TYPE_RADIO, 
                 UserManager::USER_FIELD_TYPE_RADIO, 
@@ -42,6 +42,7 @@ class SessionFieldOption extends Model {
             if ($params['field_type'] == UserManager::USER_FIELD_TYPE_DOUBLE_SELECT) {
             if ($params['field_type'] == UserManager::USER_FIELD_TYPE_DOUBLE_SELECT) {
                 $twolist = explode('|', $params['field_options']);
                 $twolist = explode('|', $params['field_options']);
                 $counter = 0;
                 $counter = 0;
+                
                 foreach ($twolist as $individual_list) {
                 foreach ($twolist as $individual_list) {
                     $splitted_individual_list = split(';', $individual_list);
                     $splitted_individual_list = split(';', $individual_list);
                     foreach	($splitted_individual_list as $individual_list_option) {
                     foreach	($splitted_individual_list as $individual_list_option) {
@@ -55,7 +56,7 @@ class SessionFieldOption extends Model {
                     $counter++;
                     $counter++;
                 }
                 }
             } else {
             } else {
-                $list = split(';', $params['field_options']);
+                $list = explode(';', $params['field_options']);
             }
             }
             
             
             if (!empty($list)) {
             if (!empty($list)) {

+ 34 - 29
main/inc/lib/session_field_value.lib.php

@@ -1,11 +1,12 @@
 <?php
 <?php
 
 
-class SessionFieldValue extends Model {
-     public $columns = array('id', 'session_id', 'field_id', 'field_value', 'tms');
+class SessionFieldValue extends Model {    
+    public $columns = array('id', 'session_id', 'field_id', 'field_value', 'tms');
      
      
-     public function __construct() {
-        $this->table = Database::get_main_table(TABLE_MAIN_SESSION_FIELD_VALUES);        
-     }
+    public function __construct() {
+        $this->table = Database::get_main_table(TABLE_MAIN_SESSION_FIELD_VALUES);    
+        $this->table_session_field = Database::get_main_table(TABLE_MAIN_SESSION_FIELD);
+    }
      
      
     public function get_count() {
     public function get_count() {
         $row = Database::select('count(*) as count', $this->table, array(), 'first');
         $row = Database::select('count(*) as count', $this->table, array(), 'first');
@@ -16,19 +17,19 @@ class SessionFieldValue extends Model {
         $session_field = new SessionField();
         $session_field = new SessionField();
         if (empty($params['session_id'])) {
         if (empty($params['session_id'])) {
             return false;            
             return false;            
-        }        
+        }
         
         
-        //Parse params
+        //Parse params        
         foreach ($params as $key => $value) {
         foreach ($params as $key => $value) {
             if (substr($key, 0, 6) == 'extra_') { //an extra field
             if (substr($key, 0, 6) == 'extra_') { //an extra field
                 $field_variable = substr($key, 6);
                 $field_variable = substr($key, 6);
                 $session_field_info = $session_field->get_session_field_info_by_field_variable($field_variable);                
                 $session_field_info = $session_field->get_session_field_info_by_field_variable($field_variable);                
                 if ($session_field_info) {                
                 if ($session_field_info) {                
                     $new_params = array(
                     $new_params = array(
-                        'session_id' => $params['session_id'],
-                        'field_id' => $session_field_info['id'],
-                        'field_value' => $value
-                    );                    
+                        'session_id'    => $params['session_id'],
+                        'field_id'      => $session_field_info['id'],
+                        'field_value'   => $value
+                    );
                     self::save($new_params);
                     self::save($new_params);
                 }
                 }
             }
             }
@@ -37,37 +38,32 @@ class SessionFieldValue extends Model {
     
     
     public function save($params, $show_query = false) {        
     public function save($params, $show_query = false) {        
         $session_field = new SessionField();
         $session_field = new SessionField();
-        $session_field_option = new SessionFieldOption();
+        //$session_field_option = new SessionFieldOption();
         
         
         //Setting value to insert
         //Setting value to insert
         $value = $params['field_value'];
         $value = $params['field_value'];
+       
+        
         $value_to_insert = null;
         $value_to_insert = null;
         if (is_array($value)) {
         if (is_array($value)) {
-			foreach ($value as $val) {
-				$value_to_insert .= Database::escape_string($val).';';
-			}
-			if (!empty($value)) {
-				$value_to_insert = substr($value, 0, -1);
-			}
+            $value_to_insert = implode(';', $value);            
 		} else {
 		} else {
 			$value_to_insert = Database::escape_string($value);
 			$value_to_insert = Database::escape_string($value);
-		}
-        
+		}                
         $params['field_value'] = $value_to_insert;
         $params['field_value'] = $value_to_insert;
         
         
         //If field id exists
         //If field id exists
         $session_field_info = $session_field->get($params['field_id']);
         $session_field_info = $session_field->get($params['field_id']);
                 
                 
-        if ($session_field_info) {
-            
+        if ($session_field_info) {            
             switch ($session_field_info['field_type']) {
             switch ($session_field_info['field_type']) {
                 case UserManager::USER_FIELD_TYPE_TAG :
                 case UserManager::USER_FIELD_TYPE_TAG :
                     break;
                     break;
                 case UserManager::USER_FIELD_TYPE_RADIO:
                 case UserManager::USER_FIELD_TYPE_RADIO:
 				case UserManager::USER_FIELD_TYPE_SELECT:
 				case UserManager::USER_FIELD_TYPE_SELECT:
 				case UserManager::USER_FIELD_TYPE_SELECT_MULTIPLE:
 				case UserManager::USER_FIELD_TYPE_SELECT_MULTIPLE:
-                    $field_options = $session_field_option->get_field_options_by_field($params['field_id']);                  
-					$params['field_value'] = split(';', $value_to_insert);
+                    //$field_options = $session_field_option->get_field_options_by_field($params['field_id']);                  
+					//$params['field_value'] = split(';', $value_to_insert);
                     
                     
                     /*
                     /*
 					if ($field_options) {
 					if ($field_options) {
@@ -87,6 +83,7 @@ class SessionFieldValue extends Model {
                     break;
                     break;
                 case UserManager::USER_FIELD_TYPE_TEXT:
                 case UserManager::USER_FIELD_TYPE_TEXT:
                 case UserManager::USER_FIELD_TYPE_TEXTAREA:
                 case UserManager::USER_FIELD_TYPE_TEXTAREA:
+                case UserManager::USER_FIELD_TYPE_DOUBLE_SELECT:
                 default:
                 default:
                     break;
                     break;
             }
             }
@@ -98,19 +95,27 @@ class SessionFieldValue extends Model {
             }            
             }            
             $params['field_value'] = $value_to_insert;
             $params['field_value'] = $value_to_insert;
             $params['tms'] = api_get_utc_datetime();                
             $params['tms'] = api_get_utc_datetime();                
-            
+            //var_dump($params);
             parent::save($params, $show_query);
             parent::save($params, $show_query);
         }        
         }        
     }
     }
      
      
-    public function get_values_by_session_and_field_id($session_id, $field_id) {
+    public function get_values_by_session_and_field_id($session_id, $field_id, $transform = false) {
         $field_id = intval($field_id);
         $field_id = intval($field_id);
         $session_id = intval($session_id);
         $session_id = intval($session_id);
     
     
-        $sql = "SELECT * FROM {$this->table} WHERE session_id = '$session_id' AND field_id = '".$field_id."' ORDER BY id";
+        $sql = "SELECT s.*, field_type FROM {$this->table} s INNER JOIN {$this->table_session_field} sf ON (s.field_id = sf.id)
+                WHERE session_id = '$session_id' AND field_id = '".$field_id."' ORDER BY id";
         $result = Database::query($sql);        
         $result = Database::query($sql);        
-        if (Database::num_rows($result)) {
-            return Database::fetch_array($result, 'ASSOC');                        
+        if (Database::num_rows($result)) {            
+            $result = Database::fetch_array($result, 'ASSOC'); 
+            if ($transform) {
+                if ($result['field_type'] == UserManager::USER_FIELD_TYPE_DOUBLE_SELECT) {
+                    $result['field_value'] = str_replace(';', ' -> ', $result['field_value']);
+                    $result['field_value'] = str_replace('*', '', $result['field_value']);
+                }
+            }
+            return $result;
         } else {
         } else {
             return false;
             return false;
         }        
         }        

+ 1 - 1
main/inc/lib/sessionmanager.lib.php

@@ -98,7 +98,7 @@ class SessionManager {
         if (!empty($params['id'])) {
         if (!empty($params['id'])) {
             $session_field_value = new SessionFieldValue();
             $session_field_value = new SessionFieldValue();
             $params['session_id'] = $params['id'];
             $params['session_id'] = $params['id'];
-            unset($params['id']);
+            unset($params['id']);            
             $session_field_value->save_session_field_values($params);               
             $session_field_value->save_session_field_values($params);               
         }         
         }         
     }
     }

+ 89 - 63
main/inc/lib/usermanager.lib.php

@@ -1211,8 +1211,8 @@ class UserManager {
 				$sqluf .= $index." = '".$safecolumns[$index]."', ";
 				$sqluf .= $index." = '".$safecolumns[$index]."', ";
 			}
 			}
 		}
 		}
-		$time = time();
-		$sqluf .= " tms = FROM_UNIXTIME($time) WHERE id='$fid'";
+		$time = api_get_utc_datetime();
+		$sqluf .= " tms = '$time' WHERE id= '$fid' ";
 		$resuf = Database::query($sqluf);
 		$resuf = Database::query($sqluf);
 		return $resuf;
 		return $resuf;
 	}
 	}
@@ -1234,9 +1234,8 @@ class UserManager {
 		if ($user_id === false) return false;
 		if ($user_id === false) return false;
 		$fvalues = '';
 		$fvalues = '';
         
         
-		//echo '<pre>'; print_r($fvalue);
 		if (is_array($fvalue)) {
 		if (is_array($fvalue)) {
-			foreach($fvalue as $val) {
+			foreach ($fvalue as $val) {
 				$fvalues .= Database::escape_string($val).';';
 				$fvalues .= Database::escape_string($val).';';
 			}
 			}
 			if (!empty($fvalues)) {
 			if (!empty($fvalues)) {
@@ -1245,6 +1244,7 @@ class UserManager {
 		} else {
 		} else {
 			$fvalues = Database::escape_string($fvalue);
 			$fvalues = Database::escape_string($fvalue);
 		}
 		}
+        
 		$sqluf = "SELECT * FROM $t_uf WHERE field_variable='$fname'";
 		$sqluf = "SELECT * FROM $t_uf WHERE field_variable='$fname'";
 		$resuf = Database::query($sqluf);
 		$resuf = Database::query($sqluf);
 		if (Database::num_rows($resuf) == 1) {
 		if (Database::num_rows($resuf) == 1) {
@@ -1287,6 +1287,7 @@ class UserManager {
 			$sqlufv = "SELECT * FROM $t_ufv WHERE user_id = $user_id AND field_id = ".$rowuf['id']." ORDER BY id";
 			$sqlufv = "SELECT * FROM $t_ufv WHERE user_id = $user_id AND field_id = ".$rowuf['id']." ORDER BY id";
 			$resufv = Database::query($sqlufv);
 			$resufv = Database::query($sqlufv);
 			$n = Database::num_rows($resufv);
 			$n = Database::num_rows($resufv);
+          
 			if ($n > 1) {
 			if ($n > 1) {
 				//problem, we already have to values for this field and user combination - keep last one
 				//problem, we already have to values for this field and user combination - keep last one
 				while ($rowufv = Database::fetch_array($resufv)) {
 				while ($rowufv = Database::fetch_array($resufv)) {
@@ -1299,13 +1300,13 @@ class UserManager {
 					if ($rowufv['field_value'] != $fvalues) {
 					if ($rowufv['field_value'] != $fvalues) {
 						$sqlu = "UPDATE $t_ufv SET field_value = '$fvalues', tms = '$tms' WHERE id = ".$rowufv['id'];
 						$sqlu = "UPDATE $t_ufv SET field_value = '$fvalues', tms = '$tms' WHERE id = ".$rowufv['id'];
 						$resu = Database::query($sqlu);
 						$resu = Database::query($sqlu);
-						return($resu ? true : false);
+						return $resu ? true : false;
 					}
 					}
 					return true;
 					return true;
 				}
 				}
 			} elseif ($n == 1) {
 			} elseif ($n == 1) {
 				//we need to update the current record
 				//we need to update the current record
-				$rowufv = Database::fetch_array($resufv);
+				$rowufv = Database::fetch_array($resufv);                  
 				if ($rowufv['field_value'] != $fvalues) {
 				if ($rowufv['field_value'] != $fvalues) {
 					// If the new field is empty, delete it
 					// If the new field is empty, delete it
 					if ($fvalues == '') {
 					if ($fvalues == '') {
@@ -1314,17 +1315,17 @@ class UserManager {
 						// Otherwise update it
 						// Otherwise update it
 						$sql_query = "UPDATE $t_ufv SET field_value = '$fvalues', tms = '$tms' WHERE id = ".$rowufv['id'];
 						$sql_query = "UPDATE $t_ufv SET field_value = '$fvalues', tms = '$tms' WHERE id = ".$rowufv['id'];
 					}
 					}
+                    
 
 
 					$resu = Database::query($sql_query);
 					$resu = Database::query($sql_query);
-					return($resu ? true : false);
+					return $resu ? true : false;
 				}
 				}
 				return true;
 				return true;
 			} else {
 			} else {
 				$sqli = "INSERT INTO $t_ufv (user_id,field_id,field_value,tms) 
 				$sqli = "INSERT INTO $t_ufv (user_id,field_id,field_value,tms) 
-                         VALUES ($user_id,".$rowuf['id'].",'$fvalues', '$tms')";
-				//error_log('UM::update_extra_field_value: '.$sqli);
+                         VALUES ($user_id,".$rowuf['id'].",'$fvalues', '$tms')";				
 				$resi = Database::query($sqli);
 				$resi = Database::query($sqli);
-				return($resi ? true : false);
+				return $resi ? true : false;
 			}
 			}
 		} else {
 		} else {
 			return false; //field not found
 			return false; //field not found
@@ -1443,9 +1444,9 @@ class UserManager {
 
 
 		$sql = 'SELECT options.*
 		$sql = 'SELECT options.*
 				FROM '.$t_ufo.' options
 				FROM '.$t_ufo.' options
-					INNER JOIN '.$t_uf.' fields
-						ON fields.id = options.field_id
-							AND fields.field_variable="'.Database::escape_string($field_name).'"';
+                INNER JOIN '.$t_uf.' fields
+                ON fields.id = options.field_id AND
+                   fields.field_variable="'.Database::escape_string($field_name).'"';
 		$rs = Database::query($sql);
 		$rs = Database::query($sql);
 		return Database::store_result($rs);
 		return Database::store_result($rs);
 	}
 	}
@@ -1491,14 +1492,14 @@ class UserManager {
 			$row = Database::fetch_array($res);
 			$row = Database::fetch_array($res);
 			$order = $row[0]+1;
 			$order = $row[0]+1;
 		}
 		}
-		$time = time();
+		$time = api_get_utc_datetime();
 		$sql = "INSERT INTO $table_field
 		$sql = "INSERT INTO $table_field
 				SET field_type = '".Database::escape_string($fieldtype)."',
 				SET field_type = '".Database::escape_string($fieldtype)."',
 				field_variable = '".Database::escape_string($fieldvarname)."',
 				field_variable = '".Database::escape_string($fieldvarname)."',
 				field_display_text = '".Database::escape_string($fieldtitle)."',
 				field_display_text = '".Database::escape_string($fieldtitle)."',
 				field_default_value = '".Database::escape_string($fielddefault)."',
 				field_default_value = '".Database::escape_string($fielddefault)."',
 				field_order = '$order',
 				field_order = '$order',
-				tms = FROM_UNIXTIME($time)";
+				tms = '$time'";
 		$result = Database::query($sql);
 		$result = Database::query($sql);
 		if ($result) {
 		if ($result) {
 			//echo "id returned";
 			//echo "id returned";
@@ -1542,7 +1543,7 @@ class UserManager {
 						$max = $row[0] + 1;
 						$max = $row[0] + 1;
 					}
 					}
 					$time = time();
 					$time = time();
-					$sql = "INSERT INTO $table_field_options (field_id,option_value,option_display_text,option_order,tms) VALUES ($return,'$option','$option',$max,FROM_UNIXTIME($time))";
+					$sql = "INSERT INTO $table_field_options (field_id,option_value,option_display_text,option_order,tms) VALUES ($return,'$option','$option',$max, '$time')";
 					$res = Database::query($sql);
 					$res = Database::query($sql);
 					if ($res === false) {
 					if ($res === false) {
 						$return = false;
 						$return = false;
@@ -1587,15 +1588,16 @@ class UserManager {
 		$table_field 				= Database::get_main_table(TABLE_MAIN_USER_FIELD);
 		$table_field 				= Database::get_main_table(TABLE_MAIN_USER_FIELD);
 		$table_field_options		= Database::get_main_table(TABLE_MAIN_USER_FIELD_OPTIONS);
 		$table_field_options		= Database::get_main_table(TABLE_MAIN_USER_FIELD_OPTIONS);
 		$table_field_options_values = Database::get_main_table(TABLE_MAIN_USER_FIELD_VALUES);
 		$table_field_options_values = Database::get_main_table(TABLE_MAIN_USER_FIELD_VALUES);
-
-		// we first update the field definition with the new values
-		$time = time();
+		
+		$time = api_get_utc_datetime();
+        
+        // we first update the field definition with the new values
 		$sql = "UPDATE $table_field
 		$sql = "UPDATE $table_field
 				SET field_type = '".Database::escape_string($fieldtype)."',
 				SET field_type = '".Database::escape_string($fieldtype)."',
 				field_variable = '".Database::escape_string($fieldvarname)."',
 				field_variable = '".Database::escape_string($fieldvarname)."',
 				field_display_text = '".Database::escape_string($fieldtitle)."',
 				field_display_text = '".Database::escape_string($fieldtitle)."',
 				field_default_value = '".Database::escape_string($fielddefault)."',
 				field_default_value = '".Database::escape_string($fielddefault)."',
-				tms = FROM_UNIXTIME($time)
+				tms = '$time'
 			WHERE id = '".Database::escape_string($fieldid)."'";
 			WHERE id = '".Database::escape_string($fieldid)."'";
 		$result = Database::query($sql);
 		$result = Database::query($sql);
 
 
@@ -1621,7 +1623,8 @@ class UserManager {
 		}
 		}
 
 
 		// Remove all the field options (and also the choices of the user) that are NOT in the new list of options
 		// Remove all the field options (and also the choices of the user) that are NOT in the new list of options
-		$sql = "SELECT * FROM $table_field_options WHERE option_value NOT IN ('".implode("','", $list)."') AND field_id = '".Database::escape_string($fieldid)."'";
+		$sql = "SELECT * FROM $table_field_options 
+                WHERE option_value NOT IN ('".implode("','", $list)."') AND field_id = '".Database::escape_string($fieldid)."'";
 		$result = Database::query($sql);
 		$result = Database::query($sql);
 		$return['deleted_options'] = 0;
 		$return['deleted_options'] = 0;
 		while ($row = Database::fetch_array($result)) {
 		while ($row = Database::fetch_array($result)) {
@@ -1631,7 +1634,8 @@ class UserManager {
 			$return['deleted_options']++;
 			$return['deleted_options']++;
 
 
 			// deleting the answer of the user who has chosen this option
 			// deleting the answer of the user who has chosen this option
-			$sql_delete_option_value = "DELETE FROM $table_field_options_values WHERE field_id = '".Database::escape_string($fieldid)."' AND field_value = '".Database::escape_string($row['option_value'])."'";
+			$sql_delete_option_value = "DELETE FROM $table_field_options_values 
+                                        WHERE field_id = '".Database::escape_string($fieldid)."' AND field_value = '".Database::escape_string($row['option_value'])."'";
 			Database::query($sql_delete_option_value);
 			Database::query($sql_delete_option_value);
 			$return['deleted_option_values'] = $return['deleted_option_values'] + Database::affected_rows();
 			$return['deleted_option_values'] = $return['deleted_option_values'] + Database::affected_rows();
 		}
 		}
@@ -1655,9 +1659,9 @@ class UserManager {
 			if (Database::num_rows($res) > 0) {
 			if (Database::num_rows($res) > 0) {
 				$row = Database::fetch_array($res);
 				$row = Database::fetch_array($res);
 				$max = $row[0] + 1;
 				$max = $row[0] + 1;
-			}
-			$time = time();
-			$sql = "INSERT INTO $table_field_options (field_id,option_value,option_display_text,option_order,tms) VALUES ('".Database::escape_string($fieldid)."','".Database::escape_string($option)."','".Database::escape_string($option)."',$max,FROM_UNIXTIME($time))";
+			}			
+			$sql = "INSERT INTO $table_field_options (field_id,option_value,option_display_text,option_order,tms) 
+                    VALUES ('".Database::escape_string($fieldid)."','".Database::escape_string($option)."','".Database::escape_string($option)."', $max, '$time')";
 			$result = Database::query($sql);
 			$result = Database::query($sql);
 		}
 		}
 		return true;
 		return true;
@@ -1714,25 +1718,55 @@ class UserManager {
 		$res = Database::query($sql);
 		$res = Database::query($sql);
 		if (Database::num_rows($res) > 0) {
 		if (Database::num_rows($res) > 0) {
 			while ($row = Database::fetch_array($res)) {
 			while ($row = Database::fetch_array($res)) {
-				if ($row['type'] == self::USER_FIELD_TYPE_TAG) {
-					$tags = self::get_user_tags_to_string($user_id,$row['id'],false);
+                if ($row['type'] == self::USER_FIELD_TYPE_DOUBLE_SELECT) {
+                    $field_options = self::get_extra_field_options($row['fvar']);
+                    
+                    $field_details['options'] = $field_options;
+                    $field_details['field_variable'] = $row['fvar'];
+                    
+                    $values = array();                    
+                    foreach ($field_details['options'] as $key => $element) {                          
+                        if ($element['option_display_text'][0] == '*') {
+                            $values['*'][$element['option_value']] = str_replace('*', '', $element['option_display_text']);
+                        } else {
+                            $values[0][$element['option_value']] = $element['option_display_text'];
+                        }
+                    }
+                                        
+                    if (is_array($extra_data)) {                                          
+                        $sqlu = "SELECT field_value as fval FROM $t_ufv WHERE field_id=".$row['id']." AND user_id = ".$user_id;
+                        $resu = Database::query($sqlu);
+                        $rowu = Database::fetch_array($resu);
+
+                        $selected_values = explode(';', $rowu['fval']);
+                        $extra_data['extra_'.$field_details['field_variable']] = array();
+
+                        // looping through the selected values and assigning the selected values to either the first or second select form
+                        foreach ($selected_values as $key => $selected_value) {                                
+                            if (in_array($selected_value, $values[0])) {
+                                $extra_data['extra_'.$field_details['field_variable']]['extra_'.$field_details['field_variable']] = $selected_value;
+                            } else {
+                                $extra_data['extra_'.$field_details['field_variable']]['extra_'.$field_details['field_variable'].'*'] = $selected_value;
+                            }                                
+                        }                        
+                    }
                     
                     
+                } elseif ($row['type'] == self::USER_FIELD_TYPE_TAG) {
+					$tags = self::get_user_tags_to_string($user_id, $row['id'], false);                    
 					$extra_data['extra_'.$row['fvar']] = $tags;
 					$extra_data['extra_'.$row['fvar']] = $tags;
 				} else {
 				} else {
 					$sqlu = "SELECT field_value as fval FROM $t_ufv WHERE field_id=".$row['id']." AND user_id = ".$user_id;
 					$sqlu = "SELECT field_value as fval FROM $t_ufv WHERE field_id=".$row['id']." AND user_id = ".$user_id;
 					$resu = Database::query($sqlu);
 					$resu = Database::query($sqlu);
 					$fval = '';
 					$fval = '';
 					// get default value
 					// get default value
-					$sql_df = "SELECT field_default_value as fval_df " .
-							" FROM $t_uf " .
-							" WHERE id=".$row['id'];
+					$sql_df = "SELECT field_default_value as fval_df FROM $t_uf WHERE id=".$row['id'];
 					$res_df = Database::query($sql_df);
 					$res_df = Database::query($sql_df);
 
 
 					if (Database::num_rows($resu) > 0) {
 					if (Database::num_rows($resu) > 0) {
 						$rowu = Database::fetch_array($resu);
 						$rowu = Database::fetch_array($resu);
 						$fval = $rowu['fval'];
 						$fval = $rowu['fval'];
 						if ($row['type'] ==  self::USER_FIELD_TYPE_SELECT_MULTIPLE) {
 						if ($row['type'] ==  self::USER_FIELD_TYPE_SELECT_MULTIPLE) {
-							$fval = split(';',$rowu['fval']);
+							$fval = split(';', $rowu['fval']);
 						}
 						}
 					} else {
 					} else {
 						$row_df = Database::fetch_array($res_df);
 						$row_df = Database::fetch_array($res_df);
@@ -3533,7 +3567,7 @@ class UserManager {
         
         
         // User extra fields
         // User extra fields
         if ($type == 'user') {
         if ($type == 'user') {
-            $extra = UserManager::get_extra_fields(0, 50, 5, 'ASC', true, null, true);            
+            $extra = self::get_extra_fields(0, 50, 5, 'ASC', true, null, true);            
         }       
         }       
         
         
         $jquery_ready_content = null;
         $jquery_ready_content = null;
@@ -3549,8 +3583,7 @@ class UserManager {
                 case self::USER_FIELD_TYPE_TEXT:
                 case self::USER_FIELD_TYPE_TEXT:
                     $form->addElement('text', 'extra_'.$field_details['field_variable'], $field_details['field_display_text'], array('class' => 'span4'));
                     $form->addElement('text', 'extra_'.$field_details['field_variable'], $field_details['field_display_text'], array('class' => 'span4'));
                     $form->applyFilter('extra_'.$field_details['field_variable'], 'stripslashes');
                     $form->applyFilter('extra_'.$field_details['field_variable'], 'stripslashes');
-                    $form->applyFilter('extra_'.$field_details['field_variable'], 'trim');
-                    
+                    $form->applyFilter('extra_'.$field_details['field_variable'], 'trim');                    
                     if (!$admin_permissions) {
                     if (!$admin_permissions) {
                         if ($field_details['field_visible'] == 0)	$form->freeze('extra_'.$field_details['field_variable']);
                         if ($field_details['field_visible'] == 0)	$form->freeze('extra_'.$field_details['field_variable']);
                     }
                     }
@@ -3568,7 +3601,7 @@ class UserManager {
                     $group = array();
                     $group = array();
                     foreach ($field_details['options'] as $option_id => $option_details) {
                     foreach ($field_details['options'] as $option_id => $option_details) {
                         $options[$option_details['option_value']] = $option_details['option_display_text'];
                         $options[$option_details['option_value']] = $option_details['option_display_text'];
-                        $group[] =& HTML_QuickForm::createElement('radio', 'extra_'.$field_details['field_variable'], $option_details['option_value'],$option_details['option_display_text'].'<br />',$option_details['option_value']);
+                        $group[] =$form->createElement('radio', 'extra_'.$field_details['field_variable'], $option_details['option_value'],$option_details['option_display_text'].'<br />',$option_details['option_value']);
                     }
                     }
                     $form->addGroup($group, 'extra_'.$field_details['field_variable'], $field_details['field_display_text'], '');
                     $form->addGroup($group, 'extra_'.$field_details['field_variable'], $field_details['field_display_text'], '');
                     if (!$admin_permissions) {
                     if (!$admin_permissions) {
@@ -3625,42 +3658,28 @@ class UserManager {
                     $defaults['extra_'.$field_details['field_variable']] = date('Y-m-d 12:00:00');
                     $defaults['extra_'.$field_details['field_variable']] = date('Y-m-d 12:00:00');
                     $form -> setDefaults($defaults);
                     $form -> setDefaults($defaults);
                     if (!$admin_permissions) {
                     if (!$admin_permissions) {
-                        if ($field_details['field_visible'] == 0)	$form->freeze('extra_'.$field_details['field_variable']);
+                        if ($field_details['field_visible'] == 0)	
+                            $form->freeze('extra_'.$field_details['field_variable']);
                     }
                     }
                     $form->applyFilter('theme', 'trim');
                     $form->applyFilter('theme', 'trim');
                     break;
                     break;
                 case self::USER_FIELD_TYPE_DOUBLE_SELECT:
                 case self::USER_FIELD_TYPE_DOUBLE_SELECT:
-                    $values = array();
-                    foreach ($field_details['options'] as $key => $element) {                    
+                    $values = array();                    
+                    foreach ($field_details['options'] as $key => $element) {                          
                         if ($element['option_display_text'][0] == '*') {
                         if ($element['option_display_text'][0] == '*') {
-                            $values['*'][$element[0]] = str_replace('*', '', $element['option_display_text']);
+                            $values['*'][$element['option_value']] = str_replace('*', '', $element['option_display_text']);
                         } else {
                         } else {
-                            $values[0][$element[0]] = $element[2];
+                            $values[0][$element['option_value']] = $element['option_display_text'];
                         }
                         }
-                    }
-
-                    $group = '';
-                    $group[] =& HTML_QuickForm::createElement('select', 'extra_'.$field_details['field_variable'], '', $values[0], '');
-                    $group[] =& HTML_QuickForm::createElement('select', 'extra_'.$field_details['field_variable'].'*', '', $values['*'], '');
+                    }                    
+                    $group = array();
+                    $group[] = $form->createElement('select', 'extra_'.$field_details['field_variable'], '', $values[0], '');
+                    $group[] = $form->createElement('select', 'extra_'.$field_details['field_variable'].'*', '', $values['*'], '');
                     $form->addGroup($group, 'extra_'.$field_details['field_variable'], $field_details['field_display_text'], '&nbsp;');
                     $form->addGroup($group, 'extra_'.$field_details['field_variable'], $field_details['field_display_text'], '&nbsp;');
                     
                     
                     if (!$admin_permissions) {
                     if (!$admin_permissions) {
-                        if ($field_details['field_visible'] == 0)	$form->freeze('extra_'.$field_details['field_variable']);
-                    }
-
-                    // recoding the selected values for double : if the user has selected certain values, we have to assign them to the correct select form
-                    if (key_exists('extra_'.$field_details['field_variable'], $extra_data)) {
-                        // exploding all the selected values (of both select forms)
-                        $selected_values = explode(';', $extra_data['extra_'.$field_details['field_variable']]);
-                        $extra_data['extra_'.$field_details['field_variable']] = array();
-
-                        // looping through the selected values and assigning the selected values to either the first or second select form
-                        foreach ($selected_values as $key => $selected_value) {
-                            if (key_exists($selected_value, $values[0])) {
-                                $extra_data['extra_'.$field_details['field_variable']]['extra_'.$field_details['field_variable']] = $selected_value;
-                            } else {
-                                $extra_data['extra_'.$field_details['field_variable']]['extra_'.$field_details['field_variable'].'*'] = $selected_value;
-                            }
+                        if ($field_details['field_visible'] == 0) {
+                            $form->freeze('extra_'.$field_details['field_variable']);
                         }
                         }
                     }
                     }
                     break;
                     break;
@@ -3711,12 +3730,19 @@ EOF;
                     // get the social network's favicon
                     // get the social network's favicon
                     $icon_path = UserManager::get_favicon_from_url($extra_data['extra_'.$field_details['field_variable']], $field_details['field_default_value']);
                     $icon_path = UserManager::get_favicon_from_url($extra_data['extra_'.$field_details['field_variable']], $field_details['field_default_value']);
                     // special hack for hi5
                     // special hack for hi5
-                    $leftpad = '1.7'; $top = '0.4'; $domain = parse_url($icon_path, PHP_URL_HOST); if ($domain == 'www.hi5.com' or $domain == 'hi5.com') { $leftpad = '3'; $top = '0';}
+                    $leftpad = '1.7'; 
+                    $top = '0.4'; 
+                    $domain = parse_url($icon_path, PHP_URL_HOST); 
+                    if ($domain == 'www.hi5.com' or $domain == 'hi5.com') {
+                        $leftpad = '3'; $top = '0';                        
+                    }
                     // print the input field
                     // print the input field
                     $form->addElement('text', 'extra_'.$field_details['field_variable'], $field_details['field_display_text'], array('size' => 60, 'style' => 'background-image: url(\''.$icon_path.'\'); background-repeat: no-repeat; background-position: 0.4em '.$top.'em; padding-left: '.$leftpad.'em; '));
                     $form->addElement('text', 'extra_'.$field_details['field_variable'], $field_details['field_display_text'], array('size' => 60, 'style' => 'background-image: url(\''.$icon_path.'\'); background-repeat: no-repeat; background-position: 0.4em '.$top.'em; padding-left: '.$leftpad.'em; '));
                     $form->applyFilter('extra_'.$field_details['field_variable'], 'stripslashes');
                     $form->applyFilter('extra_'.$field_details['field_variable'], 'stripslashes');
                     $form->applyFilter('extra_'.$field_details['field_variable'], 'trim');
                     $form->applyFilter('extra_'.$field_details['field_variable'], 'trim');
-                    if ($field_details['field_visible'] == 0)	$form->freeze('extra_'.$field_details['field_variable']);
+                    if ($field_details['field_visible'] == 0) {	
+                        $form->freeze('extra_'.$field_details['field_variable']);
+                    }
                     break;
                     break;
             }
             }
         }
         }