From 38032e68c17026b5c4ab63e62ee6f931a54c3ec0 Mon Sep 17 00:00:00 2001 From: alzalabany Date: Thu, 30 Jan 2014 06:02:26 +0200 Subject: [PATCH 1/3] using form_validation->set_data, and .. other than hacking $_POST use native form_validation->set_data($data); and added 2nd param for function to only apply rules for submited data (useful when updating row, as u can update user.middle_name without having to submit all other required fields for example). --- core/MY_Model.php | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/core/MY_Model.php b/core/MY_Model.php index 34cb9fe..94e462e 100644 --- a/core/MY_Model.php +++ b/core/MY_Model.php @@ -801,7 +801,7 @@ public function trigger($event, $data = FALSE, $last = TRUE) /** * Run validation on the passed data */ - public function validate($data) + public function validate($data,$partial=null) { if($this->skip_validation) { @@ -810,16 +810,22 @@ public function validate($data) if(!empty($this->validate)) { - foreach($data as $key => $val) - { - $_POST[$key] = $val; - } - + $this->load->library('form_validation'); + $this->form_validation->reset_validation(); + $this->form_validation->set_data($data); #we are not using $_post hacking.. if(is_array($this->validate)) { - $this->form_validation->set_rules($this->validate); + + $config=[]; + if(!$partial)$config = $this->validate;#every rule ablies + else foreach ($this->validate as $v)if (isset($data[$v['field']]))$config[] = $v;#validate submited forms only + + if (empty($config))return $data;#no validation rules for this $data + + + $this->form_validation->set_rules($config); if ($this->form_validation->run() === TRUE) { @@ -890,4 +896,4 @@ protected function _return_type($multi = FALSE) $method = ($multi) ? 'result' : 'row'; return $this->_temporary_return_type == 'array' ? $method . '_array' : $method; } -} \ No newline at end of file +} From 32d8d160ed4aa1f2231b95a2651504505bd2b996 Mon Sep 17 00:00:00 2001 From: alzalabany Date: Thu, 30 Jan 2014 06:26:55 +0200 Subject: [PATCH 2/3] fixed typo ! --- core/MY_Model.php | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/core/MY_Model.php b/core/MY_Model.php index 94e462e..26a2a04 100644 --- a/core/MY_Model.php +++ b/core/MY_Model.php @@ -813,19 +813,23 @@ public function validate($data,$partial=null) $this->load->library('form_validation'); $this->form_validation->reset_validation(); - $this->form_validation->set_data($data); #we are not using $_post hacking.. + $this->form_validation->set_data($data); #we are not using $_post hacking.. if(is_array($this->validate)) { $config=[]; - if(!$partial)$config = $this->validate;#every rule ablies - else foreach ($this->validate as $v)if (isset($data[$v['field']]))$config[] = $v;#validate submited forms only - - if (empty($config))return $data;#no validation rules for this $data + + if(!$partial){ + $config = $this->validate;#every rule ablies + }else{ + foreach ($this->validate as $v)if (isset($data[$v['field']]))$config[] = $v;#validate submited forms only + } + + if (empty($config))return $data;#no validation rules for this $data - $this->form_validation->set_rules($config); + $this->form_validation->set_rules($config); if ($this->form_validation->run() === TRUE) { From 52489f9c92994c3c42c92a62cd93ebacf7d3192d Mon Sep 17 00:00:00 2001 From: alzalabany Date: Thu, 6 Feb 2014 04:53:27 +0200 Subject: [PATCH 3/3] Update MY_Model.php --- core/MY_Model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/MY_Model.php b/core/MY_Model.php index 26a2a04..b4d1c17 100644 --- a/core/MY_Model.php +++ b/core/MY_Model.php @@ -818,7 +818,7 @@ public function validate($data,$partial=null) if(is_array($this->validate)) { - $config=[]; + $config=array(); if(!$partial){ $config = $this->validate;#every rule ablies