@@ -172,8 +172,14 @@ function decode($record,$tab) {
172172 if (isset ($ record [$ table_idx ])) $ new_record [$ table_idx ] = intval ($ record [$ table_idx ]);
173173
174174 if (is_array ($ record )) {
175- foreach ($ this ->formDef ['tabs ' ][$ tab ]['fields ' ] as $ key => $ field ) {
176- switch ($ field ['datatype ' ]) {
175+ foreach ($ this ->formDef ['tabs ' ][$ tab ]['fields ' ] as $ key => $ field ) {
176+
177+ //* Apply filter to record value.
178+ if (isset ($ field ['filters ' ]) && is_array ($ field ['filters ' ])) {
179+ $ record [$ key ] = $ this ->filterField ($ key , (isset ($ record [$ key ]))?$ record [$ key ]:'' , $ field ['filters ' ], 'SHOW ' );
180+ }
181+
182+ switch ($ field ['datatype ' ]) {
177183 case 'VARCHAR ' :
178184 $ new_record [$ key ] = $ record [$ key ];
179185 break ;
@@ -619,8 +625,16 @@ function encode($record,$tab,$dbencode = true) {
619625
620626 if (is_array ($ record )) {
621627 foreach ($ this ->formDef ['tabs ' ][$ tab ]['fields ' ] as $ key => $ field ) {
622-
623- if (isset ($ field ['validators ' ]) && is_array ($ field ['validators ' ])) $ this ->validateField ($ key , (isset ($ record [$ key ]))?$ record [$ key ]:'' , $ field ['validators ' ]);
628+
629+ //* Apply filter to record value
630+ if (isset ($ field ['filters ' ]) && is_array ($ field ['filters ' ])) {
631+ $ record [$ key ] = $ this ->filterField ($ key , (isset ($ record [$ key ]))?$ record [$ key ]:'' , $ field ['filters ' ], 'SAVE ' );
632+ }
633+
634+ //* Validate record value
635+ if (isset ($ field ['validators ' ]) && is_array ($ field ['validators ' ])) {
636+ $ this ->validateField ($ key , (isset ($ record [$ key ]))?$ record [$ key ]:'' , $ field ['validators ' ]);
637+ }
624638
625639 switch ($ field ['datatype ' ]) {
626640 case 'VARCHAR ' :
@@ -704,6 +718,42 @@ function encode($record,$tab,$dbencode = true) {
704718 }
705719 return $ new_record ;
706720 }
721+
722+ /**
723+ * process the filters for a given field.
724+ *
725+ * @param field_name = Name of the field
726+ * @param field_value = value of the field
727+ * @param filters = Array of filters
728+ * @param filter_event = 'SAVE'or 'SHOW'
729+ * @return record
730+ */
731+
732+ function filterField ($ field_name , $ field_value , $ filters , $ filter_event ) {
733+
734+ global $ app ;
735+
736+ $ returnval = '' ;
737+
738+ //* Loop trough all filters
739+ foreach ($ filters as $ filter ) {
740+ if ($ filter ['event ' ] == $ filter_event ) {
741+ switch ($ filter ['type ' ]) {
742+ case 'TOLOWER ' :
743+ $ returnval = strtolower ($ field_value );
744+ break ;
745+ case 'TOUPPER ' :
746+ $ returnval = strtoupper ($ field_value );
747+ break ;
748+ default :
749+ $ this ->errorMessage .= "Unknown Filter: " .$ filter ['type ' ];
750+ break ;
751+ }
752+ }
753+ }
754+
755+ return $ returnval ;
756+ }
707757
708758 /**
709759 * process the validators for a given field.
0 commit comments