From b889edb33e4a09cc1f65d2fb9ad9f9ea16b1eae9 Mon Sep 17 00:00:00 2001
From: ftimme <ft@falkotimme.com>
Date: Tue, 04 Sep 2012 11:42:42 -0400
Subject: [PATCH] - Ported changes from Apache plugin to nginx plugin. - Fixed errors in system.inc.php-

---
 interface/lib/classes/tform.inc.php |   98 +++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 91 insertions(+), 7 deletions(-)

diff --git a/interface/lib/classes/tform.inc.php b/interface/lib/classes/tform.inc.php
index b469e2e..12547ba 100644
--- a/interface/lib/classes/tform.inc.php
+++ b/interface/lib/classes/tform.inc.php
@@ -172,8 +172,14 @@
 				if(isset($record[$table_idx])) $new_record[$table_idx] = intval($record[$table_idx ]);
 				
 				if(is_array($record)) {
-                        foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) {
-                                switch ($field['datatype']) {
+						foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) {
+                                
+								//* Apply filter to record value.
+								if(isset($field['filters']) && is_array($field['filters'])) {
+									$record[$key] = $this->filterField($key, (isset($record[$key]))?$record[$key]:'', $field['filters'], 'SHOW');
+								}
+								
+								switch ($field['datatype']) {
                                 case 'VARCHAR':
                                         $new_record[$key] = $record[$key];
                                 break;
@@ -619,8 +625,16 @@
 
                 if(is_array($record)) {
                         foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) {
-
-                                if(isset($field['validators']) && is_array($field['validators'])) $this->validateField($key, (isset($record[$key]))?$record[$key]:'', $field['validators']);
+								
+								//* Apply filter to record value
+                                if(isset($field['filters']) && is_array($field['filters'])) {
+									$record[$key] = $this->filterField($key, (isset($record[$key]))?$record[$key]:'', $field['filters'], 'SAVE');
+								}
+								
+								//* Validate record value
+								if(isset($field['validators']) && is_array($field['validators'])) {
+									$this->validateField($key, (isset($record[$key]))?$record[$key]:'', $field['validators']);
+								}
 
                                 switch ($field['datatype']) {
                                 case 'VARCHAR':
@@ -703,6 +717,55 @@
                         }
                 }
                 return $new_record;
+        }
+		
+		/**
+        * process the filters for a given field.
+        *
+        * @param field_name = Name of the field
+        * @param field_value = value of the field
+        * @param filters = Array of filters
+		* @param filter_event = 'SAVE'or 'SHOW'
+        * @return record
+        */
+
+        function filterField($field_name, $field_value, $filters, $filter_event) {
+
+			global $app;
+			$returnval = $field_value;
+				
+			//* Loop trough all filters
+			foreach($filters as $filter) {
+				if($filter['event'] == $filter_event) {
+					switch ($filter['type']) {
+						case 'TOLOWER':
+							$returnval = strtolower($field_value);
+						break;
+						case 'TOUPPER':
+							$returnval = strtoupper($field_value);
+						break;
+						case 'IDNTOASCII':
+							if(function_exists('idn_to_ascii')) {
+								$returnval = idn_to_ascii($field_value);
+							} else {
+								$returnval = $field_value;
+							}
+						break;
+						case 'IDNTOUTF8':
+							if(function_exists('idn_to_utf8')) {
+								$returnval = idn_to_utf8($field_value);
+							} else {
+								$returnval = $field_value;
+							}
+						break;
+						default:
+							$this->errorMessage .= "Unknown Filter: ".$filter['type'];
+						break;
+					}
+				}
+			}
+
+			return $returnval;
         }
 
         /**
@@ -869,6 +932,27 @@
 									}
 								}
                                 break;
+								case 'RANGE':
+                                        //* Checks if the value is within the given range or above / below a value
+										//* Range examples: < 10 = ":10", between 2 and 10 = "2:10", above 5 = "5:".
+										$range_parts = explode(':',trim($validator['range']));
+										$ok = true;
+                                        if($range_parts[0] != '' && $field_value < $range_parts[0]) {
+											$ok = false;
+										}
+										if($range_parts[1] != '' && $field_value > $range_parts[1]) {
+											$ok = false;
+										}
+										if($ok != true) {
+											$errmsg = $validator['errmsg'];
+											if(isset($this->wordbook[$errmsg])) {
+												$this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
+											} else {
+												$this->errorMessage .= $errmsg."<br />\r\n";
+											}
+                                        }
+										unset($range_parts);
+                                break;
                                 case 'CUSTOM':
                                         // Calls a custom class to validate this record
                                         if($validator['class'] != '' and $validator['function'] != '') {
@@ -918,7 +1002,7 @@
                 $this->action = $action;
                 $this->primary_id = $primary_id;
 
-                $record = $this->encode($record,$tab);
+                $record = $this->encode($record,$tab,true);
                 $sql_insert_key = '';
                 $sql_insert_val = '';
                 $sql_update = '';
@@ -1041,7 +1125,7 @@
 					//* return a empty string if there is nothing to update
 					if(trim($sql_update) == '') $sql = '';
                 }
-                
+
                 return $sql;
         }
 
@@ -1086,7 +1170,7 @@
                      $app->uses('tform_tpl_generator');
                      $app->tform_tpl_generator->buildHTML($this->formDef,$tab['name']);
                 }
-
+                $app->tpl->setVar('readonly_tab', (isset($tab['readonly']) && $tab['readonly'] == true));
                 $app->tpl->setInclude('content_tpl',$tab["template"]);
                 $tab["active"] = 1;
                 $_SESSION["s"]["form"]["tab"] = $tab['name'];

--
Gitblit v1.9.1