Test Failed
Push — 1.0.0-dev ( c7a39c...6c2ad2 )
by nguereza
03:29
created
core/libraries/FormValidation.php 1 patch
Indentation   +875 added lines, -875 removed lines patch added patch discarded remove patch
@@ -1,917 +1,917 @@
 block discarded – undo
1 1
 <?php
2
-    defined('ROOT_PATH') || exit('Access denied');
3
-    /**
4
-     * TNH Framework
5
-     *
6
-     * A simple PHP framework using HMVC architecture
7
-     *
8
-     * This content is released under the GNU GPL License (GPL)
9
-     *
10
-     * Copyright (C) 2017 Tony NGUEREZA
11
-     *
12
-     * This program is free software; you can redistribute it and/or
13
-     * modify it under the terms of the GNU General Public License
14
-     * as published by the Free Software Foundation; either version 3
15
-     * of the License, or (at your option) any later version.
16
-     *
17
-     * This program is distributed in the hope that it will be useful,
18
-     * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
-     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20
-     * GNU General Public License for more details.
21
-     *
22
-     * You should have received a copy of the GNU General Public License
23
-     * along with this program; if not, write to the Free Software
24
-     * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
25
-    */
26
-
27
-
28
-     class FormValidation{
2
+	defined('ROOT_PATH') || exit('Access denied');
3
+	/**
4
+	 * TNH Framework
5
+	 *
6
+	 * A simple PHP framework using HMVC architecture
7
+	 *
8
+	 * This content is released under the GNU GPL License (GPL)
9
+	 *
10
+	 * Copyright (C) 2017 Tony NGUEREZA
11
+	 *
12
+	 * This program is free software; you can redistribute it and/or
13
+	 * modify it under the terms of the GNU General Public License
14
+	 * as published by the Free Software Foundation; either version 3
15
+	 * of the License, or (at your option) any later version.
16
+	 *
17
+	 * This program is distributed in the hope that it will be useful,
18
+	 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
+	 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20
+	 * GNU General Public License for more details.
21
+	 *
22
+	 * You should have received a copy of the GNU General Public License
23
+	 * along with this program; if not, write to the Free Software
24
+	 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
25
+	 */
26
+
27
+
28
+	 class FormValidation{
29 29
 		 
30
-        /**
31
-         * The form validation status
32
-         * @var boolean
33
-         */
34
-        protected $_success  = false;
35
-
36
-        /**
37
-         * The list of errors messages
38
-         * @var array
39
-         */
40
-        protected $_errorsMessages = array();
30
+		/**
31
+		 * The form validation status
32
+		 * @var boolean
33
+		 */
34
+		protected $_success  = false;
35
+
36
+		/**
37
+		 * The list of errors messages
38
+		 * @var array
39
+		 */
40
+		protected $_errorsMessages = array();
41 41
         
42
-        // Array of rule sets, fieldName => PIPE seperated ruleString
43
-        protected $_rules             = array();
42
+		// Array of rule sets, fieldName => PIPE seperated ruleString
43
+		protected $_rules             = array();
44 44
         
45
-        // Array of errors, niceName => Error Message
46
-        protected $_errors             = array();
45
+		// Array of errors, niceName => Error Message
46
+		protected $_errors             = array();
47 47
         
48
-        // Array of post Key => Nice name labels
49
-        protected $_labels          = array();
48
+		// Array of post Key => Nice name labels
49
+		protected $_labels          = array();
50 50
         
51
-        /**
52
-         * The errors delimiters
53
-         * @var array
54
-         */
55
-        protected $_allErrorsDelimiter   = array('<div class="error">', '</div>');
56
-
57
-        /**
58
-         * The each error delimiter
59
-         * @var array
60
-         */
61
-        protected $_eachErrorDelimiter   = array('<p class="error">', '</p>');
51
+		/**
52
+		 * The errors delimiters
53
+		 * @var array
54
+		 */
55
+		protected $_allErrorsDelimiter   = array('<div class="error">', '</div>');
56
+
57
+		/**
58
+		 * The each error delimiter
59
+		 * @var array
60
+		 */
61
+		protected $_eachErrorDelimiter   = array('<p class="error">', '</p>');
62 62
         
63 63
 		/**
64
-         * Indicated if need force the validation to be failed
65
-         * @var boolean
66
-         */
67
-        protected $_forceFail            = false;
68
-
69
-        /**
70
-         * The list of the error messages overrides by the original
71
-         * @var array
72
-         */
73
-        protected $_errorPhraseOverrides = array();
74
-
75
-        /**
76
-         * The logger instance
77
-         * @var Log
78
-         */
79
-        private $logger;
80
-
81
-        /**
82
-         * The data to be validated, the default is to use $_POST
83
-         * @var array
84
-         */
85
-        private $data = array();
86
-
87
-        /**
88
-         * Whether to check the CSRF. This attribute is just a way to allow custom change of the 
64
+		 * Indicated if need force the validation to be failed
65
+		 * @var boolean
66
+		 */
67
+		protected $_forceFail            = false;
68
+
69
+		/**
70
+		 * The list of the error messages overrides by the original
71
+		 * @var array
72
+		 */
73
+		protected $_errorPhraseOverrides = array();
74
+
75
+		/**
76
+		 * The logger instance
77
+		 * @var Log
78
+		 */
79
+		private $logger;
80
+
81
+		/**
82
+		 * The data to be validated, the default is to use $_POST
83
+		 * @var array
84
+		 */
85
+		private $data = array();
86
+
87
+		/**
88
+		 * Whether to check the CSRF. This attribute is just a way to allow custom change of the 
89 89
 		 * CSRF global configuration
90 90
 		 *
91
-         * @var boolean
92
-         */
93
-        public $enableCsrfCheck = false;
94
-
95
-        /**
96
-         * Set all errors and rule sets empty, and sets success to false.
97
-         *
98
-         * @return void
99
-         */
100
-        public function __construct() {
101
-            $this->logger =& class_loader('Log', 'classes');
102
-            $this->logger->setLogger('Library::FormValidation');
91
+		 * @var boolean
92
+		 */
93
+		public $enableCsrfCheck = false;
94
+
95
+		/**
96
+		 * Set all errors and rule sets empty, and sets success to false.
97
+		 *
98
+		 * @return void
99
+		 */
100
+		public function __construct() {
101
+			$this->logger =& class_loader('Log', 'classes');
102
+			$this->logger->setLogger('Library::FormValidation');
103 103
            
104 104
 		   //Load form validation language message
105
-            Loader::lang('form_validation');
106
-            $obj = & get_instance();
107
-            $this->_errorsMessages  = array(
108
-                        'required'         => $obj->lang->get('fv_required'),
109
-                        'min_length'       => $obj->lang->get('fv_min_length'),
110
-                        'max_length'       => $obj->lang->get('fv_max_length'),
111
-                        'exact_length'     => $obj->lang->get('fv_exact_length'),
112
-                        'less_than'        => $obj->lang->get('fv_less_than'),
113
-                        'greater_than'     => $obj->lang->get('fv_greater_than'),
114
-                        'matches'          => $obj->lang->get('fv_matches'),
115
-                        'valid_email'      => $obj->lang->get('fv_valid_email'),
116
-                        'not_equal'        => array(
117
-                                                'post:key' => $obj->lang->get('fv_not_equal_post_key'),
118
-                                                'string'   => $obj->lang->get('fv_not_equal_string')
119
-                                            ),
120
-                        'depends'          => $obj->lang->get('fv_depends'),
121
-                        'is_unique'        => $obj->lang->get('fv_is_unique'),
122
-                        'is_unique_update' => $obj->lang->get('fv_is_unique_update'),
123
-                        'exists'           => $obj->lang->get('fv_exists'),
124
-                        'regex'            => $obj->lang->get('fv_regex'),
125
-                        'in_list'          => $obj->lang->get('fv_in_list'),
126
-                        'numeric'          => $obj->lang->get('fv_numeric'),
127
-                        'callback'         => $obj->lang->get('fv_callback'),
128
-                    );
129
-            $this->_resetValidation();
130
-            $this->setData($obj->request->post(null));
131
-        }
132
-
133
-        /**
134
-         * Reset the form validation instance
135
-         */
136
-        protected function _resetValidation() {
137
-            $this->_rules                = array();
138
-            $this->_labels               = array();
139
-            $this->_errorPhraseOverrides = array();
140
-            $this->_errors               = array();
141
-            $this->_success              = false;
142
-            $this->_forceFail            = false;
143
-            $this->data                  = array();
105
+			Loader::lang('form_validation');
106
+			$obj = & get_instance();
107
+			$this->_errorsMessages  = array(
108
+						'required'         => $obj->lang->get('fv_required'),
109
+						'min_length'       => $obj->lang->get('fv_min_length'),
110
+						'max_length'       => $obj->lang->get('fv_max_length'),
111
+						'exact_length'     => $obj->lang->get('fv_exact_length'),
112
+						'less_than'        => $obj->lang->get('fv_less_than'),
113
+						'greater_than'     => $obj->lang->get('fv_greater_than'),
114
+						'matches'          => $obj->lang->get('fv_matches'),
115
+						'valid_email'      => $obj->lang->get('fv_valid_email'),
116
+						'not_equal'        => array(
117
+												'post:key' => $obj->lang->get('fv_not_equal_post_key'),
118
+												'string'   => $obj->lang->get('fv_not_equal_string')
119
+											),
120
+						'depends'          => $obj->lang->get('fv_depends'),
121
+						'is_unique'        => $obj->lang->get('fv_is_unique'),
122
+						'is_unique_update' => $obj->lang->get('fv_is_unique_update'),
123
+						'exists'           => $obj->lang->get('fv_exists'),
124
+						'regex'            => $obj->lang->get('fv_regex'),
125
+						'in_list'          => $obj->lang->get('fv_in_list'),
126
+						'numeric'          => $obj->lang->get('fv_numeric'),
127
+						'callback'         => $obj->lang->get('fv_callback'),
128
+					);
129
+			$this->_resetValidation();
130
+			$this->setData($obj->request->post(null));
131
+		}
132
+
133
+		/**
134
+		 * Reset the form validation instance
135
+		 */
136
+		protected function _resetValidation() {
137
+			$this->_rules                = array();
138
+			$this->_labels               = array();
139
+			$this->_errorPhraseOverrides = array();
140
+			$this->_errors               = array();
141
+			$this->_success              = false;
142
+			$this->_forceFail            = false;
143
+			$this->data                  = array();
144 144
 			$this->enableCsrfCheck       = false;
145
-        }
145
+		}
146 146
 
147
-        /**
148
-         * Set the form validation data
149
-         * @param array $data the values to be validated
147
+		/**
148
+		 * Set the form validation data
149
+		 * @param array $data the values to be validated
150 150
 		 *
151
-         * @return FormValidation Current instance of object.
152
-         */
153
-        public function setData(array $data){
154
-            $this->logger->debug('Setting the form validation data, the values are: ' . stringfy_vars($data));
155
-            $this->data = $data;
151
+		 * @return FormValidation Current instance of object.
152
+		 */
153
+		public function setData(array $data){
154
+			$this->logger->debug('Setting the form validation data, the values are: ' . stringfy_vars($data));
155
+			$this->data = $data;
156 156
 			return $this;
157
-        }
158
-
159
-        /**
160
-         * Get the form validation data
161
-         * @return array the form validation data to be validated
162
-         */
163
-        public function getData(){
164
-            return $this->data;
165
-        }
166
-
167
-		/**
168
-		* Get the validation function name to validate a rule
169
-		*
170
-		* @return string the function name
171
-		*/
172
-        protected function _toCallCase($funcName, $prefix='_validate') {
173
-            $funcName = strtolower($funcName);
174
-            $finalFuncName = $prefix;
175
-            foreach (explode('_', $funcName) as $funcNamePart) {
176
-                $finalFuncName .= strtoupper($funcNamePart[0]) . substr($funcNamePart, 1);
177
-            }
178
-            return $finalFuncName;
179
-        }
180
-
181
-        /**
182
-         * Returns the boolean of the data status success. It goes by the simple
183
-         *
184
-         * @return boolean Whether or not the data validation has succeeded
185
-         */
186
-        public function isSuccess() {
187
-            return $this->_success;
188
-        }
189
-
190
-        /**
191
-         * Checks if the request method is POST or the Data to be validated is set
192
-         *
193
-         * @return boolean Whether or not the form has been submitted or the data is available for validation.
194
-         */
195
-        public function canDoValidation() {
196
-            return get_instance()->request->method() === 'POST' || ! empty($this->data);
197
-        }
198
-
199
-        /**
200
-         * Runs _run once POST data has been submitted or data is set manually.
201
-         *
202
-         * @return boolean
203
-         */
204
-        public function run() {
205
-            if ($this->canDoValidation()) {
206
-                $this->logger->info('The data to validate are listed below: ' . stringfy_vars($this->getData()));
207
-                $this->_run();
208
-            }
209
-            return $this->isSuccess();
210
-        }
211
-
212
-        /**
213
-         * Takes and trims each data, if it has any rules, we parse the rule string and run
214
-         * each rule against the data value. Sets _success to true if there are no errors
215
-         * afterwards.
216
-         */
217
-        protected function _run() {
218
-            if(get_instance()->request->method() == 'POST' || $this->enableCsrfCheck){
219
-                $this->logger->debug('Check if CSRF is enabled in configuration');
220
-                //first check for CSRF
221
-                if( get_config('csrf_enable', false) || $this->enableCsrfCheck){
222
-                     $this->logger->info('Check the CSRF value if is valid');
223
-                    if(! Security::validateCSRF()){
224
-                        show_error('Invalide data, Cross Site Request Forgery do his job, the data to validate is corrupted.');
225
-                    }
226
-                }
227
-                else{
228
-                    $this->logger->info('CSRF is not enabled in configuration or not set manully, no need to check it');
229
-                }
230
-            }
231
-            /////////////////////////////////////////////
232
-            $this->_forceFail = false;
233
-
234
-            foreach ($this->getData() as $inputName => $inputVal) {
235
-    			if(is_array($this->data[$inputName])){
236
-    				$this->data[$inputName] = array_map('trim', $this->data[$inputName]);
237
-    			}
238
-    			else{
239
-    				$this->data[$inputName] = trim($this->data[$inputName]);
240
-    			}
241
-
242
-                if (array_key_exists($inputName, $this->_rules)) {
243
-                    foreach ($this->_parseRuleString($this->_rules[$inputName]) as $eachRule) {
244
-                        $this->_validateRule($inputName, $this->data[$inputName], $eachRule);
245
-                    }
246
-                }
247
-            }
248
-
249
-            if (empty($this->_errors) && $this->_forceFail === false) {
250
-                $this->_success = true;
251
-            }
252
-        }
253
-
254
-        /**
255
-         * Adds a rule to a form data validation field.
256
-         *
257
-         * @param string $inputField Name of the field or the data key to add a rule to
258
-         * @param string $ruleSets PIPE seperated string of rules
259
-		 *
260
-         * @return FormValidation Current instance of object.
261
-         */
262
-        public function setRule($inputField, $inputLabel, $ruleSets) {
263
-            $this->_rules[$inputField] = $ruleSets;
264
-            $this->_labels[$inputField] = $inputLabel;
265
-            $this->logger->info('Set the field rule: name [' .$inputField. '], label [' .$inputLabel. '], rules [' .$ruleSets. ']');
266
-            return $this;
267
-        }
268
-
269
-        /**
270
-         * Takes an array of rules and uses setRule() to set them, accepts an array
271
-         * of rule names rather than a pipe-delimited string as well.
272
-         * @param array $ruleSets
157
+		}
158
+
159
+		/**
160
+		 * Get the form validation data
161
+		 * @return array the form validation data to be validated
162
+		 */
163
+		public function getData(){
164
+			return $this->data;
165
+		}
166
+
167
+		/**
168
+		 * Get the validation function name to validate a rule
169
+		 *
170
+		 * @return string the function name
171
+		 */
172
+		protected function _toCallCase($funcName, $prefix='_validate') {
173
+			$funcName = strtolower($funcName);
174
+			$finalFuncName = $prefix;
175
+			foreach (explode('_', $funcName) as $funcNamePart) {
176
+				$finalFuncName .= strtoupper($funcNamePart[0]) . substr($funcNamePart, 1);
177
+			}
178
+			return $finalFuncName;
179
+		}
180
+
181
+		/**
182
+		 * Returns the boolean of the data status success. It goes by the simple
183
+		 *
184
+		 * @return boolean Whether or not the data validation has succeeded
185
+		 */
186
+		public function isSuccess() {
187
+			return $this->_success;
188
+		}
189
+
190
+		/**
191
+		 * Checks if the request method is POST or the Data to be validated is set
192
+		 *
193
+		 * @return boolean Whether or not the form has been submitted or the data is available for validation.
194
+		 */
195
+		public function canDoValidation() {
196
+			return get_instance()->request->method() === 'POST' || ! empty($this->data);
197
+		}
198
+
199
+		/**
200
+		 * Runs _run once POST data has been submitted or data is set manually.
201
+		 *
202
+		 * @return boolean
203
+		 */
204
+		public function run() {
205
+			if ($this->canDoValidation()) {
206
+				$this->logger->info('The data to validate are listed below: ' . stringfy_vars($this->getData()));
207
+				$this->_run();
208
+			}
209
+			return $this->isSuccess();
210
+		}
211
+
212
+		/**
213
+		 * Takes and trims each data, if it has any rules, we parse the rule string and run
214
+		 * each rule against the data value. Sets _success to true if there are no errors
215
+		 * afterwards.
216
+		 */
217
+		protected function _run() {
218
+			if(get_instance()->request->method() == 'POST' || $this->enableCsrfCheck){
219
+				$this->logger->debug('Check if CSRF is enabled in configuration');
220
+				//first check for CSRF
221
+				if( get_config('csrf_enable', false) || $this->enableCsrfCheck){
222
+					 $this->logger->info('Check the CSRF value if is valid');
223
+					if(! Security::validateCSRF()){
224
+						show_error('Invalide data, Cross Site Request Forgery do his job, the data to validate is corrupted.');
225
+					}
226
+				}
227
+				else{
228
+					$this->logger->info('CSRF is not enabled in configuration or not set manully, no need to check it');
229
+				}
230
+			}
231
+			/////////////////////////////////////////////
232
+			$this->_forceFail = false;
233
+
234
+			foreach ($this->getData() as $inputName => $inputVal) {
235
+				if(is_array($this->data[$inputName])){
236
+					$this->data[$inputName] = array_map('trim', $this->data[$inputName]);
237
+				}
238
+				else{
239
+					$this->data[$inputName] = trim($this->data[$inputName]);
240
+				}
241
+
242
+				if (array_key_exists($inputName, $this->_rules)) {
243
+					foreach ($this->_parseRuleString($this->_rules[$inputName]) as $eachRule) {
244
+						$this->_validateRule($inputName, $this->data[$inputName], $eachRule);
245
+					}
246
+				}
247
+			}
248
+
249
+			if (empty($this->_errors) && $this->_forceFail === false) {
250
+				$this->_success = true;
251
+			}
252
+		}
253
+
254
+		/**
255
+		 * Adds a rule to a form data validation field.
256
+		 *
257
+		 * @param string $inputField Name of the field or the data key to add a rule to
258
+		 * @param string $ruleSets PIPE seperated string of rules
273 259
 		 *
274 260
 		 * @return FormValidation Current instance of object.
275
-         */
276
-        public function setRules(array $ruleSets) {
277
-            foreach ($ruleSets as $ruleSet) {
278
-                $pipeDelimitedRules = null;
279
-                if (is_array($ruleSet['rules'])) {
280
-                    $pipeDelimitedRules = implode('|', $ruleSet['rules']);
281
-                } else {
282
-                    $pipeDelimitedRules = $ruleSet['rules'];
283
-                }
284
-                $this->setRule($ruleSet['name'], $ruleSet['label'], $pipeDelimitedRules);
285
-            }
286
-            return $this;
287
-        }
288
-
289
-        /**
290
-         * This method creates the global errors delimiter, each argument occurs once, at the beginning, and
291
-         * end of the errors block respectively.
292
-         *
293
-         * @param string $start Before block of errors gets displayed, HTML allowed.
294
-         * @param string $end After the block of errors gets displayed, HTML allowed.
295
-         *
261
+		 */
262
+		public function setRule($inputField, $inputLabel, $ruleSets) {
263
+			$this->_rules[$inputField] = $ruleSets;
264
+			$this->_labels[$inputField] = $inputLabel;
265
+			$this->logger->info('Set the field rule: name [' .$inputField. '], label [' .$inputLabel. '], rules [' .$ruleSets. ']');
266
+			return $this;
267
+		}
268
+
269
+		/**
270
+		 * Takes an array of rules and uses setRule() to set them, accepts an array
271
+		 * of rule names rather than a pipe-delimited string as well.
272
+		 * @param array $ruleSets
273
+		 *
296 274
 		 * @return FormValidation Current instance of object.
297
-         */
298
-        public function setErrorsDelimiter($start, $end) {
299
-            $this->_allErrorsDelimiter[0] = $start;
300
-            $this->_allErrorsDelimiter[1] = $end;
301
-            return $this;
302
-        }
303
-
304
-        /**
305
-         * This is the individual error delimiter, each argument occurs once before and after
306
-         * each individual error listed.
307
-         *
308
-         * @param string $start Displayed before each error.
309
-         * @param string $end Displayed after each error.
310
-         * 
275
+		 */
276
+		public function setRules(array $ruleSets) {
277
+			foreach ($ruleSets as $ruleSet) {
278
+				$pipeDelimitedRules = null;
279
+				if (is_array($ruleSet['rules'])) {
280
+					$pipeDelimitedRules = implode('|', $ruleSet['rules']);
281
+				} else {
282
+					$pipeDelimitedRules = $ruleSet['rules'];
283
+				}
284
+				$this->setRule($ruleSet['name'], $ruleSet['label'], $pipeDelimitedRules);
285
+			}
286
+			return $this;
287
+		}
288
+
289
+		/**
290
+		 * This method creates the global errors delimiter, each argument occurs once, at the beginning, and
291
+		 * end of the errors block respectively.
292
+		 *
293
+		 * @param string $start Before block of errors gets displayed, HTML allowed.
294
+		 * @param string $end After the block of errors gets displayed, HTML allowed.
295
+		 *
311 296
 		 * @return FormValidation Current instance of object.
312
-         */
313
-        public function setErrorDelimiter($start, $end) {
314
-            $this->_eachErrorDelimiter[0] = $start;
315
-            $this->_eachErrorDelimiter[1] = $end;
316
-            return $this;
317
-        }
318
-
319
-		/**
320
-		* Get the each errors delimiters
321
-		*
322
-		* @return array
323
-		*/
324
-    	public function getErrorDelimiter() {
325
-            return $this->_eachErrorDelimiter;
326
-        }
327
-
328
-		/**
329
-		* Get the all errors delimiters
330
-		*
331
-		* @return array
332
-		*/
333
-    	public function getErrorsDelimiter() {
334
-            return $this->_allErrorsDelimiter;
335
-        }
336
-
337
-        /**
338
-         * This sets a custom error message that can override the default error phrase provided
339
-         * by FormValidation, it can be used in the format of setMessage('rule', 'error phrase')
340
-         * which will globally change the error phrase of that rule, or in the format of:
341
-         * setMessage('rule', 'fieldname', 'error phrase') - which will only change the error phrase for
342
-         * that rule, applied on that field.
343
-         *
344
-         * @return boolean True on success, false on failure.
345
-         */
346
-        public function setMessage() {
347
-            $numArgs = func_num_args();
348
-            switch ($numArgs) {
349
-                default:
350
-                    return false;
351
-                // A global rule error message
352
-                case 2:
353
-                    foreach ($this->post(null) as $key => $val) {
354
-                        $this->_errorPhraseOverrides[$key][func_get_arg(0)] = func_get_arg(1);
355
-                    }
356
-                    break;
357
-                // Field specific rule error message
358
-                case 3:
359
-                    $this->_errorPhraseOverrides[func_get_arg(1)][func_get_arg(0)] = func_get_arg(2);
360
-                    break;
361
-            }
362
-            return true;
363
-        }
364
-
365
-        /**
366
-         * Adds a custom error message in the errorSet array, that will
367
-         * forcibly display it.
368
-         *
369
-         * @param string $inputName The form input name or data key
370
-         * @param string $errorMessage Error to display
371
-		 *
372
-         * @return formValidation Current instance of the object
373
-         */
374
-        public function setCustomError($inputName, $errorMessage) {
375
-            $errorMessage = str_replace('%1', $this->_labels[$inputName], $errorMessage);
376
-            $this->_errors[$inputName] = $errorMessage;
377
-            return $this;
378
-        }
379
-
380
-        /**
381
-         * Allows for an accesor to any/all post values, if a value of null is passed as the key, it
382
-         * will recursively find all keys/values of the $_POST array or data array. It also automatically trims
383
-         * all values.
384
-         *
385
-         * @param string $key Key of $this->data to be found, pass null for all Key => Val pairs.
386
-         * @param boolean $trim Defaults to true, trims all $this->data values.
387
-         * @return string|array Array of post or data values if null is passed as key, string if only one key is desired.
388
-         */
389
-        public function post($key = null, $trim = true) {
390
-            $returnValue = null;
391
-            if (is_null($key)) {
392
-                $returnValue = array();
393
-                foreach ($this->getData()  as $key => $val) {
394
-                    $returnValue[$key] = $this->post($key, $trim);
395
-                }
396
-            } else {
397
-                $returnValue = (array_key_exists($key, $this->getData())) ? (($trim) ? trim($this->data[$key]) : $this->data[$key]) : null;
398
-            }
399
-            return $returnValue;
400
-        }
401
-
402
-        /**
403
-         * Gets all errors from errorSet and displays them, can be echo out from the
404
-         * function or just returned.
405
-         *
406
-         * @param boolean $limit number of error to display or return
407
-         * @param boolean $echo Whether or not the values are to be returned or displayed
408
-		 *
409
-         * @return string Errors formatted for output
410
-         */
411
-        public function displayErrors($limit = null, $echo = true) {
412
-            list($errorsStart, $errorsEnd) = $this->_allErrorsDelimiter;
413
-            list($errorStart, $errorEnd) = $this->_eachErrorDelimiter;
414
-            $errorOutput = $errorsStart;
415
-    		$i = 0;
416
-            if (!empty($this->_errors)) {
417
-                foreach ($this->_errors as $fieldName => $error) {
418
-        	    	if ($i === $limit) { 
419
-                        break; 
420
-                    }
421
-                    $errorOutput .= $errorStart;
422
-                    $errorOutput .= $error;
423
-                    $errorOutput .= $errorEnd;
424
-                    $i++;
425
-                }
426
-            }
427
-            $errorOutput .= $errorsEnd;
428
-            echo ($echo) ? $errorOutput : '';
429
-            return (! $echo) ? $errorOutput : null;
430
-        }
431
-
432
-        /**
433
-         * Returns raw array of errors in no format instead of displaying them
434
-         * formatted.
435
-         *
436
-         * @return array
437
-         */
438
-        public function returnErrors() {
439
-            return $this->_errors;
440
-        }
441
-
442
-        /**
443
-         * Breaks up a PIPE seperated string of rules, and puts them into an array.
444
-         *
445
-         * @param string $ruleString String to be parsed.
446
-		 *
447
-         * @return array Array of each value in original string.
448
-         */
449
-        protected function _parseRuleString($ruleString) {
450
-            $ruleSets = array();
451
-            /*
297
+		 */
298
+		public function setErrorsDelimiter($start, $end) {
299
+			$this->_allErrorsDelimiter[0] = $start;
300
+			$this->_allErrorsDelimiter[1] = $end;
301
+			return $this;
302
+		}
303
+
304
+		/**
305
+		 * This is the individual error delimiter, each argument occurs once before and after
306
+		 * each individual error listed.
307
+		 *
308
+		 * @param string $start Displayed before each error.
309
+		 * @param string $end Displayed after each error.
310
+		 * 
311
+		 * @return FormValidation Current instance of object.
312
+		 */
313
+		public function setErrorDelimiter($start, $end) {
314
+			$this->_eachErrorDelimiter[0] = $start;
315
+			$this->_eachErrorDelimiter[1] = $end;
316
+			return $this;
317
+		}
318
+
319
+		/**
320
+		 * Get the each errors delimiters
321
+		 *
322
+		 * @return array
323
+		 */
324
+		public function getErrorDelimiter() {
325
+			return $this->_eachErrorDelimiter;
326
+		}
327
+
328
+		/**
329
+		 * Get the all errors delimiters
330
+		 *
331
+		 * @return array
332
+		 */
333
+		public function getErrorsDelimiter() {
334
+			return $this->_allErrorsDelimiter;
335
+		}
336
+
337
+		/**
338
+		 * This sets a custom error message that can override the default error phrase provided
339
+		 * by FormValidation, it can be used in the format of setMessage('rule', 'error phrase')
340
+		 * which will globally change the error phrase of that rule, or in the format of:
341
+		 * setMessage('rule', 'fieldname', 'error phrase') - which will only change the error phrase for
342
+		 * that rule, applied on that field.
343
+		 *
344
+		 * @return boolean True on success, false on failure.
345
+		 */
346
+		public function setMessage() {
347
+			$numArgs = func_num_args();
348
+			switch ($numArgs) {
349
+				default:
350
+					return false;
351
+				// A global rule error message
352
+				case 2:
353
+					foreach ($this->post(null) as $key => $val) {
354
+						$this->_errorPhraseOverrides[$key][func_get_arg(0)] = func_get_arg(1);
355
+					}
356
+					break;
357
+				// Field specific rule error message
358
+				case 3:
359
+					$this->_errorPhraseOverrides[func_get_arg(1)][func_get_arg(0)] = func_get_arg(2);
360
+					break;
361
+			}
362
+			return true;
363
+		}
364
+
365
+		/**
366
+		 * Adds a custom error message in the errorSet array, that will
367
+		 * forcibly display it.
368
+		 *
369
+		 * @param string $inputName The form input name or data key
370
+		 * @param string $errorMessage Error to display
371
+		 *
372
+		 * @return formValidation Current instance of the object
373
+		 */
374
+		public function setCustomError($inputName, $errorMessage) {
375
+			$errorMessage = str_replace('%1', $this->_labels[$inputName], $errorMessage);
376
+			$this->_errors[$inputName] = $errorMessage;
377
+			return $this;
378
+		}
379
+
380
+		/**
381
+		 * Allows for an accesor to any/all post values, if a value of null is passed as the key, it
382
+		 * will recursively find all keys/values of the $_POST array or data array. It also automatically trims
383
+		 * all values.
384
+		 *
385
+		 * @param string $key Key of $this->data to be found, pass null for all Key => Val pairs.
386
+		 * @param boolean $trim Defaults to true, trims all $this->data values.
387
+		 * @return string|array Array of post or data values if null is passed as key, string if only one key is desired.
388
+		 */
389
+		public function post($key = null, $trim = true) {
390
+			$returnValue = null;
391
+			if (is_null($key)) {
392
+				$returnValue = array();
393
+				foreach ($this->getData()  as $key => $val) {
394
+					$returnValue[$key] = $this->post($key, $trim);
395
+				}
396
+			} else {
397
+				$returnValue = (array_key_exists($key, $this->getData())) ? (($trim) ? trim($this->data[$key]) : $this->data[$key]) : null;
398
+			}
399
+			return $returnValue;
400
+		}
401
+
402
+		/**
403
+		 * Gets all errors from errorSet and displays them, can be echo out from the
404
+		 * function or just returned.
405
+		 *
406
+		 * @param boolean $limit number of error to display or return
407
+		 * @param boolean $echo Whether or not the values are to be returned or displayed
408
+		 *
409
+		 * @return string Errors formatted for output
410
+		 */
411
+		public function displayErrors($limit = null, $echo = true) {
412
+			list($errorsStart, $errorsEnd) = $this->_allErrorsDelimiter;
413
+			list($errorStart, $errorEnd) = $this->_eachErrorDelimiter;
414
+			$errorOutput = $errorsStart;
415
+			$i = 0;
416
+			if (!empty($this->_errors)) {
417
+				foreach ($this->_errors as $fieldName => $error) {
418
+					if ($i === $limit) { 
419
+						break; 
420
+					}
421
+					$errorOutput .= $errorStart;
422
+					$errorOutput .= $error;
423
+					$errorOutput .= $errorEnd;
424
+					$i++;
425
+				}
426
+			}
427
+			$errorOutput .= $errorsEnd;
428
+			echo ($echo) ? $errorOutput : '';
429
+			return (! $echo) ? $errorOutput : null;
430
+		}
431
+
432
+		/**
433
+		 * Returns raw array of errors in no format instead of displaying them
434
+		 * formatted.
435
+		 *
436
+		 * @return array
437
+		 */
438
+		public function returnErrors() {
439
+			return $this->_errors;
440
+		}
441
+
442
+		/**
443
+		 * Breaks up a PIPE seperated string of rules, and puts them into an array.
444
+		 *
445
+		 * @param string $ruleString String to be parsed.
446
+		 *
447
+		 * @return array Array of each value in original string.
448
+		 */
449
+		protected function _parseRuleString($ruleString) {
450
+			$ruleSets = array();
451
+			/*
452 452
             //////////////// hack for regex rule that can contain "|"
453 453
             */
454
-            if(strpos($ruleString, 'regex') !== false){
455
-                $regexRule = array();
456
-                $rule = '#regex\[\/(.*)\/([a-zA-Z0-9]?)\]#';
457
-                preg_match($rule, $ruleString, $regexRule);
458
-                $ruleStringTemp = preg_replace($rule, '', $ruleString);
459
-                 if(isset($regexRule[0]) && !empty($regexRule[0])){
460
-                     $ruleSets[] = $regexRule[0];
461
-                 }
462
-                 $ruleStringRegex = explode('|', $ruleStringTemp);
463
-                foreach ($ruleStringRegex as $rule) {
464
-                    $rule = trim($rule);
465
-                    if($rule){
466
-                        $ruleSets[] = $rule;
467
-                    }
468
-                }
454
+			if(strpos($ruleString, 'regex') !== false){
455
+				$regexRule = array();
456
+				$rule = '#regex\[\/(.*)\/([a-zA-Z0-9]?)\]#';
457
+				preg_match($rule, $ruleString, $regexRule);
458
+				$ruleStringTemp = preg_replace($rule, '', $ruleString);
459
+				 if(isset($regexRule[0]) && !empty($regexRule[0])){
460
+					 $ruleSets[] = $regexRule[0];
461
+				 }
462
+				 $ruleStringRegex = explode('|', $ruleStringTemp);
463
+				foreach ($ruleStringRegex as $rule) {
464
+					$rule = trim($rule);
465
+					if($rule){
466
+						$ruleSets[] = $rule;
467
+					}
468
+				}
469 469
                  
470
-            }
471
-            /***********************************/
472
-            else{
473
-                if (strpos($ruleString, '|') !== FALSE) {
474
-                    $ruleSets = explode('|', $ruleString);
475
-                } else {
476
-                    $ruleSets[] = $ruleString;
477
-                }
478
-             }
479
-            return $ruleSets;
480
-        }
481
-
482
-        /**
483
-         * Returns whether or not a field obtains the rule "required".
484
-         *
485
-         * @param string $fieldName Field to check if required.
486
-		 *
487
-         * @return boolean Whether or not the field is required.
488
-         */
489
-        protected function _fieldIsRequired($fieldName) {
490
-            $rules = $this->_parseRuleString($this->_rules[$fieldName]);
491
-            return (in_array('required', $rules));
492
-        }
493
-
494
-        /**
495
-         * Takes a data input name, it's value, and the rule it's being validated against (ex: max_length[16])
496
-         * and adds an error to the errorSet if it fails validation of the rule.
497
-         *
498
-         * @param string $inputName Name or key of the validation data
499
-         * @param string $inputVal Value of the validation data
500
-         * @param string $ruleName Rule to be validated against, including args (exact_length[5])
501
-         * @return void
502
-         */
503
-        protected function _validateRule($inputName, $inputVal, $ruleName) {
504
-            $this->logger->debug('Rule validation of field [' .$inputName. '], value [' .$inputVal. '], rule [' .$ruleName. ']');
505
-            // Array to store args
506
-            $ruleArgs = array();
507
-
508
-            preg_match('/\[(.*)\]/', $ruleName, $ruleArgs);
509
-
510
-            // Get the rule arguments, realRule is just the base rule name
511
-            // Like min_length instead of min_length[3]
512
-            $ruleName = preg_replace('/\[(.*)\]/', '', $ruleName);
470
+			}
471
+			/***********************************/
472
+			else{
473
+				if (strpos($ruleString, '|') !== FALSE) {
474
+					$ruleSets = explode('|', $ruleString);
475
+				} else {
476
+					$ruleSets[] = $ruleString;
477
+				}
478
+			 }
479
+			return $ruleSets;
480
+		}
481
+
482
+		/**
483
+		 * Returns whether or not a field obtains the rule "required".
484
+		 *
485
+		 * @param string $fieldName Field to check if required.
486
+		 *
487
+		 * @return boolean Whether or not the field is required.
488
+		 */
489
+		protected function _fieldIsRequired($fieldName) {
490
+			$rules = $this->_parseRuleString($this->_rules[$fieldName]);
491
+			return (in_array('required', $rules));
492
+		}
493
+
494
+		/**
495
+		 * Takes a data input name, it's value, and the rule it's being validated against (ex: max_length[16])
496
+		 * and adds an error to the errorSet if it fails validation of the rule.
497
+		 *
498
+		 * @param string $inputName Name or key of the validation data
499
+		 * @param string $inputVal Value of the validation data
500
+		 * @param string $ruleName Rule to be validated against, including args (exact_length[5])
501
+		 * @return void
502
+		 */
503
+		protected function _validateRule($inputName, $inputVal, $ruleName) {
504
+			$this->logger->debug('Rule validation of field [' .$inputName. '], value [' .$inputVal. '], rule [' .$ruleName. ']');
505
+			// Array to store args
506
+			$ruleArgs = array();
507
+
508
+			preg_match('/\[(.*)\]/', $ruleName, $ruleArgs);
509
+
510
+			// Get the rule arguments, realRule is just the base rule name
511
+			// Like min_length instead of min_length[3]
512
+			$ruleName = preg_replace('/\[(.*)\]/', '', $ruleName);
513 513
             
514
-            if (method_exists($this, $this->_toCallCase($ruleName))) {
515
-                $methodToCall = $this->_toCallCase($ruleName);
516
-                call_user_func(array($this, $methodToCall), $inputName, $ruleName, $ruleArgs);
517
-            }
518
-            return;
519
-        }
520
-
521
-		/**
522
-		* Set error for the given field or key
523
-		*
524
-		* @param string $inputName the input or key name
525
-		* @param string $ruleName the rule name
526
-		* @param array|string $replacements
527
-		*/
528
-        protected function _setError($inputName, $ruleName, $replacements = array()) {
529
-            $rulePhraseKeyParts = explode(',', $ruleName);
530
-            $rulePhrase = null;
531
-            foreach ($rulePhraseKeyParts as $rulePhraseKeyPart) {
532
-                if (array_key_exists($rulePhraseKeyPart, $this->_errorsMessages)) {
533
-                    $rulePhrase = $this->_errorsMessages[$rulePhraseKeyPart];
534
-                } else {
535
-                    $rulePhrase = $rulePhrase[$rulePhraseKeyPart];
536
-                }
537
-            }
538
-            // Any overrides?
539
-            if (array_key_exists($inputName, $this->_errorPhraseOverrides) && array_key_exists($ruleName, $this->_errorPhraseOverrides[$inputName])) {
540
-                $rulePhrase = $this->_errorPhraseOverrides[$inputName][$ruleName];
541
-            }
542
-            // Type cast to array in case it's a string
543
-            $replacements = (array) $replacements;
514
+			if (method_exists($this, $this->_toCallCase($ruleName))) {
515
+				$methodToCall = $this->_toCallCase($ruleName);
516
+				call_user_func(array($this, $methodToCall), $inputName, $ruleName, $ruleArgs);
517
+			}
518
+			return;
519
+		}
520
+
521
+		/**
522
+		 * Set error for the given field or key
523
+		 *
524
+		 * @param string $inputName the input or key name
525
+		 * @param string $ruleName the rule name
526
+		 * @param array|string $replacements
527
+		 */
528
+		protected function _setError($inputName, $ruleName, $replacements = array()) {
529
+			$rulePhraseKeyParts = explode(',', $ruleName);
530
+			$rulePhrase = null;
531
+			foreach ($rulePhraseKeyParts as $rulePhraseKeyPart) {
532
+				if (array_key_exists($rulePhraseKeyPart, $this->_errorsMessages)) {
533
+					$rulePhrase = $this->_errorsMessages[$rulePhraseKeyPart];
534
+				} else {
535
+					$rulePhrase = $rulePhrase[$rulePhraseKeyPart];
536
+				}
537
+			}
538
+			// Any overrides?
539
+			if (array_key_exists($inputName, $this->_errorPhraseOverrides) && array_key_exists($ruleName, $this->_errorPhraseOverrides[$inputName])) {
540
+				$rulePhrase = $this->_errorPhraseOverrides[$inputName][$ruleName];
541
+			}
542
+			// Type cast to array in case it's a string
543
+			$replacements = (array) $replacements;
544 544
 			$replacementCount = count($replacements);
545
-            for ($i = 1; $i <= $replacementCount; $i++) {
546
-                $key = $i - 1;
547
-                $rulePhrase = str_replace('%' . $i, $replacements[$key], $rulePhrase);
548
-            }
549
-            if (! array_key_exists($inputName, $this->_errors)) {
550
-                $this->_errors[$inputName] = $rulePhrase;
551
-            }
552
-        }
553
-
554
-        /**
555
-         * Used to run a callback for the callback rule, as well as pass in a default
556
-         * argument of the post value. For example the username field having a rule:
557
-         * callback[userExists] will eval userExists(data[username]) - Note the use
558
-         * of eval over call_user_func is in case the function is not user defined.
559
-         *
560
-         * @param type $inputArg
561
-         * @param string $callbackFunc
562
-		 *
563
-         * @return mixed
564
-         */
565
-        protected function _runCallback($inputArg, $callbackFunc) {
545
+			for ($i = 1; $i <= $replacementCount; $i++) {
546
+				$key = $i - 1;
547
+				$rulePhrase = str_replace('%' . $i, $replacements[$key], $rulePhrase);
548
+			}
549
+			if (! array_key_exists($inputName, $this->_errors)) {
550
+				$this->_errors[$inputName] = $rulePhrase;
551
+			}
552
+		}
553
+
554
+		/**
555
+		 * Used to run a callback for the callback rule, as well as pass in a default
556
+		 * argument of the post value. For example the username field having a rule:
557
+		 * callback[userExists] will eval userExists(data[username]) - Note the use
558
+		 * of eval over call_user_func is in case the function is not user defined.
559
+		 *
560
+		 * @param type $inputArg
561
+		 * @param string $callbackFunc
562
+		 *
563
+		 * @return mixed
564
+		 */
565
+		protected function _runCallback($inputArg, $callbackFunc) {
566 566
 			return eval('return ' . $callbackFunc . '("' . $inputArg . '");');
567
-        }
568
-
569
-        /**
570
-         * Used for applying a rule only if the empty callback evaluates to true,
571
-         * for example required[funcName] - This runs funcName without passing any
572
-         * arguments.
573
-         *
574
-         * @param string $callbackFunc
575
-		 *
576
-         * @return anything
577
-         */
578
-        protected function _runEmptyCallback($callbackFunc) {
579
-            return eval('return ' . $callbackFunc . '();');
580
-        }
581
-
582
-        /**
583
-         * Gets a specific label of a specific field input name.
584
-         *
585
-         * @param string $inputName
586
-		 *
587
-         * @return string
588
-         */
589
-        protected function _getLabel($inputName) {
590
-            return (array_key_exists($inputName, $this->_labels)) ? $this->_labels[$inputName] : $inputName;
591
-        }
567
+		}
568
+
569
+		/**
570
+		 * Used for applying a rule only if the empty callback evaluates to true,
571
+		 * for example required[funcName] - This runs funcName without passing any
572
+		 * arguments.
573
+		 *
574
+		 * @param string $callbackFunc
575
+		 *
576
+		 * @return anything
577
+		 */
578
+		protected function _runEmptyCallback($callbackFunc) {
579
+			return eval('return ' . $callbackFunc . '();');
580
+		}
581
+
582
+		/**
583
+		 * Gets a specific label of a specific field input name.
584
+		 *
585
+		 * @param string $inputName
586
+		 *
587
+		 * @return string
588
+		 */
589
+		protected function _getLabel($inputName) {
590
+			return (array_key_exists($inputName, $this->_labels)) ? $this->_labels[$inputName] : $inputName;
591
+		}
592 592
 		
593
-        /**
594
-         * Peform validation for the rule "required"
595
-         * @param  string $inputName the form field or data key name used
596
-         * @param  string $ruleName  the rule name for this validation ("required")
597
-         * @param  array  $ruleArgs  the rules argument
598
-         */
593
+		/**
594
+		 * Peform validation for the rule "required"
595
+		 * @param  string $inputName the form field or data key name used
596
+		 * @param  string $ruleName  the rule name for this validation ("required")
597
+		 * @param  array  $ruleArgs  the rules argument
598
+		 */
599 599
 		protected function _validateRequired($inputName, $ruleName, array $ruleArgs) {
600
-            $inputVal = $this->post($inputName);
601
-            if(array_key_exists(1, $ruleArgs) && function_exists($ruleArgs[1])) {
602
-                $callbackReturn = $this->_runEmptyCallback($ruleArgs[1]);
603
-                if ($inputVal == '' && $callbackReturn == true) {
604
-                    $this->_setError($inputName, $ruleName, $this->_getLabel($inputName));
605
-                }
606
-            } 
600
+			$inputVal = $this->post($inputName);
601
+			if(array_key_exists(1, $ruleArgs) && function_exists($ruleArgs[1])) {
602
+				$callbackReturn = $this->_runEmptyCallback($ruleArgs[1]);
603
+				if ($inputVal == '' && $callbackReturn == true) {
604
+					$this->_setError($inputName, $ruleName, $this->_getLabel($inputName));
605
+				}
606
+			} 
607 607
 			else if($inputVal == '') {
608 608
 				$this->_setError($inputName, $ruleName, $this->_getLabel($inputName));
609
-            }
610
-        }
611
-
612
-        /**
613
-         * Perform validation for the honey pot so means for the validation to be failed
614
-         * @param  string $inputName the form field or data key name used
615
-         * @param  string $ruleName  the rule name for this validation
616
-         * @param  array  $ruleArgs  the rules argument
617
-         */
618
-        protected function _validateHoneypot($inputName, $ruleName, array $ruleArgs) {
619
-            if ($this->data[$inputName] != '') {
620
-                $this->_forceFail = true;
621
-            }
622
-        }
623
-
624
-        /**
625
-         * Peform validation for the rule "callback"
626
-         * @param  string $inputName the form field or data key name used
627
-         * @param  string $ruleName  the rule name for this validation ("callback")
628
-         * @param  array  $ruleArgs  the rules argument
629
-         */
630
-        protected function _validateCallback($inputName, $ruleName, array $ruleArgs) {
631
-            if (function_exists($ruleArgs[1]) && !empty($this->data[$inputName])) {
609
+			}
610
+		}
611
+
612
+		/**
613
+		 * Perform validation for the honey pot so means for the validation to be failed
614
+		 * @param  string $inputName the form field or data key name used
615
+		 * @param  string $ruleName  the rule name for this validation
616
+		 * @param  array  $ruleArgs  the rules argument
617
+		 */
618
+		protected function _validateHoneypot($inputName, $ruleName, array $ruleArgs) {
619
+			if ($this->data[$inputName] != '') {
620
+				$this->_forceFail = true;
621
+			}
622
+		}
623
+
624
+		/**
625
+		 * Peform validation for the rule "callback"
626
+		 * @param  string $inputName the form field or data key name used
627
+		 * @param  string $ruleName  the rule name for this validation ("callback")
628
+		 * @param  array  $ruleArgs  the rules argument
629
+		 */
630
+		protected function _validateCallback($inputName, $ruleName, array $ruleArgs) {
631
+			if (function_exists($ruleArgs[1]) && !empty($this->data[$inputName])) {
632 632
 				$result = $this->_runCallback($this->data[$inputName], $ruleArgs[1]);
633 633
 				if(! $result){
634 634
 					$this->_setError($inputName, $ruleName, array($this->_getLabel($inputName)));
635 635
 				}
636
-            }
637
-        }
638
-
639
-        /**
640
-         * Peform validation for the rule "depends"
641
-         * @param  string $inputName the form field or data key name used
642
-         * @param  string $ruleName  the rule name for this validation ("depends")
643
-         * @param  array  $ruleArgs  the rules argument
644
-         */
645
-        protected function _validateDepends($inputName, $ruleName, array $ruleArgs) {
646
-            if (array_key_exists($ruleArgs[1], $this->_errors)) {
647
-                $this->_setError($inputName, $ruleName, array($this->_getLabel($inputName), $this->_getLabel($ruleArgs[1])));
648
-            }
649
-        }
650
-
651
-        /**
652
-         * Peform validation for the rule "not_equal"
653
-         * @param  string $inputName the form field or data key name used
654
-         * @param  string $ruleName  the rule name for this validation ("not_equal")
655
-         * @param  array  $ruleArgs  the rules argument
656
-         */
657
-        protected function _validateNotEqual($inputName, $ruleName, array $ruleArgs) {
658
-            $canNotEqual = explode(',', $ruleArgs[1]);
659
-            foreach ($canNotEqual as $doNotEqual) {
660
-                $inputVal = $this->post($inputName);
661
-                if (preg_match('/post:(.*)/', $doNotEqual)) {
662
-                    if ($inputVal == $this->data[str_replace('post:', '', $doNotEqual)]) {
663
-                        $this->_setError($inputName, $ruleName . ',post:key', array($this->_getLabel($inputName), $this->_getLabel(str_replace('post:', '', $doNotEqual))));
664
-                        continue;
665
-                    }
666
-                } 
636
+			}
637
+		}
638
+
639
+		/**
640
+		 * Peform validation for the rule "depends"
641
+		 * @param  string $inputName the form field or data key name used
642
+		 * @param  string $ruleName  the rule name for this validation ("depends")
643
+		 * @param  array  $ruleArgs  the rules argument
644
+		 */
645
+		protected function _validateDepends($inputName, $ruleName, array $ruleArgs) {
646
+			if (array_key_exists($ruleArgs[1], $this->_errors)) {
647
+				$this->_setError($inputName, $ruleName, array($this->_getLabel($inputName), $this->_getLabel($ruleArgs[1])));
648
+			}
649
+		}
650
+
651
+		/**
652
+		 * Peform validation for the rule "not_equal"
653
+		 * @param  string $inputName the form field or data key name used
654
+		 * @param  string $ruleName  the rule name for this validation ("not_equal")
655
+		 * @param  array  $ruleArgs  the rules argument
656
+		 */
657
+		protected function _validateNotEqual($inputName, $ruleName, array $ruleArgs) {
658
+			$canNotEqual = explode(',', $ruleArgs[1]);
659
+			foreach ($canNotEqual as $doNotEqual) {
660
+				$inputVal = $this->post($inputName);
661
+				if (preg_match('/post:(.*)/', $doNotEqual)) {
662
+					if ($inputVal == $this->data[str_replace('post:', '', $doNotEqual)]) {
663
+						$this->_setError($inputName, $ruleName . ',post:key', array($this->_getLabel($inputName), $this->_getLabel(str_replace('post:', '', $doNotEqual))));
664
+						continue;
665
+					}
666
+				} 
667 667
 				else{
668
-                    if ($inputVal == $doNotEqual) {
669
-                        $this->_setError($inputName, $ruleName . ',string', array($this->_getLabel($inputName), $doNotEqual));
670
-                        continue;
671
-                    }
672
-                }
673
-            }
674
-        }
675
-
676
-        /**
677
-         * Peform validation for the rule "matches"
678
-         * @param  string $inputName the form field or data key name used
679
-         * @param  string $ruleName  the rule name for this validation ("matches")
680
-         * @param  array  $ruleArgs  the rules argument
681
-         */
682
-        protected function _validateMatches($inputName, $ruleName, array $ruleArgs) {
683
-            $inputVal = $this->post($inputName);
684
-            if ($inputVal != $this->data[$ruleArgs[1]]) {
685
-                $this->_setError($inputName, $ruleName, array($this->_getLabel($inputName), $this->_getLabel($ruleArgs[1])));
686
-            }
687
-        }
688
-
689
-        /**
690
-         * Peform validation for the rule "valid_email"
691
-         * @param  string $inputName the form field or data key name used
692
-         * @param  string $ruleName  the rule name for this validation ("valid_email")
693
-         * @param  array  $ruleArgs  the rules argument
694
-         */
695
-        protected function _validateValidEmail($inputName, $ruleName, array $ruleArgs) {
696
-            $inputVal = $this->post($inputName);
697
-            if (! preg_match("/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i", $inputVal)) {
698
-                if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
699
-                    return;
700
-                }
701
-                $this->_setError($inputName, $ruleName, $this->_getLabel($inputName));
702
-            }
703
-        }
704
-
705
-        /**
706
-         * Peform validation for the rule "exact_length"
707
-         * @param  string $inputName the form field or data key name used
708
-         * @param  string $ruleName  the rule name for this validation ("exact_length")
709
-         * @param  array  $ruleArgs  the rules argument
710
-         */
711
-        protected function _validateExactLength($inputName, $ruleName, array $ruleArgs) {
712
-            $inputVal = $this->post($inputName);
713
-            if (strlen($inputVal) != $ruleArgs[1]) { // $ruleArgs[0] is [length] $rulesArgs[1] is just length
714
-                if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
715
-                    return;
716
-                }
717
-                $this->_setError($inputName, $ruleName, array($this->_getLabel($inputName), $this->_getLabel($ruleArgs[1])));
718
-            }
719
-        }
720
-
721
-        /**
722
-         * Peform validation for the rule "max_length"
723
-         * @param  string $inputName the form field or data key name used
724
-         * @param  string $ruleName  the rule name for this validation ("max_length")
725
-         * @param  array  $ruleArgs  the rules argument
726
-         */
727
-        protected function _validateMaxLength($inputName, $ruleName, array $ruleArgs) {
728
-            $inputVal = $this->post($inputName);
729
-            if (strlen($inputVal) > $ruleArgs[1]) { // $ruleArgs[0] is [length] $rulesArgs[1] is just length
730
-                if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
731
-                    return;
732
-                }
733
-                $this->_setError($inputName, $ruleName, array($this->_getLabel($inputName), $this->_getLabel($ruleArgs[1])));
734
-            }
735
-        }
736
-
737
-        /**
738
-         * Peform validation for the rule "min_length"
739
-         * @param  string $inputName the form field or data key name used
740
-         * @param  string $ruleName  the rule name for this validation ("min_length")
741
-         * @param  array  $ruleArgs  the rules argument
742
-         */
743
-        protected function _validateMinLength($inputName, $ruleName, array $ruleArgs) {
744
-            $inputVal = $this->post($inputName);
745
-            if (strlen($inputVal) < $ruleArgs[1]) { // $ruleArgs[0] is [length] $rulesArgs[1] is just length
746
-                if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
747
-                    return;
748
-                }
749
-                $this->_setError($inputName, $ruleName, array($this->_getLabel($inputName), $this->_getLabel($ruleArgs[1])));
750
-            }
751
-        }
668
+					if ($inputVal == $doNotEqual) {
669
+						$this->_setError($inputName, $ruleName . ',string', array($this->_getLabel($inputName), $doNotEqual));
670
+						continue;
671
+					}
672
+				}
673
+			}
674
+		}
675
+
676
+		/**
677
+		 * Peform validation for the rule "matches"
678
+		 * @param  string $inputName the form field or data key name used
679
+		 * @param  string $ruleName  the rule name for this validation ("matches")
680
+		 * @param  array  $ruleArgs  the rules argument
681
+		 */
682
+		protected function _validateMatches($inputName, $ruleName, array $ruleArgs) {
683
+			$inputVal = $this->post($inputName);
684
+			if ($inputVal != $this->data[$ruleArgs[1]]) {
685
+				$this->_setError($inputName, $ruleName, array($this->_getLabel($inputName), $this->_getLabel($ruleArgs[1])));
686
+			}
687
+		}
688
+
689
+		/**
690
+		 * Peform validation for the rule "valid_email"
691
+		 * @param  string $inputName the form field or data key name used
692
+		 * @param  string $ruleName  the rule name for this validation ("valid_email")
693
+		 * @param  array  $ruleArgs  the rules argument
694
+		 */
695
+		protected function _validateValidEmail($inputName, $ruleName, array $ruleArgs) {
696
+			$inputVal = $this->post($inputName);
697
+			if (! preg_match("/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i", $inputVal)) {
698
+				if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
699
+					return;
700
+				}
701
+				$this->_setError($inputName, $ruleName, $this->_getLabel($inputName));
702
+			}
703
+		}
704
+
705
+		/**
706
+		 * Peform validation for the rule "exact_length"
707
+		 * @param  string $inputName the form field or data key name used
708
+		 * @param  string $ruleName  the rule name for this validation ("exact_length")
709
+		 * @param  array  $ruleArgs  the rules argument
710
+		 */
711
+		protected function _validateExactLength($inputName, $ruleName, array $ruleArgs) {
712
+			$inputVal = $this->post($inputName);
713
+			if (strlen($inputVal) != $ruleArgs[1]) { // $ruleArgs[0] is [length] $rulesArgs[1] is just length
714
+				if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
715
+					return;
716
+				}
717
+				$this->_setError($inputName, $ruleName, array($this->_getLabel($inputName), $this->_getLabel($ruleArgs[1])));
718
+			}
719
+		}
720
+
721
+		/**
722
+		 * Peform validation for the rule "max_length"
723
+		 * @param  string $inputName the form field or data key name used
724
+		 * @param  string $ruleName  the rule name for this validation ("max_length")
725
+		 * @param  array  $ruleArgs  the rules argument
726
+		 */
727
+		protected function _validateMaxLength($inputName, $ruleName, array $ruleArgs) {
728
+			$inputVal = $this->post($inputName);
729
+			if (strlen($inputVal) > $ruleArgs[1]) { // $ruleArgs[0] is [length] $rulesArgs[1] is just length
730
+				if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
731
+					return;
732
+				}
733
+				$this->_setError($inputName, $ruleName, array($this->_getLabel($inputName), $this->_getLabel($ruleArgs[1])));
734
+			}
735
+		}
736
+
737
+		/**
738
+		 * Peform validation for the rule "min_length"
739
+		 * @param  string $inputName the form field or data key name used
740
+		 * @param  string $ruleName  the rule name for this validation ("min_length")
741
+		 * @param  array  $ruleArgs  the rules argument
742
+		 */
743
+		protected function _validateMinLength($inputName, $ruleName, array $ruleArgs) {
744
+			$inputVal = $this->post($inputName);
745
+			if (strlen($inputVal) < $ruleArgs[1]) { // $ruleArgs[0] is [length] $rulesArgs[1] is just length
746
+				if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
747
+					return;
748
+				}
749
+				$this->_setError($inputName, $ruleName, array($this->_getLabel($inputName), $this->_getLabel($ruleArgs[1])));
750
+			}
751
+		}
752 752
     	
