Skip to content

Commit d370bbc

Browse files
committed
Implemented: FS#2280 - Extend the tform library to apply filters on form values
1 parent 02384bd commit d370bbc

File tree

2 files changed

+57
-4
lines changed

2 files changed

+57
-4
lines changed

interface/lib/classes/tform.inc.php

Lines changed: 54 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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.

interface/web/mail/form/mail_domain.tform.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@
7777
'domain' => array (
7878
'datatype' => 'VARCHAR',
7979
'formtype' => 'TEXT',
80+
'filters' => array ( 0 => array ( 'type' => 'TOLOWER',
81+
'event'=> 'SAVE'),
82+
),
8083
'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
8184
'errmsg'=> 'domain_error_empty'),
8285
1 => array ( 'type' => 'UNIQUE',

0 commit comments

Comments
 (0)