From d370bbc3d3550bb5c6015215c9af48a812e240e9 Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Fri, 8 Jun 2012 09:43:10 +0000 Subject: [PATCH] Implemented: FS#2280 - Extend the tform library to apply filters on form values --- interface/lib/classes/tform.inc.php | 58 +++++++++++++++++-- interface/web/mail/form/mail_domain.tform.php | 3 + 2 files changed, 57 insertions(+), 4 deletions(-) diff --git a/interface/lib/classes/tform.inc.php b/interface/lib/classes/tform.inc.php index dde9052a9..2690c8126 100644 --- a/interface/lib/classes/tform.inc.php +++ b/interface/lib/classes/tform.inc.php @@ -172,8 +172,14 @@ class tform { 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 @@ class tform { 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': @@ -704,6 +718,42 @@ class tform { } 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 = ''; + + //* 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; + default: + $this->errorMessage .= "Unknown Filter: ".$filter['type']; + break; + } + } + } + + return $returnval; + } /** * process the validators for a given field. diff --git a/interface/web/mail/form/mail_domain.tform.php b/interface/web/mail/form/mail_domain.tform.php index fd0c28794..9396b814b 100644 --- a/interface/web/mail/form/mail_domain.tform.php +++ b/interface/web/mail/form/mail_domain.tform.php @@ -77,6 +77,9 @@ $form["tabs"]['domain'] = array ( 'domain' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'TEXT', + 'filters' => array ( 0 => array ( 'type' => 'TOLOWER', + 'event'=> 'SAVE'), + ), 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'domain_error_empty'), 1 => array ( 'type' => 'UNIQUE', -- GitLab