From c40e1fe9be98f95fa46c83567bdf1c6ba44d190d Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Thu, 08 Mar 2007 15:18:23 -0500
Subject: [PATCH] Fixed a bug in the group selector of the user edit form of the admin module.

---
 interface/lib/classes/tform.inc.php |   82 +++++++++++++++++++++++++++++++++--------
 1 files changed, 66 insertions(+), 16 deletions(-)

diff --git a/interface/lib/classes/tform.inc.php b/interface/lib/classes/tform.inc.php
index dd489c3..a7f821a 100644
--- a/interface/lib/classes/tform.inc.php
+++ b/interface/lib/classes/tform.inc.php
@@ -313,8 +313,8 @@
                                         break;
 
                                         case 'CHECKBOX':
-                                                $checked = (empty($val))?'':' CHECKED';
-                                                $new_record[$key] = "<input name=\"".$key."\" type=\"checkbox\" value=\"".$field['value']."\" $checked>\r\n";
+                                                $checked = ($val == $field['value'][1])?' CHECKED':'';
+                                                $new_record[$key] = "<input name=\"".$key."\" type=\"checkbox\" value=\"".$field['value'][1]."\" $checked>\r\n";
                                         break;
 
                                         case 'CHECKBOXARRAY':
@@ -397,8 +397,9 @@
                                 break;
 
                                 case 'CHECKBOX':
-                                        $checked = (empty($field["default"]))?'':' CHECKED';
-                                        $new_record[$key] = "<input name=\"".$key."\" type=\"checkbox\" value=\"".$field['value']."\" $checked>\r\n";
+                                        // $checked = (empty($field["default"]))?'':' CHECKED';
+										$checked = ($field["default"] == $field['value'][1])?' CHECKED':'';
+                                        $new_record[$key] = "<input name=\"".$key."\" type=\"checkbox\" value=\"".$field['value'][1]."\" $checked>\r\n";
                                 break;
 
                                 case 'CHECKBOXARRAY':
@@ -483,7 +484,9 @@
                                         if($record[$key] > 0) {
                                                 list($tag,$monat,$jahr) = explode('.',$record[$key]);
                                                 $new_record[$key] = mktime(0,0,0,$monat,$tag,$jahr);
-                                        }
+                                        } else {
+											$new_record[$key] = 0;
+										}
                                 break;
                                 case 'INTEGER':
                                         $new_record[$key] = intval($record[$key]);
@@ -526,7 +529,7 @@
         function validateField($field_name, $field_value, $validators) {
 
                 global $app;
-
+				
                 // loop trough the validators
                 foreach($validators as $validator) {
 
@@ -543,39 +546,63 @@
                                                 $num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM ".$escape.$this->formDef['db_table'].$escape. " WHERE $field_name = '".$app->db->quote($field_value)."'");
                                                 if($num_rec["number"] > 0) {
                                                         $errmsg = $validator['errmsg'];
-                                                        $this->errorMessage .= $this->wordbook[$errmsg]."<br>\r\n";
+														if(isset($this->wordbook[$errmsg])) {
+                                                        	$this->errorMessage .= $this->wordbook[$errmsg]."<br>\r\n";
+														} else {
+															$this->errorMessage .= $errmsg."<br>\r\n";
+														}
                                                 }
                                         } else {
                                                 $num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM ".$escape.$this->formDef['db_table'].$escape. " WHERE $field_name = '".$app->db->quote($field_value)."' AND ".$this->formDef['db_table_idx']." != ".$this->primary_id);
                                                 if($num_rec["number"] > 0) {
                                                         $errmsg = $validator['errmsg'];
-                                                        $this->errorMessage .= $this->wordbook[$errmsg]."<br>\r\n";
+                                                        if(isset($this->wordbook[$errmsg])) {
+                                                        	$this->errorMessage .= $this->wordbook[$errmsg]."<br>\r\n";
+														} else {
+															$this->errorMessage .= $errmsg."<br>\r\n";
+														}
                                                 }
                                         }
                                 break;
                                 case 'NOTEMPTY':
                                         if(empty($field_value)) {
                                                 $errmsg = $validator['errmsg'];
-                                                $this->errorMessage .= $this->wordbook[$errmsg]."<br>\r\n";
+                                                if(isset($this->wordbook[$errmsg])) {
+                                                    $this->errorMessage .= $this->wordbook[$errmsg]."<br>\r\n";
+												} else {
+													$this->errorMessage .= $errmsg."<br>\r\n";
+												}
                                         }
                                 break;
                                 case 'ISEMAIL':
                                         if(!preg_match("/^\w+[\w.-]*\w+@\w+[\w.-]*\w+\.[a-z]{2,10}$/i", $field_value)) {
                                                 $errmsg = $validator['errmsg'];
-                                                $this->errorMessage .= $this->wordbook[$errmsg]."<br>\r\n";
+                                                if(isset($this->wordbook[$errmsg])) {
+                                                    $this->errorMessage .= $this->wordbook[$errmsg]."<br>\r\n";
+												} else {
+													$this->errorMessage .= $errmsg."<br>\r\n";
+												}
                                         }
                                 break;
                                 case 'ISINT':
                                         $tmpval = intval($field_value);
                                         if($tmpval === 0 and !empty($field_value)) {
                                                 $errmsg = $validator['errmsg'];
-                                                $this->errorMessage .= $this->wordbook[$errmsg]."<br>\r\n";
+                                                if(isset($this->wordbook[$errmsg])) {
+                                                    $this->errorMessage .= $this->wordbook[$errmsg]."<br>\r\n";
+												} else {
+													$this->errorMessage .= $errmsg."<br>\r\n";
+												}
                                         }
                                 break;
                                 case 'ISPOSITIVE':
                                         if(!is_numeric($field_value) || $field_value <= 0){
                                           $errmsg = $validator['errmsg'];
-                                          $this->errorMessage .= $this->wordbook[$errmsg]."<br>\r\n";
+                                          if(isset($this->wordbook[$errmsg])) {
+                                             $this->errorMessage .= $this->wordbook[$errmsg]."<br>\r\n";
+										  } else {
+											 $this->errorMessage .= $errmsg."<br>\r\n";
+										  }
                                         }
                                 break;
                                 case 'CUSTOM':
@@ -589,6 +616,9 @@
                                                 $this->errorMessage .= "Custom validator class or function is empty<br>\r\n";
                                         }
                                 break;