753
-        /**
754
-         * Peform validation for the rule "less_than"
755
-         * @param  string $inputName the form field or data key name used
756
-         * @param  string $ruleName  the rule name for this validation ("less_than")
757
-         * @param  array  $ruleArgs  the rules argument
758
-         */
759
-    	protected function _validateLessThan($inputName, $ruleName, array $ruleArgs) {
760
-            $inputVal = $this->post($inputName);
761
-            if ($inputVal >= $ruleArgs[1]) { 
762
-                if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
763
-                    return;
764
-                }
765
-                $this->_setError($inputName, $ruleName, array($this->_getLabel($inputName), $this->_getLabel($ruleArgs[1])));
766
-            }
767
-        }
753
+		/**
754
+		 * Peform validation for the rule "less_than"
755
+		 * @param  string $inputName the form field or data key name used
756
+		 * @param  string $ruleName  the rule name for this validation ("less_than")
757
+		 * @param  array  $ruleArgs  the rules argument
758
+		 */
759
+		protected function _validateLessThan($inputName, $ruleName, array $ruleArgs) {
760
+			$inputVal = $this->post($inputName);
761
+			if ($inputVal >= $ruleArgs[1]) { 
762
+				if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
763
+					return;
764
+				}
765
+				$this->_setError($inputName, $ruleName, array($this->_getLabel($inputName), $this->_getLabel($ruleArgs[1])));
766
+			}
767
+		}
768 768
     	
