PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.17.3
GiveWP – Donation Plugin and Fundraising Platform v2.17.3
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / FormAPI / Fields.php
give / src / FormAPI Last commit date
Form 4 years ago Fields.php 4 years ago Section.php 4 years ago
Fields.php
105 lines
1 <?php
2
3 namespace Give\FormAPI;
4
5 use Give\FormAPI\Form\Colorpicker;
6 use Give\FormAPI\Form\File;
7 use Give\FormAPI\Form\Group;
8 use Give\FormAPI\Form\Media;
9 use Give\FormAPI\Form\Radio;
10 use Give\FormAPI\Form\Text;
11 use Give\FormAPI\Form\Textarea;
12 use Give\FormAPI\Form\Wysiwyg;
13 use Give\Framework\Exceptions\Primitives\InvalidArgumentException;
14
15 class Fields
16 {
17 /**
18 * Field vs class name mapping array
19 *
20 * @since 2.7.0
21 * @var array
22 */
23 private $fieldClasses = [
24 'text' => Text::class,
25 'textarea' => Textarea::class,
26 'file' => File::class,
27 'media' => Media::class,
28 'radio' => Radio::class,
29 'wysiwyg' => Wysiwyg::class,
30 'colorpicker' => Colorpicker::class,
31 'group' => Group::class,
32 ];
33
34 /**
35 * Get field object.
36 *
37 * @since 2.7.0
38 *
39 * @param array $array
40 *
41 * @return Form\Field
42 */
43 public static function fromArray($array)
44 {
45 $field = new static();
46 $field->validate($array);
47
48 /**
49 * Filter the field classes
50 *
51 * @since 2.7.0
52 *
53 * @param Form\Field[]
54 */
55 $field->fieldClasses = apply_filters('give_form_api_field_classes', $field->fieldClasses);
56
57 /* @var Form\Field $fieldClass */
58 $fieldClass = $field->fieldClasses[$field->getFieldType($array['type'])];
59
60 return $fieldClass::fromArray($array);
61 }
62
63 /**
64 * Get field class name.
65 * Note:
66 * 1. Field name create with {fieldType_modifier} logic. Use underscore in field type only if you want to add a modifier. For example: text_small, radio_inline etc.
67 * 2. This function exist for backward compatibility and can be remove in future
68 *
69 * @since 2.7.0
70 *
71 * @param $type
72 *
73 * @return string
74 */
75 private function getFieldType($type)
76 {
77 if (false !== strpos($type, '_')) {
78 $type = current(explode('_', $type, 2));
79 }
80
81 return $type;
82 }
83
84 /**
85 * Validate field arguments
86 *
87 * @since 2.7.0
88 *
89 * @param array $array
90 *
91 * @throws InvalidArgumentException
92 */
93 private function validate($array)
94 {
95 $required = ['id', 'name', 'type'];
96 $array = array_filter($array); // Remove empty values.
97
98 if (array_diff($required, array_keys($array))) {
99 throw new InvalidArgumentException(
100 __('To create a Field object, please provide valid id, name and type.', 'give')
101 );
102 }
103 }
104 }
105