+								default:
+									$this->errorMessage .= "Unknown Validator: ".$validator['type'];
+								break;
                         }
 
 
@@ -646,6 +676,13 @@
                                                         } else {
                                                                 $sql_insert_val .= "md5('".$record[$key]."'), ";
                                                         }
+                                                } elseif ($field['formtype'] == 'CHECKBOX') {
+                                                        $sql_insert_key .= "`$key`, ";
+														if($record[$key] == '') {
+															$sql_insert_val .= "'".$field['value'][0]."', ";
+														} else {
+															$sql_insert_val .= "'".$record[$key]."', ";
+														}
                                                 } else {
                                                         $sql_insert_key .= "`$key`, ";
                                                         $sql_insert_val .= "'".$record[$key]."', ";
@@ -657,6 +694,12 @@
                                                         } else {
                                                                 $sql_update .= "`$key` = md5('".$record[$key]."'), ";
                                                         }
+                                                } elseif ($field['formtype'] == 'CHECKBOX') {
+														if($record[$key] == '') {
+															$sql_update .= "`$key` = '".$field['value'][0]."', ";
+														} else {
+															$sql_update .= "`$key` = '".$record[$key]."', ";
+														}
                                                 } else {
                                                         $sql_update .= "`$key` = '".$record[$key]."', ";
                                                 }
@@ -703,7 +746,6 @@
 
                 // Daten in History tabelle speichern
                 if($this->errorMessage == '' and $this->formDef['db_history'] == 'yes') $this->datalogSave($action,$primary_id,$record);
-
                 return $sql;
         }
 
@@ -805,14 +847,22 @@
                                 }
                         }
                 }
+				
+				// Insert the server_id, if the record has a server_id
+				$server_id = ($record_old["server_id"] > 0)?$record_old["server_id"]:0;
 
                 if(count($diffrec) > 0) {
-                        $diffstr = $app->db->quote(serialize($diffrec));
+                        
+						// We need the full records in ISPConfig, not only the diffs
+						$diffrec = array(	'old' => $record_old,
+											'new' => $record_new);
+						
+						$diffstr = $app->db->quote(serialize($diffrec));
                         $username = $app->db->quote($_SESSION["s"]["user"]["username"]);
                         $dbidx = $this->formDef['db_table_idx'].":".$primary_id;
                         $action = ($action == 'INSERT')?'i':'u';
-                        $sql = "INSERT INTO sys_datalog (dbtable,dbidx,action,tstamp,user,data) VALUES ('".$this->formDef['db_table']."','$dbidx','$action','".time()."','$username','$diffstr')";
-                        $app->db->query($sql);
+                        $sql = "INSERT INTO sys_datalog (dbtable,dbidx,server_id,action,tstamp,user,data) VALUES ('".$this->formDef['db_table']."','$dbidx','$server_id','$action','".time()."','$username','$diffstr')";
+						$app->db->query($sql);
                 }
 
                 return true;

--
Gitblit v1.9.1