769
-        /**
770
-         * Peform validation for the rule "greater_than"
771
-         * @param  string $inputName the form field or data key name used
772
-         * @param  string $ruleName  the rule name for this validation ("greater_than")
773
-         * @param  array  $ruleArgs  the rules argument
774
-         */
775
-    	protected function _validateGreaterThan($inputName, $ruleName, array $ruleArgs) {
776
-            $inputVal = $this->post($inputName);
777
-            if ($inputVal <= $ruleArgs[1]) {
778
-                if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
779
-                    return;
780
-                }
781
-                $this->_setError($inputName, $ruleName, array($this->_getLabel($inputName), $this->_getLabel($ruleArgs[1])));
782
-            }
783
-        }
769
+		/**
770
+		 * Peform validation for the rule "greater_than"
771
+		 * @param  string $inputName the form field or data key name used
772
+		 * @param  string $ruleName  the rule name for this validation ("greater_than")
773
+		 * @param  array  $ruleArgs  the rules argument
774
+		 */
775
+		protected function _validateGreaterThan($inputName, $ruleName, array $ruleArgs) {
776
+			$inputVal = $this->post($inputName);
777
+			if ($inputVal <= $ruleArgs[1]) {
778
+				if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
779
+					return;
780
+				}
781
+				$this->_setError($inputName, $ruleName, array($this->_getLabel($inputName), $this->_getLabel($ruleArgs[1])));
782
+			}
783
+		}
784 784
     	
