Elgg  Version master
radio.php
Go to the documentation of this file.
1 <?php
14  'align' => 'vertical',
15  'value' => [],
16  'disabled' => false,
17  'options' => [],
18  'name' => '',
19  'type' => 'radio',
20 ];
21 
22 $vars = array_merge($defaults, $vars);
23 
24 $options_values = elgg_extract('options_values', $vars, []);
25 unset($vars['options_values']);
26 
28 
29 foreach ($options_values as $key => $value) {
30  if (is_array($value)) {
31  $key = elgg_extract('text', $value, $key);
32  } else {
33  $value = [
34  'text' => $value,
35  'value' => $key,
36  ];
37  }
38 
40 }
41 
42 // turn options into options_values
43 $options = elgg_extract('options', $vars);
44 unset($vars['options']);
45 if (!empty($options) && empty($input_options)) {
46  foreach ($options as $label => $value) {
47  $input_options[$label] = ['value' => $value];
48  }
49 }
50 
51 if (empty($input_options)) {
52  return;
53 }
54 
55 $id = elgg_extract('id', $vars, '');
56 unset($vars['id']);
57 
58 $list_class = elgg_extract_class($vars, ['elgg-input-radios', "elgg-{$vars['align']}"]);
59 
60 unset($vars['class']);
61 unset($vars['align']);
62 
63 $vars['class'] = 'elgg-input-radio';
64 
65 if (is_array(elgg_extract('value', $vars))) {
66  $selected_value = array_map('elgg_strtolower', elgg_extract('value', $vars));
67 } else {
68  $selected_value = [elgg_strtolower((string) elgg_extract('value', $vars))];
69 }
70 
71 unset($vars['value']);
72 
73 $radios = '';
74 foreach ($input_options as $label => $option) {
75  $radio_input_options = array_merge($vars, $option);
76  $radio_input_options['checked'] = in_array(elgg_strtolower((string) elgg_extract('value', $option)), $selected_value);
77 
78  $label = elgg_extract('text', $radio_input_options, $label);
79  unset($radio_input_options['text']);
80 
81  $radio = elgg_format_element('input', $radio_input_options);
82  $radios .= "<li><label>{$radio}{$label}</label></li>";
83 }
84 
85 echo elgg_format_element('ul', [
86  'class' => $list_class,
87  'id' => $id,
88 ], $radios);
if($view &&elgg_view_exists($view)) $label
Definition: field.php:26
elgg_strtolower()
Wrapper function for mb_strtolower().
Definition: mb_wrapper.php:161
$options_values
Definition: radio.php:24
elgg_extract_class(array $array, $existing=[], $extract_key= 'class')
Extract class names from an array, optionally merging into a preexisting set.
Definition: elgglib.php:276
$value
Definition: generic.php:51
elgg_extract($key, $array, $default=null, bool $strict=true)
Checks for $array[$key] and returns its value if it exists, else returns $default.
Definition: elgglib.php:254
foreach($options_values as $key=> $value) $options
Definition: radio.php:43
$vars
Definition: radio.php:22
$input_options
Definition: radio.php:27
$defaults
Displays a radio input field.
Definition: radio.php:13
$list_class
Definition: radio.php:58
if($container instanceof ElggGroup &&$container->guid!=elgg_get_page_owner_guid()) $key
Definition: summary.php:44
if(!empty($options)&&empty($input_options)) if(empty($input_options)) $id
Definition: radio.php:55
$radios
Definition: radio.php:73
elgg_format_element(string $tag_name, array $attributes=[], string $text= '', array $options=[])
Format an HTML element.
Definition: output.php:145