/lenasys/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/lenasys/trunk

« back to all changes in this revision

Viewing changes to codeigniter/system/helpers/form_helper.php

  • Committer: galaxyAbstractor
  • Date: 2013-04-10 15:58:59 UTC
  • mfrom: (20.1.1 lenasys)
  • mto: This revision was merged to the branch mainline in revision 23.
  • Revision ID: galaxyabstractor@gmail.com-20130410155859-cih60kaz5es8savt
CodeIgniter implementation of basic CMS system

Show diffs side-by-side

added added

removed removed

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