From e326996e0eebd7783c9eba4a5ec0b41ed6a69d72 Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Tue, 05 Jun 2007 17:45:02 -0400 Subject: [PATCH] Added autoresponder function and custom maildrop rules. --- interface/lib/classes/tform.inc.php | 76 ++++++++++++++++++++++++++++---------- 1 files changed, 56 insertions(+), 20 deletions(-) diff --git a/interface/lib/classes/tform.inc.php b/interface/lib/classes/tform.inc.php index bdcbaed..f9ad1ec 100644 --- a/interface/lib/classes/tform.inc.php +++ b/interface/lib/classes/tform.inc.php @@ -673,15 +673,23 @@ if($field['formtype'] == 'PASSWORD') { $sql_insert_key .= "`$key`, "; if($field['encryption'] == 'CRYPT') { - // $sql_insert_val .= "encrypt('".$record[$key]."'), "; - $sql_insert_val .= "'".crypt($record[$key],substr(md5(time()),0,2))."', "; + $salt="$1$"; + for ($n=0;$n<8;$n++) { + $salt.=chr(mt_rand(64,126)); + } + $salt.="$"; + // $salt = substr(md5(time()),0,2); + $record[$key] = crypt($record[$key],$salt); } else { - $sql_insert_val .= "md5('".$record[$key]."'), "; + $record[$key] = md5($record[$key]); } + $sql_insert_val .= "'".$record[$key]."', "; } elseif ($field['formtype'] == 'CHECKBOX') { $sql_insert_key .= "`$key`, "; if($record[$key] == '') { + // if a checkbox is not set, we set it to the unchecked value $sql_insert_val .= "'".$field['value'][0]."', "; + $record[$key] = $field['value'][0]; } else { $sql_insert_val .= "'".$record[$key]."', "; } @@ -691,15 +699,23 @@ } } else { if($field['formtype'] == 'PASSWORD') { - if($field['encryption'] == 'CRYPT') { - // $sql_update .= "`$key` = encrypt('".$record[$key]."'), "; - $sql_update .= "`$key` = '".crypt($record[$key],substr(md5(time()),0,2))."', "; + if($field['encryption'] == 'CRYPT') { + $salt="$1$"; + for ($n=0;$n<8;$n++) { + $salt.=chr(mt_rand(64,126)); + } + $salt.="$"; + // $salt = substr(md5(time()),0,2); + $record[$key] = crypt($record[$key],$salt); } else { - $sql_update .= "`$key` = md5('".$record[$key]."'), "; + $record[$key] = md5($record[$key]); } + $sql_update .= "`$key` = '".$record[$key]."', "; } elseif ($field['formtype'] == 'CHECKBOX') { if($record[$key] == '') { + // if a checkbox is not set, we set it to the unchecked value $sql_update .= "`$key` = '".$field['value'][0]."', "; + $record[$key] = $field['value'][0]; } else { $sql_update .= "`$key` = '".$record[$key]."', "; } @@ -707,7 +723,11 @@ $sql_update .= "`$key` = '".$record[$key]."', "; } } - } + } else { + // we unset the password filed, if empty to tell the datalog function + // that the password has not been changed + unset($record[$key]); + } } } @@ -840,30 +860,46 @@ } $diffrec = array(); - + if(is_array($record_new)) { foreach($record_new as $key => $val) { if($record_old[$key] != $val) { - // Datensatz hat sich ge�ndert + // Record has changed $diffrec[$key] = array('old' => $record_old[$key], - 'new' => $val); + 'new' => $val); } } } + $this->diffrec = $diffrec; + + // Full diff records for ISPConfig, they have a different format then the simple diffrec + $diffrec_full = array(); + + if(is_array($record_old)) { + foreach($record_old as $key => $val) { + if(isset($record_new[$key]) && $record_new[$key] != $val) { + // Record has changed + $diffrec_full['old'][$key] = $val; + $diffrec_full['new'][$key] = $record_new[$key]; + } else { + $diffrec_full['old'][$key] = $val; + $diffrec_full['new'][$key] = $val; + } + } + } + + /* + echo "<pre>"; + print_r($diffrec_full); + echo "</pre>"; + */ // Insert the server_id, if the record has a server_id $server_id = ($record_old["server_id"] > 0)?$record_old["server_id"]:0; if(isset($record_new["server_id"])) $server_id = $record_new["server_id"]; - - $this->diffrec = $diffrec; - if(count($diffrec) > 0) { - - // 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)); + if(count($this->diffrec) > 0) { + $diffstr = $app->db->quote(serialize($diffrec_full)); $username = $app->db->quote($_SESSION["s"]["user"]["username"]); $dbidx = $this->formDef['db_table_idx'].":".$primary_id; $action = ($action == 'INSERT')?'i':'u'; -- Gitblit v1.9.1