PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.22.0
GiveWP – Donation Plugin and Fundraising Platform v2.22.0
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
107 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\Select;
11 use Give\FormAPI\Form\Text;
12 use Give\FormAPI\Form\Textarea;
13 use Give\FormAPI\Form\Wysiwyg;
14 use Give\Framework\Exceptions\Primitives\InvalidArgumentException;
15
16 class Fields
17 {
18 /**
19 * Field vs class name mapping array
20 *
21 * @since 2.7.0
22 * @var array
23 */
24 private $fieldClasses = [
25 'text' => Text::class,
26 'textarea' => Textarea::class,
27 'file' => File::class,
28 'media' => Media::class,
29 'radio' => Radio::class,
30 'wysiwyg' => Wysiwyg::class,
31 'colorpicker' => Colorpicker::class,
32 'group' => Group::class,
33 'select' => Select::class,
34 ];
35
36 /**
37 * Get field object.
38 *
39 * @since 2.7.0
40 *
41 * @param array $array
42 *
43 * @return Form\Field
44 */
45 public static function fromArray($array)
46 {
47 $field = new static();
48 $field->validate($array);
49
50 /**
51 * Filter the field classes
52 *
53 * @since 2.7.0
54 *
55 * @param Form\Field[]
56 */
57 $field->fieldClasses = apply_filters('give_form_api_field_classes', $field->fieldClasses);
58
59 /* @var Form\Field $fieldClass */
60 $fieldClass = $field->fieldClasses[$field->getFieldType($array['type'])];
61
62 return $fieldClass::fromArray($array);
63 }
64
65 /**
66 * Get field class name.
67 * Note:
68 * 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.
69 * 2. This function exist for backward compatibility and can be remove in future
70 *
71 * @since 2.7.0
72 *
73 * @param $type
74 *
75 * @return string
76 */
77 private function getFieldType($type)
78 {
79 if (false !== strpos($type, '_')) {
80 $type = current(explode('_', $type, 2));
81 }
82
83 return $type;
84 }
85
86 /**
87 * Validate field arguments
88 *
89 * @since 2.7.0
90 *
91 * @param array $array
92 *
93 * @throws InvalidArgumentException
94 */
95 private function validate($array)
96 {
97 $required = ['id', 'name', 'type'];
98 $array = array_filter($array); // Remove empty values.
99
100 if (array_diff($required, array_keys($array))) {
101 throw new InvalidArgumentException(
102 __('To create a Field object, please provide valid id, name and type.', 'give')
103 );
104 }
105 }
106 }
107