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