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