From 040f8cf58a0e20edb77a6fe4cfb4df1b35dc45d7 Mon Sep 17 00:00:00 2001
From: NBonline <NBonline@ispconfig3>
Date: Sun, 27 Nov 2005 18:24:00 -0500
Subject: [PATCH] Updated Swe lng files

---
 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