785
-        /**
786
-         * Peform validation for the rule "numeric"
787
-         * @param  string $inputName the form field or data key name used
788
-         * @param  string $ruleName  the rule name for this validation ("numeric")
789
-         * @param  array  $ruleArgs  the rules argument
790
-         */
791
-    	protected function _validateNumeric($inputName, $ruleName, array $ruleArgs) {
792
-            $inputVal = $this->post($inputName);
793
-            if (! is_numeric($inputVal)) {
794
-                if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
795
-                    return;
796
-                }
797
-                $this->_setError($inputName, $ruleName, array($this->_getLabel($inputName)));
798
-            }
799
-        }
785
+		/**
786
+		 * Peform validation for the rule "numeric"
787
+		 * @param  string $inputName the form field or data key name used
788
+		 * @param  string $ruleName  the rule name for this validation ("numeric")
789
+		 * @param  array  $ruleArgs  the rules argument
790
+		 */
791
+		protected function _validateNumeric($inputName, $ruleName, array $ruleArgs) {
792
+			$inputVal = $this->post($inputName);
793
+			if (! is_numeric($inputVal)) {
794
+				if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
795
+					return;
796
+				}
797
+				$this->_setError($inputName, $ruleName, array($this->_getLabel($inputName)));
798
+			}
799
+		}
800 800
 		
