From eac88333c4335a25a501b3badd76e558fb68f708 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Thu, 24 Nov 2005 11:06:41 -0500
Subject: [PATCH] Mail alias
---
interface/lib/classes/tform.inc.php | 48 +++++++++++++++++++++++++++++++++++++-----------
1 files changed, 37 insertions(+), 11 deletions(-)
diff --git a/interface/lib/classes/tform.inc.php b/interface/lib/classes/tform.inc.php
index 542dc4a..54bbce1 100644
--- a/interface/lib/classes/tform.inc.php
+++ b/interface/lib/classes/tform.inc.php
@@ -101,12 +101,13 @@
* der Variablen mit Regex
* @var errorMessage
*/
- var $errorMessage;
+ var $errorMessage = '';
var $dateformat = "d.m.Y";
var $formDef;
var $wordbook;
var $module;
+ var $primary_id;
/**
* Laden der Tabellendefinition
@@ -215,9 +216,11 @@
$querystring = str_replace("{GROUPS}",$_SESSION["s"]["user"]["groups"],$querystring);
$table_idx = $this->formDef['db_table_idx'];
$querystring = str_replace("{RECORDID}",$record[$table_idx],$querystring);
+ $querystring = str_replace("{AUTHSQL}",$this->getAuthSQL('r'),$querystring);
// Getting the records
$tmp_records = $app->db->queryAllRecords($querystring);
+ if($app->db->errorMessage != '') die($app->db->errorMessage);
if(is_array($tmp_records)) {
$key_field = $field["datasource"]["keyfield"];
$value_field = $field["datasource"]["valuefield"];
@@ -239,6 +242,8 @@
$this->errorMessage .= "Custom datasource class or function is empty<br>\r\n";
}
}
+
+ return $values;
}
@@ -354,6 +359,12 @@
} else {
// Action: NEW
foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) {
+
+ // If Datasource is set, get the data from there
+ if(is_array($field['datasource'])) {
+ $field["value"] = $this->getDatasourceData($field, $record);
+ }
+
switch ($field['formtype']) {
case 'SELECT':
if(is_array($field['value'])) {
@@ -425,7 +436,7 @@
break;
default:
- $new_record[$key] = htmlspecialchars($field['value']);
+ $new_record[$key] = htmlspecialchars($field['default']);
}
}
@@ -446,7 +457,7 @@
function encode($record,$tab) {
if(!is_array($this->formDef['tabs'][$tab])) $app->error("Tab ist leer oder existiert nicht (TAB: $tab).");
- $this->errorMessage = '';
+ //$this->errorMessage = '';
if(is_array($record)) {
foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) {
@@ -526,14 +537,15 @@
}
break;
case 'UNIQUE':
- $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($this->action == 'NEW') {
+ $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";
}
} else {
- if($num_rec["number"] > 1) {
+ $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";
}
@@ -545,14 +557,12 @@
$this->errorMessage .= $this->wordbook[$errmsg]."<br>\r\n";
}
break;
- /*
case 'ISEMAIL':
- if(!preg_match("", $field_value)) {
+ if(!preg_match("/^\w+[\w.-]*\w+@\w+[\w.-]*\w+\.[a-z]{2,4}$/i", $field_value)) {
$errmsg = $validator['errmsg'];
$this->errorMessage .= $this->wordbook[$errmsg]."<br>\r\n";
}
break;
- */
case 'ISINT':
$tmpval = intval($field_value);
if($tmpval === 0 and !empty($field_value)) {
@@ -591,6 +601,9 @@
global $app;
+ // If there are no data records on the tab, return empty sql string
+ if(count($this->formDef['tabs'][$tab]['fields']) == 0) return '';
+
// checking permissions
if($this->formDef['auth'] == 'yes') {
if($action == "INSERT") {
@@ -601,6 +614,7 @@
}
$this->action = $action;
+ $this->primary_id = $primary_id;
$record = $this->encode($record,$tab);
$sql_insert_key = '';
@@ -619,14 +633,22 @@
if($action == "INSERT") {
if($field['formtype'] == 'PASSWORD') {
$sql_insert_key .= "`$key`, ";
- $sql_insert_val .= "md5('".$record[$key]."'), ";
+ if($field['encryption'] == 'CRYPT') {
+ $sql_insert_val .= "'".crypt($record[$key])."', ";
+ } else {
+ $sql_insert_val .= "md5('".$record[$key]."'), ";
+ }
} else {
$sql_insert_key .= "`$key`, ";
$sql_insert_val .= "'".$record[$key]."', ";
}
} else {
if($field['formtype'] == 'PASSWORD') {
- $sql_update .= "`$key` = md5('".$record[$key]."'), ";
+ if($field['encryption'] == 'CRYPT') {
+ $sql_update .= "`$key` = '".crypt($record[$key])."', ";
+ } else {
+ $sql_update .= "`$key` = md5('".$record[$key]."'), ";
+ }
} else {
$sql_update .= "`$key` = '".$record[$key]."', ";
}
@@ -634,6 +656,7 @@
}
}
}
+
// F�ge Backticks nur bei unvollst�ndigen Tabellennamen ein
if(stristr($this->formDef['db_table'],'.')) {
@@ -823,9 +846,12 @@
} else {
$result = false;
if($this->formDef["auth_preset"]["userid"] == $_SESSION["s"]["user"]["userid"] && stristr($perm,$this->formDef["auth_preset"]["perm_user"])) $result = true;
- if($this->formDef["auth_preset"]["userid"] == $_SESSION["s"]["user"]["groupid"] && stristr($perm,$this->formDef["auth_preset"]["perm_group"])) $result = true;
+ if($this->formDef["auth_preset"]["groupid"] == $_SESSION["s"]["user"]["groupid"] && stristr($perm,$this->formDef["auth_preset"]["perm_group"])) $result = true;
if(@stristr($perm,$this->formDef["auth_preset"]["perm_other"])) $result = true;
+ // if preset == 0, everyone can insert a record of this type
+ if($this->formDef["auth_preset"]["userid"] == 0 AND $this->formDef["auth_preset"]["groupid"] == 0) $result = true;
+
return $result;
}
--
Gitblit v1.9.1