PluginProbe
The Innovative Form Builder – IvyForms / 1.5.1
The Innovative Form Builder – IvyForms v1.5.1
1.5.1 1.5 1.4.1 1.4 trunk 0.1.2 0.2 0.2.1 0.3 0.3.1 0.4 0.5 0.6 0.6.1 0.6.1-backup 0.6.1.1 0.7 0.8 0.8.1 0.8.2 0.9 0.9.1 1.0 1.1 1.1.1 All 27 releases
ivyforms / backend / src / ValueObjects / FieldOptions / FieldOptions.php

FieldOptions.php in The Innovative Form Builder – IvyForms 1.5.1, at backend/src/ValueObjects/FieldOptions/FieldOptions.php

180 lines 3.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * @copyright © Melograno Venture Studio. All rights.
5 * @licence See LICENCE.md for license details.
6 */
7
8 namespace IvyForms\ValueObjects\FieldOptions;
9
10 use IvyForms\Common\Exceptions\ValidationException;
11 use IvyForms\Services\Translations\BackendStrings;
12
13 final class FieldOptions
14 {
15 /**
16 * @var int
17 */
18 public int $id;
19
20 /**
21 * @var int
22 */
23 public int $fieldId;
24
25 /**
26 * @var string
27 */
28 public string $label;
29
30 /**
31 * @var string
32 */
33 public string $value;
34
35 /**
36 * @var bool
37 */
38 public bool $isDefault;
39
40 /**
41 * @var int
42 */
43 public int $position;
44
45 /**
46 * @throws ValidationException
47 */
48 public function __construct(
49 int $id,
50 int $fieldId,
51 string $label,
52 string $value,
53 bool $isDefault,
54 int $position
55 ) {
56 $this->id = $this->validatePositiveInteger($id);
57 $this->fieldId = $this->validatePositiveInteger($fieldId);
58 $this->label = $this->validateString($label, 255, 'label');
59 $this->value = $this->validateString($value, 255, 'value');
60 $this->isDefault = $this->validateBool($isDefault);
61 $this->position = $this->validatePositiveInteger($position);
62 }
63
64 /**
65 * Validates the ID.
66 *
67 * @param int $id
68 *
69 * @return int
70 * @throws ValidationException
71 */
72 private function validatePositiveInteger(int $id): int
73 {
74 if ($id < 0) {
75 throw new ValidationException(BackendStrings::getExceptionStrings()['property_positive_integer']);
76 }
77 return $id;
78 }
79
80 /**
81 * Validates a string value.
82 *
83 * @param string $value
84 * @param int $maxLength
85 * @param string $fieldName
86 *
87 * @return string
88 *
89 * @throws ValidationException
90 */
91 private function validateString(string $value, int $maxLength, string $fieldName): string
92 {
93 if (strlen($value) > $maxLength) {
94 throw new ValidationException(
95 sprintf(
96 /* translators: 1: String value, 2: String max length. */
97 esc_html__('%1$s must be at most %2$d characters.', 'ivyforms'),
98 esc_html($fieldName),
99 $maxLength
100 )
101 );
102 }
103 return $value;
104 }
105
106 /**
107 * Validates a boolean field.
108 *
109 * @param bool $value
110 *
111 * @return bool
112 */
113 private function validateBool(bool $value): bool
114 {
115 return $value;
116 }
117
118 /**
119 * @return int
120 */
121 public function getId(): int
122 {
123 return $this->id;
124 }
125
126 /**
127 * @return int
128 */
129 public function getFieldId(): int
130 {
131 return $this->fieldId;
132 }
133
134 /**
135 * @return string
136 */
137 public function getLabel(): string
138 {
139 return $this->label;
140 }
141
142 /**
143 * @return string
144 */
145 public function getValue(): string
146 {
147 return $this->value;
148 }
149
150 /**
151 * @return bool
152 */
153 public function isDefault(): bool
154 {
155 return $this->isDefault;
156 }
157
158 /**
159 * @return int
160 */
161 public function getPosition(): int
162 {
163 return $this->position;
164 }
165 /**
166 * @return array<string, int|string|bool>
167 */
168 public function toArray(): array
169 {
170 return [
171 'id' => $this->getId(),
172 'fieldId' => $this->getFieldId(),
173 'label' => $this->getLabel(),
174 'value' => $this->getValue(),
175 'isDefault' => $this->isDefault(),
176 'position' => $this->getPosition(),
177 ];
178 }
179 }
180