801
-        /**
802
-         * Peform validation for the rule "exists"
803
-         * @param  string $inputName the form field or data key name used
804
-         * @param  string $ruleName  the rule name for this validation ("exists")
805
-         * @param  array  $ruleArgs  the rules argument
806
-         */
801
+		/**
802
+		 * Peform validation for the rule "exists"
803
+		 * @param  string $inputName the form field or data key name used
804
+		 * @param  string $ruleName  the rule name for this validation ("exists")
805
+		 * @param  array  $ruleArgs  the rules argument
806
+		 */
807 807
 		protected function _validateExists($inputName, $ruleName, array $ruleArgs) {
808
-            $inputVal = $this->post($inputName);
809
-    		$obj = & get_instance();
810
-    		if(! isset($obj->database)){
811
-    			return;
812
-    		}
813
-    		list($table, $column) = explode('.', $ruleArgs[1]);
814
-    		$obj->database->from($table)
815
-    			          ->where($column, $inputVal)
816
-    			          ->get();
817
-    		$nb = $obj->database->numRows();
818
-            if ($nb == 0) {
819
-                if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
820
-                    return;
821
-                }
822
-                $this->_setError($inputName, $ruleName, array($this->_getLabel($inputName)));
823
-            }
824
-        }
825
-
826
-        /**
827
-         * Peform validation for the rule "is_unique"
828
-         * @param  string $inputName the form field or data key name used
829
-         * @param  string $ruleName  the rule name for this validation ("is_unique")
830
-         * @param  array  $ruleArgs  the rules argument
831
-         */
832
-    	protected function _validateIsUnique($inputName, $ruleName, array $ruleArgs) {
833
-            $inputVal = $this->post($inputName);
834
-    		$obj = & get_instance();
835
-    		if(! isset($obj->database)){
836
-    			return;
837
-    		}
838
-    		list($table, $column) = explode('.', $ruleArgs[1]);
839
-    		$obj->database->from($table)
840
-    			          ->where($column, $inputVal)
841
-    			          ->get();
842
-    		$nb = $obj->database->numRows();
843
-            if ($nb != 0) {
844
-                if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
845
-                    return;
846
-                }
847
-                $this->_setError($inputName, $ruleName, array($this->_getLabel($inputName)));
848
-            }
849
-        }
808
+			$inputVal = $this->post($inputName);
809
+			$obj = & get_instance();
810
+			if(! isset($obj->database)){
811
+				return;
812
+			}
813
+			list($table, $column) = explode('.', $ruleArgs[1]);
814
+			$obj->database->from($table)
815
+						  ->where($column, $inputVal)
816
+						  ->get();
817
+			$nb = $obj->database->numRows();
818
+			if ($nb == 0) {
819
+				if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
820
+					return;
821
+				}
822
+				$this->_setError($inputName, $ruleName, array($this->_getLabel($inputName)));
823
+			}
824
+		}
825
+
826
+		/**
827
+		 * Peform validation for the rule "is_unique"
828
+		 * @param  string $inputName the form field or data key name used
829
+		 * @param  string $ruleName  the rule name for this validation ("is_unique")
830
+		 * @param  array  $ruleArgs  the rules argument
831
+		 */
832
+		protected function _validateIsUnique($inputName, $ruleName, array $ruleArgs) {
833
+			$inputVal = $this->post($inputName);
834
+			$obj = & get_instance();
835
+			if(! isset($obj->database)){
836
+				return;
837
+			}
838
+			list($table, $column) = explode('.', $ruleArgs[1]);
839
+			$obj->database->from($table)
840
+						  ->where($column, $inputVal)
841
+						  ->get();
842
+			$nb = $obj->database->numRows();
843
+			if ($nb != 0) {
844
+				if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
845
+					return;
846
+				}
847
+				$this->_setError($inputName, $ruleName, array($this->_getLabel($inputName)));
848
+			}
849
+		}
850 850
     	
