PluginProbe ʕ •ᴥ•ʔ
VikAppointments Services Booking Calendar / trunk
VikAppointments Services Booking Calendar vtrunk
1.2.21 1.2.20 trunk 1.2.17 1.2.18 1.2.19
vikappointments / libraries / html / form / fields / groupedlist.php
vikappointments / libraries / html / form / fields Last commit date
groupedlist.php 2 years ago list.php 2 years ago media.php 4 years ago number.php 4 years ago spacer.php 4 years ago text.php 4 years ago textarea.php 4 years ago toggle.php 4 years ago
groupedlist.php
92 lines
1 <?php
2 /**
3 * @package VikAppointments - Libraries
4 * @subpackage html.form
5 * @author E4J s.r.l.
6 * @copyright Copyright (C) 2023 E4J s.r.l. All Rights Reserved.
7 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
8 * @link https://vikwp.com
9 */
10
11 // No direct access
12 defined('ABSPATH') or die('No script kiddies please!');
13
14 $name = isset($displayData['name']) ? $displayData['name'] : '';
15 $value = isset($displayData['value']) ? $displayData['value'] : '';
16 $id = isset($displayData['id']) ? $displayData['id'] : '';
17 $class = isset($displayData['class']) ? $displayData['class'] : '';
18 $req = isset($displayData['required']) ? $displayData['required'] : 0;
19 $groups = isset($displayData['groups']) ? $displayData['groups'] : '';
20 $disabled = isset($displayData['disabled']) ? $displayData['disabled'] : false;
21 $multiple = isset($displayData['multiple']) ? $displayData['multiple'] : false;
22
23 if ($req)
24 {
25 $class = trim('required ' . $class);
26 }
27
28 if (!is_array($groups))
29 {
30 $groups = array();
31 }
32
33 if ($multiple)
34 {
35 $name .= '[]';
36
37 /**
38 * The value is always treaten as an array in order to avoid
39 * PHP notices while using in_array() function with strings.
40 */
41 $value = (array) $value;
42 }
43
44 ?>
45
46 <select
47 name="<?php echo esc_attr($name); ?>"
48 id="<?php echo esc_attr($id); ?>"
49 class="widefat <?php echo esc_attr($class); ?>"
50 <?php echo $disabled ? 'disabled' : ''; ?>
51 <?php echo $multiple ? 'multiple' : ''; ?>
52 >
53
54 <?php foreach ($groups as $label => $options): ?>
55
56 <?php if ($label): ?>
57 <optgroup label="<?php echo $this->escape($label); ?>">
58 <?php endif; ?>
59
60 <?php
61 foreach ($options as $val => $text)
62 {
63 if (is_object($text))
64 {
65 $val = $text->value;
66 $text = $text->text;
67 }
68
69 $selected = ($multiple && in_array($val, $value)) || $val == $value;
70
71 if ($val == '' && $text == '')
72 {
73 // use default placeholder when not specified
74 $text = 'JGLOBAL_SELECT_AN_OPTION';
75 }
76 ?>
77 <option
78 value="<?php echo esc_attr($val); ?>"
79 <?php echo $selected ? 'selected="selected"' : ''; ?>
80 ><?php echo JText::translate($text); ?></option>
81 <?php
82 }
83 ?>
84
85 <?php if ($label): ?>
86 </optgroup>
87 <?php endif; ?>
88
89 <?php endforeach; ?>
90
91 </select>
92