Take two:
[www-register-wizard.git] / helpers / form_helper.php
1 <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');\r
2 /**\r
3  * CodeIgniter\r
4  *\r
5  * An open source application development framework for PHP 4.3.2 or newer\r
6  *\r
7  * @package             CodeIgniter\r
8  * @author              ExpressionEngine Dev Team\r
9  * @copyright   Copyright (c) 2008, EllisLab, Inc.\r
10  * @license             http://codeigniter.com/user_guide/license.html\r
11  * @link                http://codeigniter.com\r
12  * @since               Version 1.0\r
13  * @filesource\r
14  */\r
15 \r
16 // ------------------------------------------------------------------------\r
17 \r
18 /**\r
19  * CodeIgniter Form Helpers\r
20  *\r
21  * @package             CodeIgniter\r
22  * @subpackage  Helpers\r
23  * @category    Helpers\r
24  * @author              ExpressionEngine Dev Team\r
25  * @link                http://codeigniter.com/user_guide/helpers/form_helper.html\r
26  */\r
27 \r
28 // ------------------------------------------------------------------------\r
29 \r
30 /**\r
31  * Form Declaration\r
32  *\r
33  * Creates the opening portion of the form.\r
34  *\r
35  * @access      public\r
36  * @param       string  the URI segments of the form destination\r
37  * @param       array   a key/value pair of attributes\r
38  * @param       array   a key/value pair hidden data\r
39  * @return      string\r
40  */     \r
41 if ( ! function_exists('form_open'))\r
42 {\r
43         function form_open($action = '', $attributes = '', $hidden = array())\r
44         {\r
45                 $CI =& get_instance();\r
46 \r
47                 if ($attributes == '')\r
48                 {\r
49                         $attributes = 'method="post"';\r
50                 }\r
51 \r
52                 $action = ( strpos($action, '://') === FALSE) ? $CI->config->site_url($action) : $action;\r
53 \r
54                 $form = '<form action="'.$action.'"';\r
55         \r
56                 $form .= _attributes_to_string($attributes, TRUE);\r
57         \r
58                 $form .= '>';\r
59 \r
60                 if (is_array($hidden) AND count($hidden) > 0)\r
61                 {\r
62                         $form .= form_hidden($hidden);\r
63                 }\r
64 \r
65                 return $form;\r
66         }\r
67 }\r
68 \r
69 // ------------------------------------------------------------------------\r
70 \r
71 /**\r
72  * Form Declaration - Multipart type\r
73  *\r
74  * Creates the opening portion of the form, but with "multipart/form-data".\r
75  *\r
76  * @access      public\r
77  * @param       string  the URI segments of the form destination\r
78  * @param       array   a key/value pair of attributes\r
79  * @param       array   a key/value pair hidden data\r
80  * @return      string\r
81  */\r
82 if ( ! function_exists('form_open_multipart'))\r
83 {\r
84         function form_open_multipart($action, $attributes = array(), $hidden = array())\r
85         {\r
86                 $attributes['enctype'] = 'multipart/form-data';\r
87                 return form_open($action, $attributes, $hidden);\r
88         }\r
89 }\r
90 \r
91 // ------------------------------------------------------------------------\r
92 \r
93 /**\r
94  * Hidden Input Field\r
95  *\r
96  * Generates hidden fields.  You can pass a simple key/value string or an associative\r
97  * array with multiple values.\r
98  *\r
99  * @access      public\r
100  * @param       mixed\r
101  * @param       string\r
102  * @return      string\r
103  */\r
104 if ( ! function_exists('form_hidden'))\r
105 {\r
106         function form_hidden($name, $value = '')\r
107         {\r
108                 if ( ! is_array($name))\r
109                 {\r
110                         return '<input type="hidden" name="'.$name.'" value="'.form_prep($value).'" />';\r
111                 }\r
112 \r
113                 $form = '';\r
114 \r
115                 foreach ($name as $name => $value)\r
116                 {\r
117                         $form .= "\n";\r
118                         $form .= '<input type="hidden" name="'.$name.'" value="'.form_prep($value).'" />';\r
119                 }\r
120 \r
121                 return $form;\r
122         }\r
123 }\r
124 \r
125 // ------------------------------------------------------------------------\r
126 \r
127 /**\r
128  * Text Input Field\r
129  *\r
130  * @access      public\r
131  * @param       mixed\r
132  * @param       string\r
133  * @param       string\r
134  * @return      string\r
135  */\r
136 if ( ! function_exists('form_input'))\r
137 {\r
138         function form_input($data = '', $value = '', $extra = '')\r
139         {\r
140                 $defaults = array('type' => 'text', 'name' => (( ! is_array($data)) ? $data : ''), 'value' => $value);\r
141 \r
142                 return "<input "._parse_form_attributes($data, $defaults).$extra." />";\r
143         }\r
144 }\r
145 \r
146 // ------------------------------------------------------------------------\r
147 \r
148 /**\r
149  * Password Field\r
150  *\r
151  * Identical to the input function but adds the "password" type\r
152  *\r
153  * @access      public\r
154  * @param       mixed\r
155  * @param       string\r
156  * @param       string\r
157  * @return      string\r
158  */\r
159 if ( ! function_exists('form_password'))\r
160 {\r
161         function form_password($data = '', $value = '', $extra = '')\r
162         {\r
163                 if ( ! is_array($data))\r
164                 {\r
165                         $data = array('name' => $data);\r
166                 }\r
167 \r
168                 $data['type'] = 'password';\r
169                 return form_input($data, $value, $extra);\r
170         }\r
171 }\r
172 \r
173 // ------------------------------------------------------------------------\r
174 \r
175 /**\r
176  * Upload Field\r
177  *\r
178  * Identical to the input function but adds the "file" type\r
179  *\r
180  * @access      public\r
181  * @param       mixed\r
182  * @param       string\r
183  * @param       string\r
184  * @return      string\r
185  */\r
186 if ( ! function_exists('form_upload'))\r
187 {\r
188         function form_upload($data = '', $value = '', $extra = '')\r
189         {\r
190                 if ( ! is_array($data))\r
191                 {\r
192                         $data = array('name' => $data);\r
193                 }\r
194 \r
195                 $data['type'] = 'file';\r
196                 return form_input($data, $value, $extra);\r
197         }\r
198 }\r
199 \r
200 // ------------------------------------------------------------------------\r
201 \r
202 /**\r
203  * Textarea field\r
204  *\r
205  * @access      public\r
206  * @param       mixed\r
207  * @param       string\r
208  * @param       string\r
209  * @return      string\r
210  */\r
211 if ( ! function_exists('form_textarea'))\r
212 {\r
213         function form_textarea($data = '', $value = '', $extra = '')\r
214         {\r
215                 $defaults = array('name' => (( ! is_array($data)) ? $data : ''), 'cols' => '90', 'rows' => '12');\r
216 \r
217                 if ( ! is_array($data) OR ! isset($data['value']))\r
218                 {\r
219                         $val = $value;\r
220                 }\r
221                 else\r
222                 {\r
223                         $val = $data['value']; \r
224                         unset($data['value']); // textareas don't use the value attribute\r
225                 }\r
226 \r
227                 return "<textarea "._parse_form_attributes($data, $defaults).$extra.">".$val."</textarea>";\r
228         }\r
229 }\r
230 \r
231 // ------------------------------------------------------------------------\r
232 \r
233 /**\r
234  * Drop-down Menu\r
235  *\r
236  * @access      public\r
237  * @param       string\r
238  * @param       array\r
239  * @param       string\r
240  * @param       string\r
241  * @return      string\r
242  */\r
243 if ( ! function_exists('form_dropdown'))\r
244 {\r
245         function form_dropdown($name = '', $options = array(), $selected = array(), $extra = '')\r
246         {\r
247                 if ( ! is_array($selected))\r
248                 {\r
249                         $selected = array($selected);\r
250                 }\r
251 \r
252                 // If no selected state was submitted we will attempt to set it automatically\r
253                 if (count($selected) === 0)\r
254                 {\r
255                         // If the form name appears in the $_POST array we have a winner!\r
256                         if (isset($_POST[$name]))\r
257                         {\r
258                                 $selected = array($_POST[$name]);\r
259                         }\r
260                 }\r
261 \r
262                 if ($extra != '') $extra = ' '.$extra;\r
263 \r
264                 $multiple = (count($selected) > 1 && strpos($extra, 'multiple') === FALSE) ? ' multiple="multiple"' : '';\r
265 \r
266                 $form = '<select name="'.$name.'"'.$extra.$multiple.">\n";\r
267         \r
268                 foreach ($options as $key => $val)\r
269                 {\r
270                         $key = (string) $key;\r
271                         $val = (string) $val;\r
272 \r
273                         $sel = (in_array($key, $selected))?' selected="selected"':'';\r
274 \r
275                         $form .= '<option value="'.$key.'"'.$sel.'>'.$val."</option>\n";\r
276                 }\r
277 \r
278                 $form .= '</select>';\r
279 \r
280                 return $form;\r
281         }\r
282 }\r
283 \r
284 // ------------------------------------------------------------------------\r
285 \r
286 /**\r
287  * Checkbox Field\r
288  *\r
289  * @access      public\r
290  * @param       mixed\r
291  * @param       string\r
292  * @param       bool\r
293  * @param       string\r
294  * @return      string\r
295  */\r
296 if ( ! function_exists('form_checkbox'))\r
297 {\r
298         function form_checkbox($data = '', $value = '', $checked = FALSE, $extra = '')\r
299         {\r
300                 $defaults = array('type' => 'checkbox', 'name' => (( ! is_array($data)) ? $data : ''), 'value' => $value);\r
301 \r
302                 if (is_array($data) AND array_key_exists('checked', $data))\r
303                 {\r
304                         $checked = $data['checked'];\r
305 \r
306                         if ($checked == FALSE)\r
307                         {\r
308                                 unset($data['checked']);\r
309                         }\r
310                         else\r
311                         {\r
312                                 $data['checked'] = 'checked';\r
313                         }\r
314                 }\r
315 \r
316                 if ($checked == TRUE)\r
317                 {\r
318                         $defaults['checked'] = 'checked';\r
319                 }\r
320                 else\r
321                 {\r
322                         unset($defaults['checked']);\r
323                 }\r
324 \r
325                 return "<input "._parse_form_attributes($data, $defaults).$extra." />";\r
326         }\r
327 }\r
328 \r
329 // ------------------------------------------------------------------------\r
330 \r
331 /**\r
332  * Radio Button\r
333  *\r
334  * @access      public\r
335  * @param       mixed\r
336  * @param       string\r
337  * @param       bool\r
338  * @param       string\r
339  * @return      string\r
340  */\r
341 if ( ! function_exists('form_radio'))\r
342 {\r
343         function form_radio($data = '', $value = '', $checked = FALSE, $extra = '')\r
344         {\r
345                 if ( ! is_array($data))\r
346                 {       \r
347                         $data = array('name' => $data);\r
348                 }\r
349 \r
350                 $data['type'] = 'radio';\r
351                 return form_checkbox($data, $value, $checked, $extra);\r
352         }\r
353 }\r
354 \r
355 // ------------------------------------------------------------------------\r
356 \r
357 /**\r
358  * Submit Button\r
359  *\r
360  * @access      public\r
361  * @param       mixed\r
362  * @param       string\r
363  * @param       string\r
364  * @return      string\r
365  */\r
366 if ( ! function_exists('form_submit'))\r
367 {       \r
368         function form_submit($data = '', $value = '', $extra = '')\r
369         {\r
370                 $defaults = array('type' => 'submit', 'name' => (( ! is_array($data)) ? $data : ''), 'value' => $value);\r
371 \r
372                 return "<input "._parse_form_attributes($data, $defaults).$extra." />";\r
373         }\r
374 }\r
375 \r
376 // ------------------------------------------------------------------------\r
377 \r
378 /**\r
379  * Reset Button\r
380  *\r
381  * @access      public\r
382  * @param       mixed\r
383  * @param       string\r
384  * @param       string\r
385  * @return      string\r
386  */\r
387 if ( ! function_exists('form_reset'))\r
388 {\r
389         function form_reset($data = '', $value = '', $extra = '')\r
390         {\r
391                 $defaults = array('type' => 'reset', 'name' => (( ! is_array($data)) ? $data : ''), 'value' => $value);\r
392 \r
393                 return "<input "._parse_form_attributes($data, $defaults).$extra." />";\r
394         }\r
395 }\r
396 \r
397 // ------------------------------------------------------------------------\r
398 \r
399 /**\r
400  * Form Button\r
401  *\r
402  * @access      public\r
403  * @param       mixed\r
404  * @param       string\r
405  * @param       string\r
406  * @return      string\r
407  */\r
408 if ( ! function_exists('form_button'))\r
409 {\r
410         function form_button($data = '', $content = '', $extra = '')\r
411         {\r
412                 $defaults = array('name' => (( ! is_array($data)) ? $data : ''), 'type' => 'submit');\r
413 \r
414                 if ( is_array($data) AND isset($data['content']))\r
415                 {\r
416                         $content = $data['content'];\r
417                         unset($data['content']); // content is not an attribute\r
418                 }\r
419 \r
420                 return "<button "._parse_form_attributes($data, $defaults).$extra.">".$content."</button>";\r
421         }\r
422 }\r
423 \r
424 // ------------------------------------------------------------------------\r
425 \r
426 /**\r
427  * Form Label Tag\r
428  *\r
429  * @access      public\r
430  * @param       string  The text to appear onscreen\r
431  * @param       string  The id the label applies to\r
432  * @param       string  Additional attributes\r
433  * @return      string\r
434  */\r
435 if ( ! function_exists('form_label'))\r
436 {\r
437         function form_label($label_text = '', $id = '', $attributes = array())\r
438         {\r
439 \r
440                 $label = '<label';\r
441 \r
442                 if ($id != '')\r
443                 {\r
444                          $label .= " for=\"$id\"";\r
445                 }\r
446 \r
447                 if (is_array($attributes) AND count($attributes) > 0)\r
448                 {\r
449                         foreach ($attributes as $key => $val)\r
450                         {\r
451                                 $label .= ' '.$key.'="'.$val.'"';\r
452                         }\r
453                 }\r
454 \r
455                 $label .= ">$label_text</label>";\r
456 \r
457                 return $label;\r
458         }\r
459 }\r
460 \r
461 // ------------------------------------------------------------------------\r
462 /**\r
463  * Fieldset Tag\r
464  *\r
465  * Used to produce <fieldset><legend>text</legend>.  To close fieldset\r
466  * use form_fieldset_close()\r
467  *\r
468  * @access      public\r
469  * @param       string  The legend text\r
470  * @param       string  Additional attributes\r
471  * @return      string\r
472  */\r
473 if ( ! function_exists('form_fieldset'))\r
474 {\r
475         function form_fieldset($legend_text = '', $attributes = array())\r
476         {\r
477                 $fieldset = "<fieldset";\r
478 \r
479                 $fieldset .= _attributes_to_string($attributes, FALSE);\r
480 \r
481                 $fieldset .= ">\n";\r
482 \r
483                 if ($legend_text != '')\r
484                 {\r
485                         $fieldset .= "<legend>$legend_text</legend>\n";\r
486                 }\r
487 \r
488                 return $fieldset;\r
489         }\r
490 }\r
491 \r
492 // ------------------------------------------------------------------------\r
493 \r
494 /**\r
495  * Fieldset Close Tag\r
496  *\r
497  * @access      public\r
498  * @param       string\r
499  * @return      string\r
500  */\r
501 if ( ! function_exists('form_fieldset_close'))\r
502 {\r
503         function form_fieldset_close($extra = '')\r
504         {\r
505                 return "</fieldset>".$extra;\r
506         }\r
507 }\r
508 \r
509 // ------------------------------------------------------------------------\r
510 \r
511 /**\r
512  * Form Close Tag\r
513  *\r
514  * @access      public\r
515  * @param       string\r
516  * @return      string\r
517  */\r
518 if ( ! function_exists('form_close'))\r
519 {\r
520         function form_close($extra = '')\r
521         {\r
522                 return "</form>".$extra;\r
523         }\r
524 }\r
525 \r
526 // ------------------------------------------------------------------------\r
527 \r
528 /**\r
529  * Form Prep\r
530  *\r
531  * Formats text so that it can be safely placed in a form field in the event it has HTML tags.\r
532  *\r
533  * @access      public\r
534  * @param       string\r
535  * @return      string\r
536  */\r
537 if ( ! function_exists('form_prep'))\r
538 {\r
539         function form_prep($str = '')\r
540         {\r
541                 // if the field name is an array we do this recursively\r
542                 if (is_array($str))\r
543                 {\r
544                         foreach ($str as $key => $val)\r
545                         {\r
546                                 $str[$key] = form_prep($val);\r
547                         }\r
548 \r
549                         return $str;\r
550                 }\r
551 \r
552                 if ($str === '')\r
553                 {\r
554                         return '';\r
555                 }\r
556 \r
557                 $temp = '__TEMP_AMPERSANDS__';\r
558 \r
559                 // Replace entities to temporary markers so that \r
560                 // htmlspecialchars won't mess them up\r
561                 $str = preg_replace("/&#(\d+);/", "$temp\\1;", $str);\r
562                 $str = preg_replace("/&(\w+);/",  "$temp\\1;", $str);\r
563 \r
564                 $str = htmlspecialchars($str);\r
565 \r
566                 // In case htmlspecialchars misses these.\r
567                 $str = str_replace(array("'", '"'), array("&#39;", "&quot;"), $str);\r
568 \r
569                 // Decode the temp markers back to entities\r
570                 $str = preg_replace("/$temp(\d+);/","&#\\1;",$str);\r
571                 $str = preg_replace("/$temp(\w+);/","&\\1;",$str);\r
572 \r
573                 return $str;\r
574         }\r
575 }\r
576 \r
577 // ------------------------------------------------------------------------\r
578 \r
579 /**\r
580  * Form Value\r
581  *\r
582  * Grabs a value from the POST array for the specified field so you can\r
583  * re-populate an input field or textarea.  If Form Validation\r
584  * is active it retrieves the info from the validation class\r
585  *\r
586  * @access      public\r
587  * @param       string\r
588  * @return      mixed\r
589  */\r
590 if ( ! function_exists('set_value'))\r
591 {\r
592         function set_value($field = '', $default = '')\r
593         {\r
594                 if (FALSE === ($OBJ =& _get_validation_object()))\r
595                 {\r
596                         if ( ! isset($_POST[$field]))\r
597                         {\r
598                                 return $default;\r
599                         }\r
600 \r
601                         return form_prep($_POST[$field]);\r
602                 }\r
603 \r
604                 return form_prep($OBJ->set_value($field, $default));\r
605         }\r
606 }\r
607 \r
608 // ------------------------------------------------------------------------\r
609 \r
610 /**\r
611  * Set Select\r
612  *\r
613  * Let's you set the selected value of a <select> menu via data in the POST array.\r
614  * If Form Validation is active it retrieves the info from the validation class\r
615  *\r
616  * @access      public\r
617  * @param       string\r
618  * @param       string\r
619  * @param       bool\r
620  * @return      string\r
621  */\r
622 if ( ! function_exists('set_select'))\r
623 {\r
624         function set_select($field = '', $value = '', $default = FALSE)\r
625         {\r
626                 $OBJ =& _get_validation_object();\r
627 \r
628                 if ($OBJ === FALSE)\r
629                 {\r
630                         if ( ! isset($_POST[$field]))\r
631                         {\r
632                                 if (count($_POST) === 0)\r
633                                 {\r
634                                         return ' selected="selected"';\r
635                                 }\r
636                                 return '';\r
637                         }\r
638 \r
639                         $field = $_POST[$field];\r
640 \r
641                         if (is_array($field))\r
642                         {\r
643                                 if ( ! in_array($value, $field))\r
644                                 {\r
645                                         return '';\r
646                                 }\r
647                         }\r
648                         else\r
649                         {\r
650                                 if (($field == '' OR $value == '') OR ($field != $value))\r
651                                 {\r
652                                         return '';\r
653                                 }\r
654                         }\r
655 \r
656                         return ' selected="selected"';\r
657                 }\r
658 \r
659                 return $OBJ->set_select($field, $value, $default);\r
660         }\r
661 }\r
662 \r
663 // ------------------------------------------------------------------------\r
664 \r
665 /**\r
666  * Set Checkbox\r
667  *\r
668  * Let's you set the selected value of a checkbox via the value in the POST array.\r
669  * If Form Validation is active it retrieves the info from the validation class\r
670  *\r
671  * @access      public\r
672  * @param       string\r
673  * @param       string\r
674  * @param       bool\r
675  * @return      string\r
676  */\r
677 if ( ! function_exists('set_checkbox'))\r
678 {\r
679         function set_checkbox($field = '', $value = '', $default = FALSE)\r
680         {\r
681                 $OBJ =& _get_validation_object();\r
682 \r
683                 if ($OBJ === FALSE)\r
684                 { \r
685                         if ( ! isset($_POST[$field]))\r
686                         {\r
687                                 if (count($_POST) === 0)\r
688                                 {\r
689                                         return ' checked="checked"';\r
690                                 }\r
691                                 return '';\r
692                         }\r
693 \r
694                         $field = $_POST[$field];\r
695                         \r
696                         if (is_array($field))\r
697                         {\r
698                                 if ( ! in_array($value, $field))\r
699                                 {\r
700                                         return '';\r
701                                 }\r
702                         }\r
703                         else\r
704                         {\r
705                                 if (($field == '' OR $value == '') OR ($field != $value))\r
706                                 {\r
707                                         return '';\r
708                                 }\r
709                         }\r
710 \r
711                         return ' checked="checked"';\r
712                 }\r
713 \r
714                 return $OBJ->set_checkbox($field, $value, $default);\r
715         }\r
716 }\r
717 \r
718 // ------------------------------------------------------------------------\r
719 \r
720 /**\r
721  * Set Radio\r
722  *\r
723  * Let's you set the selected value of a radio field via info in the POST array.\r
724  * If Form Validation is active it retrieves the info from the validation class\r
725  *\r
726  * @access      public\r
727  * @param       string\r
728  * @param       string\r
729  * @param       bool\r
730  * @return      string\r
731  */\r
732 if ( ! function_exists('set_radio'))\r
733 {\r
734         function set_radio($field = '', $value = '', $default = FALSE)\r
735         {\r
736                 $OBJ =& _get_validation_object();\r
737 \r
738                 if ($OBJ === FALSE)\r
739                 {\r
740                         if ( ! isset($_POST[$field]))\r
741                         {\r
742                                 if (count($_POST) === 0)\r
743                                 {\r
744                                         return ' checked="checked"';\r
745                                 }\r
746                                 return '';\r
747                         }\r
748 \r
749                         $field = $_POST[$field];\r
750                         \r
751                         if (is_array($field))\r
752                         {\r
753                                 if ( ! in_array($value, $field))\r
754                                 {\r
755                                         return '';\r
756                                 }\r
757                         }\r
758                         else\r
759                         {\r
760                                 if (($field == '' OR $value == '') OR ($field != $value))\r
761                                 {\r
762                                         return '';\r
763                                 }\r
764                         }\r
765 \r
766                         return ' checked="checked"';\r
767                 }\r
768 \r
769                 return $OBJ->set_radio($field, $value, $default);\r
770         }\r
771 }\r
772 \r
773 // ------------------------------------------------------------------------\r
774 \r
775 /**\r
776  * Form Error\r
777  *\r
778  * Returns the error for a specific form field.  This is a helper for the\r
779  * form validation class.\r
780  *\r
781  * @access      public\r
782  * @param       string\r
783  * @param       string\r
784  * @param       string\r
785  * @return      string\r
786  */\r
787 if ( ! function_exists('form_error'))\r
788 {\r
789         function form_error($field = '', $prefix = '', $suffix = '')\r
790         {\r
791                 if (FALSE === ($OBJ =& _get_validation_object()))\r
792                 {\r
793                         return '';\r
794                 }\r
795 \r
796                 return $OBJ->error($field, $prefix, $suffix);\r
797         }\r
798 }\r
799 \r
800 // ------------------------------------------------------------------------\r
801 \r
802 /**\r
803  * Validation Error String\r
804  *\r
805  * Returns all the errors associated with a form submission.  This is a helper\r
806  * function for the form validation class.\r
807  *\r
808  * @access      public\r
809  * @param       string\r
810  * @param       string\r
811  * @return      string\r
812  */\r
813 if ( ! function_exists('validation_errors'))\r
814 {\r
815         function validation_errors($prefix = '', $suffix = '')\r
816         {\r
817                 if (FALSE === ($OBJ =& _get_validation_object()))\r
818                 {\r
819                         return '';\r
820                 }\r
821 \r
822                 return $OBJ->error_string($prefix, $suffix);\r
823         }\r
824 }\r
825 \r
826 // ------------------------------------------------------------------------\r
827 \r
828 /**\r
829  * Parse the form attributes\r
830  *\r
831  * Helper function used by some of the form helpers\r
832  *\r
833  * @access      private\r
834  * @param       array\r
835  * @param       array\r
836  * @return      string\r
837  */\r
838 if ( ! function_exists('_parse_form_attributes'))\r
839 {\r
840         function _parse_form_attributes($attributes, $default)\r
841         {\r
842                 if (is_array($attributes))\r
843                 {\r
844                         foreach ($default as $key => $val)\r
845                         {\r
846                                 if (isset($attributes[$key]))\r
847                                 {\r
848                                         $default[$key] = $attributes[$key];\r
849                                         unset($attributes[$key]);\r
850                                 }\r
851                         }\r
852 \r
853                         if (count($attributes) > 0)\r
854                         {\r
855                                 $default = array_merge($default, $attributes);\r
856                         }\r
857                 }\r
858 \r
859                 $att = '';\r
860 \r
861                 foreach ($default as $key => $val)\r
862                 {\r
863                         if ($key == 'value')\r
864                         {\r
865                                 $val = form_prep($val);\r
866                         }\r
867 \r
868                         $att .= $key . '="' . $val . '" ';\r
869                 }\r
870 \r
871                 return $att;\r
872         }\r
873 }\r
874 \r
875 // ------------------------------------------------------------------------\r
876 \r
877 /**\r
878  * Attributes To String\r
879  *\r
880  * Helper function used by some of the form helpers\r
881  *\r
882  * @access      private\r
883  * @param       mixed\r
884  * @param       bool\r
885  * @return      string\r
886  */\r
887 if ( ! function_exists('_attributes_to_string'))\r
888 {\r
889         function _attributes_to_string($attributes, $formtag = FALSE)\r
890         {\r
891                 if (is_string($attributes) AND strlen($attributes) > 0)\r
892                 {\r
893                         if ($formtag == TRUE AND strpos($attributes, 'method=') === FALSE)\r
894                         {\r
895                                 $attributes .= ' method="post"';\r
896                         }\r
897 \r
898                 return ' '.$attributes;\r
899                 }\r
900         \r
901                 if (is_object($attributes) AND count($attributes) > 0)\r
902                 {\r
903                         $attributes = (array)$attributes;\r
904                 }\r
905 \r
906                 if (is_array($attributes) AND count($attributes) > 0)\r
907                 {\r
908                 $atts = '';\r
909 \r
910                 if ( ! isset($attributes['method']) AND $formtag === TRUE)\r
911                 {\r
912                         $atts .= ' method="post"';\r
913                 }\r
914 \r
915                 foreach ($attributes as $key => $val)\r
916                 {\r
917                         $atts .= ' '.$key.'="'.$val.'"';\r
918                 }\r
919 \r
920                 return $atts;\r
921                 }\r
922         }\r
923 }\r
924 \r
925 // ------------------------------------------------------------------------\r
926 \r
927 /**\r
928  * Validation Object\r
929  *\r
930  * Determines what the form validation class was instantiated as, fetches\r
931  * the object and returns it.\r
932  *\r
933  * @access      private\r
934  * @return      mixed\r
935  */\r
936 if ( ! function_exists('_get_validation_object'))\r
937 {\r
938         function &_get_validation_object()\r
939         {\r
940                 $CI =& get_instance();\r
941 \r
942                 // We set this as a variable since we're returning by reference\r
943                 $return = FALSE;\r
944 \r
945                 if ( ! isset($CI->load->_ci_classes) OR  ! isset($CI->load->_ci_classes['form_validation']))\r
946                 {\r
947                         return $return;\r
948                 }\r
949 \r
950                 $object = $CI->load->_ci_classes['form_validation'];\r
951 \r
952                 if ( ! isset($CI->$object) OR ! is_object($CI->$object))\r
953                 {\r
954                         return $return;\r
955                 }\r
956 \r
957                 return $CI->$object;\r
958         }\r
959 }\r
960 \r
961 \r
962 /* End of file form_helper.php */\r
963 /* Location: ./system/helpers/form_helper.php */