851
-        /**
852
-         * Peform validation for the rule "is_unique_update"
853
-         * @param  string $inputName the form field or data key name used
854
-         * @param  string $ruleName  the rule name for this validation ("is_unique_update")
855
-         * @param  array  $ruleArgs  the rules argument
856
-         */
857
-    	protected function _validateIsUniqueUpdate($inputName, $ruleName, array $ruleArgs) {
858
-            $inputVal = $this->post($inputName);
859
-    		$obj = & get_instance();
860
-    		if(! isset($obj->database)){
861
-    			return;
862
-    		}
863
-    		$data = explode(',', $ruleArgs[1]);
864
-    		if(count($data) < 2){
865
-    			return;
866
-    		}
867
-    		list($table, $column) = explode('.', $data[0]);
868
-    		list($field, $val) = explode('=', $data[1]);
869
-    		$obj->database->from($table)
870
-    			          ->where($column, $inputVal)
871
-                		  ->where($field, '!=', trim($val))
872
-                		  ->get();
873
-    		$nb = $obj->database->numRows();
874
-            if ($nb != 0) {
875
-                if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
876
-                    return;
877
-                }
878
-                $this->_setError($inputName, $ruleName, array($this->_getLabel($inputName)));
879
-            }
880
-        }
881
-
882
-        /**
883
-         * Peform validation for the rule "in_list"
884
-         * @param  string $inputName the form field or data key name used
885
-         * @param  string $ruleName  the rule name for this validation ("in_list")
886
-         * @param  array  $ruleArgs  the rules argument
887
-         */
888
-        protected function _validateInList($inputName, $ruleName, array $ruleArgs) {
889
-            $inputVal = $this->post($inputName);
890
-    		$list = explode(',', $ruleArgs[1]);
891
-            $list = array_map('trim', $list);
892
-            if (! in_array($inputVal, $list)) {
893
-                if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
894
-                    return;
895
-                }
896
-                $this->_setError($inputName, $ruleName, array($this->_getLabel($inputName), $this->_getLabel($ruleArgs[1])));
897
-            }
898
-        }
899
-
900
-        /**
901
-         * Peform validation for the rule "regex"
902
-         * @param  string $inputName the form field or data key name used
903
-         * @param  string $ruleName  the rule name for this validation ("regex")
904
-         * @param  array  $ruleArgs  the rules argument
905
-         */
906
-        protected function _validateRegex($inputName, $ruleName, array $ruleArgs) {
907
-            $inputVal = $this->post($inputName);
908
-    		$regex = $ruleArgs[1];
909
-            if (! preg_match($regex, $inputVal)) {
910
-                if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
911
-                    return;
912
-                }
913
-                $this->_setError($inputName, $ruleName, array($this->_getLabel($inputName)));
914
-            }
915
-        }
851
+		/**
852
+		 * Peform validation for the rule "is_unique_update"
853
+		 * @param  string $inputName the form field or data key name used
854
+		 * @param  string $ruleName  the rule name for this validation ("is_unique_update")
855
+		 * @param  array  $ruleArgs  the rules argument
856
+		 */
857
+		protected function _validateIsUniqueUpdate($inputName, $ruleName, array $ruleArgs) {
858
+			$inputVal = $this->post($inputName);
859
+			$obj = & get_instance();
860
+			if(! isset($obj->database)){
861
+				return;
862
+			}
863
+			$data = explode(',', $ruleArgs[1]);
864
+			if(count($data) < 2){
865
+				return;
866
+			}
867
+			list($table, $column) = explode('.', $data[0]);
868
+			list($field, $val) = explode('=', $data[1]);
869
+			$obj->database->from($table)
870
+						  ->where($column, $inputVal)
871
+						  ->where($field, '!=', trim($val))
872
+						  ->get();
873
+			$nb = $obj->database->numRows();
874
+			if ($nb != 0) {
875
+				if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
876
+					return;
877
+				}
878
+				$this->_setError($inputName, $ruleName, array($this->_getLabel($inputName)));
879
+			}
880
+		}
881
+
882
+		/**
883
+		 * Peform validation for the rule "in_list"
884
+		 * @param  string $inputName the form field or data key name used
885
+		 * @param  string $ruleName  the rule name for this validation ("in_list")
886
+		 * @param  array  $ruleArgs  the rules argument
887
+		 */
888
+		protected function _validateInList($inputName, $ruleName, array $ruleArgs) {
889
+			$inputVal = $this->post($inputName);
890
+			$list = explode(',', $ruleArgs[1]);
891
+			$list = array_map('trim', $list);
892
+			if (! in_array($inputVal, $list)) {
893
+				if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
894
+					return;
895
+				}
896
+				$this->_setError($inputName, $ruleName, array($this->_getLabel($inputName), $this->_getLabel($ruleArgs[1])));
897
+			}
898
+		}
899
+
900
+		/**
901
+		 * Peform validation for the rule "regex"
902
+		 * @param  string $inputName the form field or data key name used
903
+		 * @param  string $ruleName  the rule name for this validation ("regex")
904
+		 * @param  array  $ruleArgs  the rules argument
905
+		 */
906
+		protected function _validateRegex($inputName, $ruleName, array $ruleArgs) {
907
+			$inputVal = $this->post($inputName);
908
+			$regex = $ruleArgs[1];
909
+			if (! preg_match($regex, $inputVal)) {
910
+				if (! $this->_fieldIsRequired($inputName) && empty($this->data[$inputName])) {
911
+					return;
912
+				}
913
+				$this->_setError($inputName, $ruleName, array($this->_getLabel($inputName)));
914
+			}
915
+		}
916 916
         
917
-    }
917
+	}
Please login to merge, or discard this patch.