blob: fd807769a5d8bb91314f5f202f21b3022362511e [file] [log] [blame]
Andrey Andreevc5536aa2012-11-01 17:33:58 +02001<?php
Derek Allard2067d1a2008-11-13 22:59:24 +00002/**
3 * CodeIgniter
4 *
Andrey Andreevfe9309d2015-01-09 17:48:58 +02005 * An open source application development framework for PHP
Derek Allard2067d1a2008-11-13 22:59:24 +00006 *
Andrey Andreevbdb96ca2014-10-28 00:13:31 +02007 * This content is released under the MIT License (MIT)
Andrey Andreev8bf6bb62012-01-06 16:11:04 +02008 *
Andrey Andreevfe9309d2015-01-09 17:48:58 +02009 * Copyright (c) 2014 - 2015, British Columbia Institute of Technology
Andrey Andreev8bf6bb62012-01-06 16:11:04 +020010 *
Andrey Andreevbdb96ca2014-10-28 00:13:31 +020011 * Permission is hereby granted, free of charge, to any person obtaining a copy
12 * of this software and associated documentation files (the "Software"), to deal
13 * in the Software without restriction, including without limitation the rights
14 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 * copies of the Software, and to permit persons to whom the Software is
16 * furnished to do so, subject to the following conditions:
Derek Jonesf4a4bd82011-10-20 12:18:42 -050017 *
Andrey Andreevbdb96ca2014-10-28 00:13:31 +020018 * The above copyright notice and this permission notice shall be included in
19 * all copies or substantial portions of the Software.
20 *
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
27 * THE SOFTWARE.
28 *
29 * @package CodeIgniter
30 * @author EllisLab Dev Team
darwinel871754a2014-02-11 17:34:57 +010031 * @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (http://ellislab.com/)
Andrey Andreevfe9309d2015-01-09 17:48:58 +020032 * @copyright Copyright (c) 2014 - 2015, British Columbia Institute of Technology (http://bcit.ca/)
Andrey Andreevbdb96ca2014-10-28 00:13:31 +020033 * @license http://opensource.org/licenses/MIT MIT License
34 * @link http://codeigniter.com
35 * @since Version 1.0.0
Andrey Andreevc5536aa2012-11-01 17:33:58 +020036 * @filesource
Derek Allard2067d1a2008-11-13 22:59:24 +000037 */
Andrey Andreevc5536aa2012-11-01 17:33:58 +020038defined('BASEPATH') OR exit('No direct script access allowed');
Derek Allard2067d1a2008-11-13 22:59:24 +000039
Derek Allard2067d1a2008-11-13 22:59:24 +000040/**
41 * CodeIgniter Form Helpers
42 *
43 * @package CodeIgniter
44 * @subpackage Helpers
45 * @category Helpers
Derek Jonesf4a4bd82011-10-20 12:18:42 -050046 * @author EllisLab Dev Team
Derek Allard2067d1a2008-11-13 22:59:24 +000047 * @link http://codeigniter.com/user_guide/helpers/form_helper.html
48 */
49
50// ------------------------------------------------------------------------
51
Derek Allard2067d1a2008-11-13 22:59:24 +000052if ( ! function_exists('form_open'))
53{
Timothy Warren01b129a2012-04-27 11:36:50 -040054 /**
55 * Form Declaration
56 *
57 * Creates the opening portion of the form.
58 *
59 * @param string the URI segments of the form destination
60 * @param array a key/value pair of attributes
61 * @param array a key/value pair hidden data
62 * @return string
63 */
vlakoffea19bc42013-07-27 10:07:43 +020064 function form_open($action = '', $attributes = array(), $hidden = array())
Derek Allard2067d1a2008-11-13 22:59:24 +000065 {
66 $CI =& get_instance();
67
Andrey Andreevea41c8a2014-02-26 18:31:02 +020068 // If no action is provided then set to the current url
69 if ( ! $action)
70 {
71 $action = $CI->config->site_url($CI->uri->uri_string());
72 }
vlakoffc4f9c622013-07-27 10:08:00 +020073 // If an action is not a full URL then turn it into one
Andrey Andreevea41c8a2014-02-26 18:31:02 +020074 elseif (strpos($action, '://') === FALSE)
vlakoffc4f9c622013-07-27 10:08:00 +020075 {
76 $action = $CI->config->site_url($action);
77 }
vlakoffc4f9c622013-07-27 10:08:00 +020078
vlakoffea19bc42013-07-27 10:07:43 +020079 $attributes = _attributes_to_string($attributes);
80
81 if (stripos($attributes, 'method=') === FALSE)
Andrey Andreev122ca9b2013-07-26 18:16:26 +030082 {
83 $attributes .= ' method="post"';
84 }
Derek Allard2067d1a2008-11-13 22:59:24 +000085
vlakoffea19bc42013-07-27 10:07:43 +020086 if (stripos($attributes, 'accept-charset=') === FALSE)
87 {
88 $attributes .= ' accept-charset="'.strtolower(config_item('charset')).'"';
89 }
90
vlakoffea19bc42013-07-27 10:07:43 +020091 $form = '<form action="'.$action.'"'.$attributes.">\n";
Barry Mienydd671972010-10-04 16:33:58 +020092
Andrey Andreev93a83c72012-03-26 21:24:02 +030093 // Add CSRF field if enabled, but leave it out for GET requests and requests to external websites
Andrey Andreevea41c8a2014-02-26 18:31:02 +020094 if ($CI->config->item('csrf_protection') === TRUE && strpos($action, $CI->config->base_url()) !== FALSE && ! stripos($form, 'method="get"'))
Derek Allard958543a2010-07-22 14:10:26 -040095 {
Greg Aker1f6f0ab2011-04-07 18:24:53 -050096 $hidden[$CI->security->get_csrf_token_name()] = $CI->security->get_csrf_hash();
Greg Aker28b425a2010-09-15 11:43:23 -050097 }
98
Andrey Andreev93b4e782014-03-04 17:48:21 +020099 if (is_array($hidden))
Greg Aker28b425a2010-09-15 11:43:23 -0500100 {
Andrey Andreev93b4e782014-03-04 17:48:21 +0200101 foreach ($hidden as $name => $value)
102 {
Andrey Andreev2c245612015-01-20 15:40:27 +0200103 $form .= '<input type="hidden" name="'.$name.'" value="'.html_escape($value).'" style="display:none;" />'."\n";
Andrey Andreev93b4e782014-03-04 17:48:21 +0200104 }
Derek Allard958543a2010-07-22 14:10:26 -0400105 }
106
Derek Allard2067d1a2008-11-13 22:59:24 +0000107 return $form;
108 }
109}
110
111// ------------------------------------------------------------------------
112
Derek Allard2067d1a2008-11-13 22:59:24 +0000113if ( ! function_exists('form_open_multipart'))
114{
Timothy Warren01b129a2012-04-27 11:36:50 -0400115 /**
116 * Form Declaration - Multipart type
117 *
118 * Creates the opening portion of the form, but with "multipart/form-data".
119 *
120 * @param string the URI segments of the form destination
121 * @param array a key/value pair of attributes
122 * @param array a key/value pair hidden data
123 * @return string
124 */
Ben Edmunds98963b32011-08-20 14:17:16 -0500125 function form_open_multipart($action = '', $attributes = array(), $hidden = array())
Derek Allard2067d1a2008-11-13 22:59:24 +0000126 {
Derek Allard33d4b6a2010-01-17 07:23:00 +0000127 if (is_string($attributes))
128 {
129 $attributes .= ' enctype="multipart/form-data"';
130 }
131 else
132 {
133 $attributes['enctype'] = 'multipart/form-data';
134 }
135
Derek Allard2067d1a2008-11-13 22:59:24 +0000136 return form_open($action, $attributes, $hidden);
137 }
138}
139
140// ------------------------------------------------------------------------
141
Derek Allard2067d1a2008-11-13 22:59:24 +0000142if ( ! function_exists('form_hidden'))
143{
Timothy Warren01b129a2012-04-27 11:36:50 -0400144 /**
145 * Hidden Input Field
146 *
147 * Generates hidden fields. You can pass a simple key/value string or
148 * an associative array with multiple values.
149 *
Andrey Andreev7c4d1062012-11-01 15:14:34 +0200150 * @param mixed $name Field name
151 * @param string $value Field value
152 * @param bool $recursing
Timothy Warren01b129a2012-04-27 11:36:50 -0400153 * @return string
154 */
Robin Sowell57fe4102009-03-26 18:58:46 +0000155 function form_hidden($name, $value = '', $recursing = FALSE)
Derek Allard2067d1a2008-11-13 22:59:24 +0000156 {
Robin Sowell57fe4102009-03-26 18:58:46 +0000157 static $form;
158
159 if ($recursing === FALSE)
Derek Allard2067d1a2008-11-13 22:59:24 +0000160 {
Robin Sowell57fe4102009-03-26 18:58:46 +0000161 $form = "\n";
Derek Allard2067d1a2008-11-13 22:59:24 +0000162 }
163
Robin Sowell57fe4102009-03-26 18:58:46 +0000164 if (is_array($name))
Derek Allard2067d1a2008-11-13 22:59:24 +0000165 {
Robin Sowell57fe4102009-03-26 18:58:46 +0000166 foreach ($name as $key => $val)
167 {
168 form_hidden($key, $val, TRUE);
169 }
Andrey Andreevea41c8a2014-02-26 18:31:02 +0200170
Robin Sowell57fe4102009-03-26 18:58:46 +0000171 return $form;
172 }
173
174 if ( ! is_array($value))
175 {
Andrey Andreev2c245612015-01-20 15:40:27 +0200176 $form .= '<input type="hidden" name="'.$name.'" value="'.html_escape($value)."\" />\n";
Robin Sowell57fe4102009-03-26 18:58:46 +0000177 }
178 else
179 {
180 foreach ($value as $k => $v)
181 {
Andrey Andreev93a83c72012-03-26 21:24:02 +0300182 $k = is_int($k) ? '' : $k;
Robin Sowell57fe4102009-03-26 18:58:46 +0000183 form_hidden($name.'['.$k.']', $v, TRUE);
184 }
Derek Allard2067d1a2008-11-13 22:59:24 +0000185 }
186
187 return $form;
188 }
189}
190
191// ------------------------------------------------------------------------
192
Derek Allard2067d1a2008-11-13 22:59:24 +0000193if ( ! function_exists('form_input'))
194{
Timothy Warren01b129a2012-04-27 11:36:50 -0400195 /**
196 * Text Input Field
197 *
198 * @param mixed
199 * @param string
Adam Jackett664d25a2015-06-03 15:54:54 -0400200 * @param mixed
Timothy Warren01b129a2012-04-27 11:36:50 -0400201 * @return string
202 */
Derek Allard2067d1a2008-11-13 22:59:24 +0000203 function form_input($data = '', $value = '', $extra = '')
204 {
Andrey Andreevea41c8a2014-02-26 18:31:02 +0200205 $defaults = array(
206 'type' => 'text',
207 'name' => is_array($data) ? '' : $data,
208 'value' => $value
209 );
Derek Allard2067d1a2008-11-13 22:59:24 +0000210
Andrey Andreevc19f3b22015-07-15 16:41:06 +0300211 return '<input '._parse_form_attributes($data, $defaults)._attributes_to_string($extra)." />\n";
Derek Allard2067d1a2008-11-13 22:59:24 +0000212 }
213}
214
215// ------------------------------------------------------------------------
216
Derek Allard2067d1a2008-11-13 22:59:24 +0000217if ( ! function_exists('form_password'))
218{
Timothy Warren01b129a2012-04-27 11:36:50 -0400219 /**
220 * Password Field
221 *
222 * Identical to the input function but adds the "password" type
223 *
224 * @param mixed
225 * @param string
Adam Jackett664d25a2015-06-03 15:54:54 -0400226 * @param mixed
Timothy Warren01b129a2012-04-27 11:36:50 -0400227 * @return string
228 */
Derek Allard2067d1a2008-11-13 22:59:24 +0000229 function form_password($data = '', $value = '', $extra = '')
230 {
Andrey Andreevea41c8a2014-02-26 18:31:02 +0200231 is_array($data) OR $data = array('name' => $data);
Derek Allard2067d1a2008-11-13 22:59:24 +0000232 $data['type'] = 'password';
233 return form_input($data, $value, $extra);
234 }
235}
236
237// ------------------------------------------------------------------------
238
Derek Allard2067d1a2008-11-13 22:59:24 +0000239if ( ! function_exists('form_upload'))
240{
Timothy Warren01b129a2012-04-27 11:36:50 -0400241 /**
242 * Upload Field
243 *
244 * Identical to the input function but adds the "file" type
245 *
246 * @param mixed
247 * @param string
Adam Jackett664d25a2015-06-03 15:54:54 -0400248 * @param mixed
Timothy Warren01b129a2012-04-27 11:36:50 -0400249 * @return string
250 */
Derek Allard2067d1a2008-11-13 22:59:24 +0000251 function form_upload($data = '', $value = '', $extra = '')
252 {
Bo-Yi Wu06ddcf02013-02-18 08:52:05 +0800253 $defaults = array('type' => 'file', 'name' => '');
Andrey Andreev99ba3a22013-02-15 22:42:22 +0200254 is_array($data) OR $data = array('name' => $data);
Derek Allard2067d1a2008-11-13 22:59:24 +0000255 $data['type'] = 'file';
Adam Jackett664d25a2015-06-03 15:54:54 -0400256
Andrey Andreevc19f3b22015-07-15 16:41:06 +0300257 return '<input '._parse_form_attributes($data, $defaults)._attributes_to_string($extra)." />\n";
Derek Allard2067d1a2008-11-13 22:59:24 +0000258 }
259}
260
261// ------------------------------------------------------------------------
262
Derek Allard2067d1a2008-11-13 22:59:24 +0000263if ( ! function_exists('form_textarea'))
264{
Timothy Warren01b129a2012-04-27 11:36:50 -0400265 /**
266 * Textarea field
267 *
Andrey Andreev7c4d1062012-11-01 15:14:34 +0200268 * @param mixed $data
269 * @param string $value
Adam Jackett664d25a2015-06-03 15:54:54 -0400270 * @param mixed $extra
Timothy Warren01b129a2012-04-27 11:36:50 -0400271 * @return string
272 */
Derek Allard2067d1a2008-11-13 22:59:24 +0000273 function form_textarea($data = '', $value = '', $extra = '')
274 {
Andrey Andreevea41c8a2014-02-26 18:31:02 +0200275 $defaults = array(
276 'name' => is_array($data) ? '' : $data,
277 'cols' => '40',
278 'rows' => '10'
279 );
Derek Allard2067d1a2008-11-13 22:59:24 +0000280
281 if ( ! is_array($data) OR ! isset($data['value']))
282 {
283 $val = $value;
284 }
285 else
286 {
Barry Mienydd671972010-10-04 16:33:58 +0200287 $val = $data['value'];
Derek Allard2067d1a2008-11-13 22:59:24 +0000288 unset($data['value']); // textareas don't use the value attribute
289 }
Barry Mienydd671972010-10-04 16:33:58 +0200290
Andrey Andreevc19f3b22015-07-15 16:41:06 +0300291 return '<textarea '._parse_form_attributes($data, $defaults)._attributes_to_string($extra).'>'
292 .html_escape($val)
293 ."</textarea>\n";
Derek Allard2067d1a2008-11-13 22:59:24 +0000294 }
295}
296
297// ------------------------------------------------------------------------
298
Derek Jones68788d52010-03-05 10:11:31 -0600299if ( ! function_exists('form_multiselect'))
Derek Jones26399292009-04-08 16:14:17 +0000300{
Timothy Warren01b129a2012-04-27 11:36:50 -0400301 /**
302 * Multi-select menu
303 *
304 * @param string
305 * @param array
306 * @param mixed
Adam Jackett664d25a2015-06-03 15:54:54 -0400307 * @param mixed
Timothy Warren01b129a2012-04-27 11:36:50 -0400308 * @return string
309 */
Derek Jones26399292009-04-08 16:14:17 +0000310 function form_multiselect($name = '', $options = array(), $selected = array(), $extra = '')
311 {
Adam Jackett664d25a2015-06-03 15:54:54 -0400312 $extra = _attributes_to_string($extra);
Andrey Andreevc19f3b22015-07-15 16:41:06 +0300313 if (stripos($extra, 'multiple') === FALSE)
Derek Jones26399292009-04-08 16:14:17 +0000314 {
315 $extra .= ' multiple="multiple"';
316 }
Barry Mienydd671972010-10-04 16:33:58 +0200317
Derek Jones26399292009-04-08 16:14:17 +0000318 return form_dropdown($name, $options, $selected, $extra);
319 }
320}
321
322// --------------------------------------------------------------------
323
Derek Allard2067d1a2008-11-13 22:59:24 +0000324if ( ! function_exists('form_dropdown'))
325{
Timothy Warren01b129a2012-04-27 11:36:50 -0400326 /**
327 * Drop-down Menu
328 *
Brennan Thompson40cd6002014-02-14 12:06:38 -0700329 * @param mixed $data
Andrey Andreev7c4d1062012-11-01 15:14:34 +0200330 * @param mixed $options
331 * @param mixed $selected
332 * @param mixed $extra
Timothy Warren01b129a2012-04-27 11:36:50 -0400333 * @return string
334 */
Brennan Thompson40cd6002014-02-14 12:06:38 -0700335 function form_dropdown($data = '', $options = array(), $selected = array(), $extra = '')
Derek Allard2067d1a2008-11-13 22:59:24 +0000336 {
Andrey Andreev15662dd2014-03-06 13:45:33 +0200337 $defaults = array();
Brennan Thompson82c78a92014-02-17 10:02:19 -0700338
Andrey Andreev15662dd2014-03-06 13:45:33 +0200339 if (is_array($data))
Andrey Andreev93a83c72012-03-26 21:24:02 +0300340 {
Andrey Andreev15662dd2014-03-06 13:45:33 +0200341 if (isset($data['selected']))
342 {
343 $selected = $data['selected'];
344 unset($data['selected']); // select tags don't have a selected attribute
345 }
346
347 if (isset($data['options']))
348 {
349 $options = $data['options'];
350 unset($data['options']); // select tags don't use an options attribute
351 }
352 }
353 else
354 {
355 $defaults = array('name' => $data);
Andrey Andreev93a83c72012-03-26 21:24:02 +0300356 }
357
Andrey Andreev582ebcb2012-10-27 00:52:15 +0300358 is_array($selected) OR $selected = array($selected);
Andrey Andreev15662dd2014-03-06 13:45:33 +0200359 is_array($options) OR $options = array($options);
Derek Allard2067d1a2008-11-13 22:59:24 +0000360
361 // If no selected state was submitted we will attempt to set it automatically
Andrey Andreev15662dd2014-03-06 13:45:33 +0200362 if (empty($selected))
Derek Allard2067d1a2008-11-13 22:59:24 +0000363 {
Andrey Andreev15662dd2014-03-06 13:45:33 +0200364 if (is_array($data))
365 {
366 if (isset($data['name'], $_POST[$data['name']]))
367 {
368 $selected = array($_POST[$data['name']]);
369 }
370 }
371 elseif (isset($_POST[$data]))
372 {
373 $selected = array($_POST[$data]);
374 }
Derek Allard2067d1a2008-11-13 22:59:24 +0000375 }
Brennan Thompson82c78a92014-02-17 10:02:19 -0700376
Brennan Thompson1d03ef42014-02-17 12:08:22 -0700377 $extra = _attributes_to_string($extra);
Brennan Thompson82c78a92014-02-17 10:02:19 -0700378
Andrey Andreevc19f3b22015-07-15 16:41:06 +0300379 $multiple = (count($selected) > 1 && stripos($extra, 'multiple') === FALSE) ? ' multiple="multiple"' : '';
Brennan Thompson82c78a92014-02-17 10:02:19 -0700380
Brennan Thompson1d03ef42014-02-17 12:08:22 -0700381 $form = '<select '.rtrim(_parse_form_attributes($data, $defaults)).$extra.$multiple.">\n";
Brennan Thompson82c78a92014-02-17 10:02:19 -0700382
Derek Allard2067d1a2008-11-13 22:59:24 +0000383 foreach ($options as $key => $val)
384 {
385 $key = (string) $key;
Derek Allard2067d1a2008-11-13 22:59:24 +0000386
Andrey Andreev6b114ae2012-07-13 12:05:52 +0300387 if (is_array($val))
Derek Allard78a5fc92009-02-05 16:34:35 +0000388 {
Andrey Andreev6b114ae2012-07-13 12:05:52 +0300389 if (empty($val))
390 {
391 continue;
392 }
393
Andrey Andreev8bf6bb62012-01-06 16:11:04 +0200394 $form .= '<optgroup label="'.$key."\">\n";
Derek Allard2067d1a2008-11-13 22:59:24 +0000395
Derek Allard78a5fc92009-02-05 16:34:35 +0000396 foreach ($val as $optgroup_key => $optgroup_val)
397 {
Andrey Andreev93a83c72012-03-26 21:24:02 +0300398 $sel = in_array($optgroup_key, $selected) ? ' selected="selected"' : '';
Andrey Andreev2c245612015-01-20 15:40:27 +0200399 $form .= '<option value="'.html_escape($optgroup_key).'"'.$sel.'>'
Brennan Thompson82c78a92014-02-17 10:02:19 -0700400 .(string) $optgroup_val."</option>\n";
Derek Allard78a5fc92009-02-05 16:34:35 +0000401 }
402
Andrey Andreev93a83c72012-03-26 21:24:02 +0300403 $form .= "</optgroup>\n";
Derek Allard78a5fc92009-02-05 16:34:35 +0000404 }
405 else
406 {
Andrey Andreev2c245612015-01-20 15:40:27 +0200407 $form .= '<option value="'.html_escape($key).'"'
Brennan Thompson82c78a92014-02-17 10:02:19 -0700408 .(in_array($key, $selected) ? ' selected="selected"' : '').'>'
409 .(string) $val."</option>\n";
Derek Allard78a5fc92009-02-05 16:34:35 +0000410 }
Derek Allard2067d1a2008-11-13 22:59:24 +0000411 }
Brennan Thompson82c78a92014-02-17 10:02:19 -0700412
Andrey Andreev93a83c72012-03-26 21:24:02 +0300413 return $form."</select>\n";
Derek Allard2067d1a2008-11-13 22:59:24 +0000414 }
415}
416
417// ------------------------------------------------------------------------
418
Derek Allard2067d1a2008-11-13 22:59:24 +0000419if ( ! function_exists('form_checkbox'))
420{
Timothy Warren01b129a2012-04-27 11:36:50 -0400421 /**
422 * Checkbox Field
423 *
424 * @param mixed
425 * @param string
426 * @param bool
Adam Jackett664d25a2015-06-03 15:54:54 -0400427 * @param mixed
Timothy Warren01b129a2012-04-27 11:36:50 -0400428 * @return string
429 */
Derek Allard2067d1a2008-11-13 22:59:24 +0000430 function form_checkbox($data = '', $value = '', $checked = FALSE, $extra = '')
431 {
Andrey Andreev93a83c72012-03-26 21:24:02 +0300432 $defaults = array('type' => 'checkbox', 'name' => ( ! is_array($data) ? $data : ''), 'value' => $value);
Derek Allard2067d1a2008-11-13 22:59:24 +0000433
Andrey Andreev93a83c72012-03-26 21:24:02 +0300434 if (is_array($data) && array_key_exists('checked', $data))
Derek Allard2067d1a2008-11-13 22:59:24 +0000435 {
436 $checked = $data['checked'];
437
Michiel Vugteveen910ff7a2012-06-06 20:03:14 +0200438 if ($checked == FALSE)
Derek Allard2067d1a2008-11-13 22:59:24 +0000439 {
440 unset($data['checked']);
441 }
442 else
443 {
444 $data['checked'] = 'checked';
445 }
446 }
447
Michiel Vugteveen910ff7a2012-06-06 20:03:14 +0200448 if ($checked == TRUE)
Derek Allard2067d1a2008-11-13 22:59:24 +0000449 {
450 $defaults['checked'] = 'checked';
451 }
452 else
453 {
454 unset($defaults['checked']);
455 }
456
Andrey Andreevc19f3b22015-07-15 16:41:06 +0300457 return '<input '._parse_form_attributes($data, $defaults)._attributes_to_string($extra)." />\n";
Derek Allard2067d1a2008-11-13 22:59:24 +0000458 }
459}
460
461// ------------------------------------------------------------------------
462
Derek Allard2067d1a2008-11-13 22:59:24 +0000463if ( ! function_exists('form_radio'))
464{
Timothy Warren01b129a2012-04-27 11:36:50 -0400465 /**
466 * Radio Button
467 *
468 * @param mixed
469 * @param string
470 * @param bool
Adam Jackett664d25a2015-06-03 15:54:54 -0400471 * @param mixed
Timothy Warren01b129a2012-04-27 11:36:50 -0400472 * @return string
473 */
Derek Allard2067d1a2008-11-13 22:59:24 +0000474 function form_radio($data = '', $value = '', $checked = FALSE, $extra = '')
475 {
Andrey Andreevea41c8a2014-02-26 18:31:02 +0200476 is_array($data) OR $data = array('name' => $data);
Derek Allard2067d1a2008-11-13 22:59:24 +0000477 $data['type'] = 'radio';
Adam Jackett664d25a2015-06-03 15:54:54 -0400478
Derek Allard2067d1a2008-11-13 22:59:24 +0000479 return form_checkbox($data, $value, $checked, $extra);
480 }
481}
482
483// ------------------------------------------------------------------------
484
Derek Allard2067d1a2008-11-13 22:59:24 +0000485if ( ! function_exists('form_submit'))
Barry Mienydd671972010-10-04 16:33:58 +0200486{
Timothy Warren01b129a2012-04-27 11:36:50 -0400487 /**
488 * Submit Button
489 *
490 * @param mixed
491 * @param string
Adam Jackett664d25a2015-06-03 15:54:54 -0400492 * @param mixed
Timothy Warren01b129a2012-04-27 11:36:50 -0400493 * @return string
494 */
Derek Allard2067d1a2008-11-13 22:59:24 +0000495 function form_submit($data = '', $value = '', $extra = '')
496 {
Andrey Andreevea41c8a2014-02-26 18:31:02 +0200497 $defaults = array(
498 'type' => 'submit',
499 'name' => is_array($data) ? '' : $data,
500 'value' => $value
501 );
502
Andrey Andreevc19f3b22015-07-15 16:41:06 +0300503 return '<input '._parse_form_attributes($data, $defaults)._attributes_to_string($extra)." />\n";
Derek Allard2067d1a2008-11-13 22:59:24 +0000504 }
505}
506
507// ------------------------------------------------------------------------
508
Derek Allard2067d1a2008-11-13 22:59:24 +0000509if ( ! function_exists('form_reset'))
510{
Timothy Warren01b129a2012-04-27 11:36:50 -0400511 /**
512 * Reset Button
513 *
514 * @param mixed
515 * @param string
Adam Jackett664d25a2015-06-03 15:54:54 -0400516 * @param mixed
Timothy Warren01b129a2012-04-27 11:36:50 -0400517 * @return string
518 */
Derek Allard2067d1a2008-11-13 22:59:24 +0000519 function form_reset($data = '', $value = '', $extra = '')
520 {
Andrey Andreevea41c8a2014-02-26 18:31:02 +0200521 $defaults = array(
522 'type' => 'reset',
523 'name' => is_array($data) ? '' : $data,
524 'value' => $value
525 );
526
Andrey Andreevc19f3b22015-07-15 16:41:06 +0300527 return '<input '._parse_form_attributes($data, $defaults)._attributes_to_string($extra)." />\n";
Derek Allard2067d1a2008-11-13 22:59:24 +0000528 }
529}
530
531// ------------------------------------------------------------------------
532
Derek Allard2067d1a2008-11-13 22:59:24 +0000533if ( ! function_exists('form_button'))
534{
Timothy Warren01b129a2012-04-27 11:36:50 -0400535 /**
536 * Form Button
537 *
538 * @param mixed
539 * @param string
Adam Jackett664d25a2015-06-03 15:54:54 -0400540 * @param mixed
Timothy Warren01b129a2012-04-27 11:36:50 -0400541 * @return string
542 */
Derek Allard2067d1a2008-11-13 22:59:24 +0000543 function form_button($data = '', $content = '', $extra = '')
544 {
Andrey Andreevea41c8a2014-02-26 18:31:02 +0200545 $defaults = array(
546 'name' => is_array($data) ? '' : $data,
547 'type' => 'button'
548 );
549
Andrey Andreev93a83c72012-03-26 21:24:02 +0300550 if (is_array($data) && isset($data['content']))
Derek Allard2067d1a2008-11-13 22:59:24 +0000551 {
552 $content = $data['content'];
553 unset($data['content']); // content is not an attribute
554 }
555
Andrey Andreevc19f3b22015-07-15 16:41:06 +0300556 return '<button '._parse_form_attributes($data, $defaults)._attributes_to_string($extra).'>'
557 .$content
558 ."</button>\n";
Derek Allard2067d1a2008-11-13 22:59:24 +0000559 }
560}
561
562// ------------------------------------------------------------------------
563
Derek Allard2067d1a2008-11-13 22:59:24 +0000564if ( ! function_exists('form_label'))
565{
Timothy Warren01b129a2012-04-27 11:36:50 -0400566 /**
567 * Form Label Tag
568 *
569 * @param string The text to appear onscreen
570 * @param string The id the label applies to
571 * @param string Additional attributes
572 * @return string
573 */
Derek Allard2067d1a2008-11-13 22:59:24 +0000574 function form_label($label_text = '', $id = '', $attributes = array())
575 {
576
577 $label = '<label';
578
Alex Bilbie773ccc32012-06-02 11:11:08 +0100579 if ($id !== '')
Derek Allard2067d1a2008-11-13 22:59:24 +0000580 {
Andrey Andreev93a83c72012-03-26 21:24:02 +0300581 $label .= ' for="'.$id.'"';
Derek Allard2067d1a2008-11-13 22:59:24 +0000582 }
583
Andrey Andreev93a83c72012-03-26 21:24:02 +0300584 if (is_array($attributes) && count($attributes) > 0)
Derek Allard2067d1a2008-11-13 22:59:24 +0000585 {
586 foreach ($attributes as $key => $val)
587 {
588 $label .= ' '.$key.'="'.$val.'"';
589 }
590 }
591
Andrey Andreev93a83c72012-03-26 21:24:02 +0300592 return $label.'>'.$label_text.'</label>';
Derek Allard2067d1a2008-11-13 22:59:24 +0000593 }
594}
595
596// ------------------------------------------------------------------------
Timothy Warren01b129a2012-04-27 11:36:50 -0400597
Derek Allard2067d1a2008-11-13 22:59:24 +0000598if ( ! function_exists('form_fieldset'))
599{
Timothy Warren01b129a2012-04-27 11:36:50 -0400600 /**
601 * Fieldset Tag
602 *
603 * Used to produce <fieldset><legend>text</legend>. To close fieldset
604 * use form_fieldset_close()
605 *
606 * @param string The legend text
vlakoffea19bc42013-07-27 10:07:43 +0200607 * @param array Additional attributes
Timothy Warren01b129a2012-04-27 11:36:50 -0400608 * @return string
609 */
Derek Allard2067d1a2008-11-13 22:59:24 +0000610 function form_fieldset($legend_text = '', $attributes = array())
611 {
vlakoffea19bc42013-07-27 10:07:43 +0200612 $fieldset = '<fieldset'._attributes_to_string($attributes).">\n";
Alex Bilbie773ccc32012-06-02 11:11:08 +0100613 if ($legend_text !== '')
Derek Allard2067d1a2008-11-13 22:59:24 +0000614 {
Andrey Andreev93a83c72012-03-26 21:24:02 +0300615 return $fieldset.'<legend>'.$legend_text."</legend>\n";
Derek Allard2067d1a2008-11-13 22:59:24 +0000616 }
617
618 return $fieldset;
619 }
620}
621
622// ------------------------------------------------------------------------
623
Derek Allard2067d1a2008-11-13 22:59:24 +0000624if ( ! function_exists('form_fieldset_close'))
625{
Timothy Warren01b129a2012-04-27 11:36:50 -0400626 /**
627 * Fieldset Close Tag
628 *
629 * @param string
630 * @return string
631 */
Derek Allard2067d1a2008-11-13 22:59:24 +0000632 function form_fieldset_close($extra = '')
633 {
Andrey Andreev93a83c72012-03-26 21:24:02 +0300634 return '</fieldset>'.$extra;
Derek Allard2067d1a2008-11-13 22:59:24 +0000635 }
636}
637
638// ------------------------------------------------------------------------
639
Derek Allard2067d1a2008-11-13 22:59:24 +0000640if ( ! function_exists('form_close'))
641{
Timothy Warren01b129a2012-04-27 11:36:50 -0400642 /**
643 * Form Close Tag
644 *
645 * @param string
646 * @return string
647 */
Derek Allard2067d1a2008-11-13 22:59:24 +0000648 function form_close($extra = '')
649 {
Andrey Andreev93a83c72012-03-26 21:24:02 +0300650 return '</form>'.$extra;
Derek Allard2067d1a2008-11-13 22:59:24 +0000651 }
652}
653
654// ------------------------------------------------------------------------
655
Derek Allard2067d1a2008-11-13 22:59:24 +0000656if ( ! function_exists('form_prep'))
657{
Timothy Warren01b129a2012-04-27 11:36:50 -0400658 /**
659 * Form Prep
660 *
661 * Formats text so that it can be safely placed in a form field in the event it has HTML tags.
662 *
Andrey Andreev2c245612015-01-20 15:40:27 +0200663 * @deprecated 3.0.0 An alias for html_escape()
Andrey Andreev7c4d1062012-11-01 15:14:34 +0200664 * @param string|string[] $str Value to escape
Andrey Andreev7c4d1062012-11-01 15:14:34 +0200665 * @return string|string[] Escaped values
Timothy Warren01b129a2012-04-27 11:36:50 -0400666 */
Andrey Andreev2c245612015-01-20 15:40:27 +0200667 function form_prep($str)
Derek Allard2067d1a2008-11-13 22:59:24 +0000668 {
Andrey Andreev2c245612015-01-20 15:40:27 +0200669 return html_escape($str, TRUE);
Derek Allard2067d1a2008-11-13 22:59:24 +0000670 }
671}
672
673// ------------------------------------------------------------------------
674
Derek Allard2067d1a2008-11-13 22:59:24 +0000675if ( ! function_exists('set_value'))
676{
Timothy Warren01b129a2012-04-27 11:36:50 -0400677 /**
678 * Form Value
679 *
680 * Grabs a value from the POST array for the specified field so you can
681 * re-populate an input field or textarea. If Form Validation
682 * is active it retrieves the info from the validation class
683 *
Andrey Andreev7c4d1062012-11-01 15:14:34 +0200684 * @param string $field Field name
685 * @param string $default Default value
Adrian Voicufa61fb22015-02-05 15:46:12 +0200686 * @param bool $html_escape Whether to escape HTML special characters or not
Andrey Andreev7c4d1062012-11-01 15:14:34 +0200687 * @return string
Timothy Warren01b129a2012-04-27 11:36:50 -0400688 */
Adrian Voicu86e6a192015-02-05 13:51:26 +0200689 function set_value($field, $default = '', $html_escape = TRUE)
Derek Allard2067d1a2008-11-13 22:59:24 +0000690 {
nisheeth-barthwal77236e02013-03-25 23:42:36 +0530691 $CI =& get_instance();
Derek Allard2067d1a2008-11-13 22:59:24 +0000692
nisheeth-barthwal47ea5a82013-03-26 18:57:28 +0530693 $value = (isset($CI->form_validation) && is_object($CI->form_validation) && $CI->form_validation->has_rule($field))
694 ? $CI->form_validation->set_value($field, $default)
695 : $CI->input->post($field, FALSE);
Andrey Andreev7df66342015-02-05 15:58:09 +0200696
Adrian Voicu86e6a192015-02-05 13:51:26 +0200697 isset($value) OR $value = $default;
698 return ($html_escape) ? html_escape($value) : $value;
Derek Allard2067d1a2008-11-13 22:59:24 +0000699 }
700}
701
702// ------------------------------------------------------------------------
703
Derek Allard2067d1a2008-11-13 22:59:24 +0000704if ( ! function_exists('set_select'))
705{
Timothy Warren01b129a2012-04-27 11:36:50 -0400706 /**
707 * Set Select
708 *
709 * Let's you set the selected value of a <select> menu via data in the POST array.
710 * If Form Validation is active it retrieves the info from the validation class
711 *
712 * @param string
713 * @param string
714 * @param bool
715 * @return string
716 */
Andrey Andreev2c245612015-01-20 15:40:27 +0200717 function set_select($field, $value = '', $default = FALSE)
Derek Allard2067d1a2008-11-13 22:59:24 +0000718 {
Andrey Andreev67f6a5e2013-09-13 16:21:31 +0300719 $CI =& get_instance();
Derek Allard2067d1a2008-11-13 22:59:24 +0000720
Andrey Andreev67f6a5e2013-09-13 16:21:31 +0300721 if (isset($CI->form_validation) && is_object($CI->form_validation) && $CI->form_validation->has_rule($field))
Derek Allard2067d1a2008-11-13 22:59:24 +0000722 {
Andrey Andreev67f6a5e2013-09-13 16:21:31 +0300723 return $CI->form_validation->set_select($field, $value, $default);
724 }
725 elseif (($input = $CI->input->post($field, FALSE)) === NULL)
726 {
727 return ($default === TRUE) ? ' selected="selected"' : '';
Derek Allard2067d1a2008-11-13 22:59:24 +0000728 }
Andrey Andreeva587a932013-10-23 19:57:46 +0300729
730 $value = (string) $value;
731 if (is_array($input))
Andrey Andreevd3b7e242013-09-13 18:36:29 +0300732 {
Andrey Andreeva587a932013-10-23 19:57:46 +0300733 // Note: in_array('', array(0)) returns TRUE, do not use it
734 foreach ($input as &$v)
735 {
736 if ($value === $v)
737 {
738 return ' selected="selected"';
739 }
740 }
741
742 return '';
Andrey Andreevd3b7e242013-09-13 18:36:29 +0300743 }
Derek Allard2067d1a2008-11-13 22:59:24 +0000744
Andrey Andreevd3b7e242013-09-13 18:36:29 +0300745 return ($input === $value) ? ' selected="selected"' : '';
Derek Allard2067d1a2008-11-13 22:59:24 +0000746 }
747}
748
749// ------------------------------------------------------------------------
750
Derek Allard2067d1a2008-11-13 22:59:24 +0000751if ( ! function_exists('set_checkbox'))
752{
Timothy Warren01b129a2012-04-27 11:36:50 -0400753 /**
754 * Set Checkbox
755 *
756 * Let's you set the selected value of a checkbox via the value in the POST array.
757 * If Form Validation is active it retrieves the info from the validation class
758 *
759 * @param string
760 * @param string
761 * @param bool
762 * @return string
763 */
Andrey Andreev2c245612015-01-20 15:40:27 +0200764 function set_checkbox($field, $value = '', $default = FALSE)
Derek Allard2067d1a2008-11-13 22:59:24 +0000765 {
Andrey Andreevae50f552013-09-13 16:17:41 +0300766 $CI =& get_instance();
Derek Allard2067d1a2008-11-13 22:59:24 +0000767
Andrey Andreevae50f552013-09-13 16:17:41 +0300768 if (isset($CI->form_validation) && is_object($CI->form_validation) && $CI->form_validation->has_rule($field))
Barry Mienydd671972010-10-04 16:33:58 +0200769 {
Andrey Andreevae50f552013-09-13 16:17:41 +0300770 return $CI->form_validation->set_checkbox($field, $value, $default);
771 }
772 elseif (($input = $CI->input->post($field, FALSE)) === NULL)
773 {
774 return ($default === TRUE) ? ' checked="checked"' : '';
Derek Allard2067d1a2008-11-13 22:59:24 +0000775 }
Andrey Andreeva587a932013-10-23 19:57:46 +0300776
777 $value = (string) $value;
778 if (is_array($input))
Andrey Andreeve8a23a52013-09-13 18:29:29 +0300779 {
Andrey Andreeva587a932013-10-23 19:57:46 +0300780 // Note: in_array('', array(0)) returns TRUE, do not use it
781 foreach ($input as &$v)
782 {
783 if ($value === $v)
784 {
785 return ' checked="checked"';
786 }
787 }
788
789 return '';
Andrey Andreeve8a23a52013-09-13 18:29:29 +0300790 }
Derek Allard2067d1a2008-11-13 22:59:24 +0000791
Andrey Andreevae50f552013-09-13 16:17:41 +0300792 return ($input === $value) ? ' checked="checked"' : '';
Derek Allard2067d1a2008-11-13 22:59:24 +0000793 }
794}
795
796// ------------------------------------------------------------------------
797
Derek Allard2067d1a2008-11-13 22:59:24 +0000798if ( ! function_exists('set_radio'))
799{
Timothy Warren01b129a2012-04-27 11:36:50 -0400800 /**
801 * Set Radio
802 *
803 * Let's you set the selected value of a radio field via info in the POST array.
804 * If Form Validation is active it retrieves the info from the validation class
805 *
Andrey Andreevae50f552013-09-13 16:17:41 +0300806 * @param string $field
807 * @param string $value
808 * @param bool $default
Timothy Warren01b129a2012-04-27 11:36:50 -0400809 * @return string
810 */
Andrey Andreev2c245612015-01-20 15:40:27 +0200811 function set_radio($field, $value = '', $default = FALSE)
Derek Allard2067d1a2008-11-13 22:59:24 +0000812 {
Andrey Andreevae50f552013-09-13 16:17:41 +0300813 $CI =& get_instance();
Derek Allard2067d1a2008-11-13 22:59:24 +0000814
Andrey Andreevae50f552013-09-13 16:17:41 +0300815 if (isset($CI->form_validation) && is_object($CI->form_validation) && $CI->form_validation->has_rule($field))
Derek Allard2067d1a2008-11-13 22:59:24 +0000816 {
Andrey Andreevae50f552013-09-13 16:17:41 +0300817 return $CI->form_validation->set_radio($field, $value, $default);
818 }
819 elseif (($input = $CI->input->post($field, FALSE)) === NULL)
820 {
821 return ($default === TRUE) ? ' checked="checked"' : '';
Derek Allard2067d1a2008-11-13 22:59:24 +0000822 }
823
Andrey Andreeva587a932013-10-23 19:57:46 +0300824 return ($input === (string) $value) ? ' checked="checked"' : '';
Derek Allard2067d1a2008-11-13 22:59:24 +0000825 }
826}
827
828// ------------------------------------------------------------------------
829
Derek Allard2067d1a2008-11-13 22:59:24 +0000830if ( ! function_exists('form_error'))
831{
Timothy Warren01b129a2012-04-27 11:36:50 -0400832 /**
833 * Form Error
834 *
835 * Returns the error for a specific form field. This is a helper for the
836 * form validation class.
837 *
838 * @param string
839 * @param string
840 * @param string
841 * @return string
842 */
Derek Allard2067d1a2008-11-13 22:59:24 +0000843 function form_error($field = '', $prefix = '', $suffix = '')
844 {
845 if (FALSE === ($OBJ =& _get_validation_object()))
846 {
847 return '';
848 }
849
850 return $OBJ->error($field, $prefix, $suffix);
851 }
852}
853
854// ------------------------------------------------------------------------
855
Derek Allard2067d1a2008-11-13 22:59:24 +0000856if ( ! function_exists('validation_errors'))
857{
Timothy Warren01b129a2012-04-27 11:36:50 -0400858 /**
859 * Validation Error String
860 *
861 * Returns all the errors associated with a form submission. This is a helper
862 * function for the form validation class.
863 *
864 * @param string
865 * @param string
866 * @return string
867 */
Derek Allard2067d1a2008-11-13 22:59:24 +0000868 function validation_errors($prefix = '', $suffix = '')
869 {
870 if (FALSE === ($OBJ =& _get_validation_object()))
Greg Akerc83bea62011-04-23 12:12:57 -0500871 {
Derek Allard2067d1a2008-11-13 22:59:24 +0000872 return '';
873 }
874
875 return $OBJ->error_string($prefix, $suffix);
876 }
877}
878
879// ------------------------------------------------------------------------
880
Derek Allard2067d1a2008-11-13 22:59:24 +0000881if ( ! function_exists('_parse_form_attributes'))
882{
Timothy Warren01b129a2012-04-27 11:36:50 -0400883 /**
884 * Parse the form attributes
885 *
886 * Helper function used by some of the form helpers
887 *
Andrey Andreev7c4d1062012-11-01 15:14:34 +0200888 * @param array $attributes List of attributes
889 * @param array $default Default values
Timothy Warren01b129a2012-04-27 11:36:50 -0400890 * @return string
891 */
Derek Allard2067d1a2008-11-13 22:59:24 +0000892 function _parse_form_attributes($attributes, $default)
893 {
894 if (is_array($attributes))
895 {
896 foreach ($default as $key => $val)
897 {
898 if (isset($attributes[$key]))
899 {
900 $default[$key] = $attributes[$key];
901 unset($attributes[$key]);
902 }
903 }
904
905 if (count($attributes) > 0)
906 {
907 $default = array_merge($default, $attributes);
908 }
909 }
910
911 $att = '';
Barry Mienydd671972010-10-04 16:33:58 +0200912
Derek Allard2067d1a2008-11-13 22:59:24 +0000913 foreach ($default as $key => $val)
914 {
Alex Bilbie773ccc32012-06-02 11:11:08 +0100915 if ($key === 'value')
Derek Allard2067d1a2008-11-13 22:59:24 +0000916 {
Andrey Andreev2c245612015-01-20 15:40:27 +0200917 $val = html_escape($val);
Derek Allard2067d1a2008-11-13 22:59:24 +0000918 }
Andrey Andreev60b97142012-10-25 16:59:17 +0300919 elseif ($key === 'name' && ! strlen($default['name']))
920 {
921 continue;
922 }
Derek Allard2067d1a2008-11-13 22:59:24 +0000923
Andrey Andreev93a83c72012-03-26 21:24:02 +0300924 $att .= $key.'="'.$val.'" ';
Derek Allard2067d1a2008-11-13 22:59:24 +0000925 }
926
927 return $att;
928 }
929}
930
931// ------------------------------------------------------------------------
932
Derek Allard2067d1a2008-11-13 22:59:24 +0000933if ( ! function_exists('_attributes_to_string'))
934{
Timothy Warren01b129a2012-04-27 11:36:50 -0400935 /**
936 * Attributes To String
937 *
938 * Helper function used by some of the form helpers
939 *
940 * @param mixed
Timothy Warren01b129a2012-04-27 11:36:50 -0400941 * @return string
942 */
vlakoffea19bc42013-07-27 10:07:43 +0200943 function _attributes_to_string($attributes)
Derek Allard2067d1a2008-11-13 22:59:24 +0000944 {
vlakoffbb8b0892013-07-28 22:35:04 +0200945 if (empty($attributes))
946 {
947 return '';
948 }
949
vlakoffea19bc42013-07-27 10:07:43 +0200950 if (is_object($attributes))
Derek Allard2067d1a2008-11-13 22:59:24 +0000951 {
Andrey Andreev93a83c72012-03-26 21:24:02 +0300952 $attributes = (array) $attributes;
Derek Allard2067d1a2008-11-13 22:59:24 +0000953 }
954
vlakoffea19bc42013-07-27 10:07:43 +0200955 if (is_array($attributes))
Derek Allard2067d1a2008-11-13 22:59:24 +0000956 {
Derek Allard3241d732009-09-17 12:17:45 +0000957 $atts = '';
Derek Allard2067d1a2008-11-13 22:59:24 +0000958
Derek Allard3241d732009-09-17 12:17:45 +0000959 foreach ($attributes as $key => $val)
960 {
961 $atts .= ' '.$key.'="'.$val.'"';
962 }
963
964 return $atts;
Derek Allard2067d1a2008-11-13 22:59:24 +0000965 }
vlakoffea19bc42013-07-27 10:07:43 +0200966
vlakofff7464752013-07-28 22:23:21 +0200967 if (is_string($attributes))
968 {
Brennan Thompson7a772e52014-02-16 19:22:54 -0700969 return ' '.$attributes;
vlakofff7464752013-07-28 22:23:21 +0200970 }
971
vlakoffea19bc42013-07-27 10:07:43 +0200972 return FALSE;
Derek Allard2067d1a2008-11-13 22:59:24 +0000973 }
974}
975
976// ------------------------------------------------------------------------
977
Derek Allard2067d1a2008-11-13 22:59:24 +0000978if ( ! function_exists('_get_validation_object'))
979{
Timothy Warren01b129a2012-04-27 11:36:50 -0400980 /**
981 * Validation Object
982 *
983 * Determines what the form validation class was instantiated as, fetches
984 * the object and returns it.
985 *
986 * @return mixed
987 */
Derek Allard2067d1a2008-11-13 22:59:24 +0000988 function &_get_validation_object()
989 {
990 $CI =& get_instance();
991
Greg Aker0c9ee4a2011-04-20 09:40:17 -0500992 // We set this as a variable since we're returning by reference.
Derek Allard2067d1a2008-11-13 22:59:24 +0000993 $return = FALSE;
Andrey Andreev8bf6bb62012-01-06 16:11:04 +0200994
Andrey Andreev519f87a2013-07-23 17:16:10 +0300995 if (FALSE !== ($object = $CI->load->is_loaded('Form_validation')))
Derek Allard2067d1a2008-11-13 22:59:24 +0000996 {
Greg Aker0c9ee4a2011-04-20 09:40:17 -0500997 if ( ! isset($CI->$object) OR ! is_object($CI->$object))
998 {
999 return $return;
1000 }
Andrey Andreev8bf6bb62012-01-06 16:11:04 +02001001
Greg Aker0c9ee4a2011-04-20 09:40:17 -05001002 return $CI->$object;
Derek Allard2067d1a2008-11-13 22:59:24 +00001003 }
Andrey Andreev8bf6bb62012-01-06 16:11:04 +02001004
Greg Aker0c9ee4a2011-04-20 09:40:17 -05001005 return $return;
Derek Allard2067d1a2008-11-13 22:59:24 +00001006 }
1007}