PluginProbe
The Innovative Form Builder – IvyForms / 1.5
The Innovative Form Builder – IvyForms v1.5
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
← All changes | backend/src/Services/Form/FormService.php +51 -0 1.0 → 1.5 View file →
@@ -38,8 +38,16 @@
38 38 return $this->formRepository->getAll();
39 39 }
40 40
41 41 /**
42 + * @return list<int>
43 + */
44 + public function getAllFormIds(): array
45 + {
46 + return $this->formRepository->getAllIds();
47 + }
48 +
49 + /**
42 50 * Create a new form.
43 51 *
44 52 * @param Form $formData
45 53 *
@@ -107,8 +115,35 @@
107 115 return [$formId, $form];
108 116 }
109 117
110 118 /**
119 + * Preserve the persisted formType when the caller omits it, so a partial update
120 + * (e.g. settings/name change) cannot silently demote the form's type.
121 + *
122 + * @param array<string,mixed> $rawParams Request payload to be sanitized.
123 + * @param int $formId Form id resolved from the route (URL placeholder).
124 + * @return array<string,mixed>
125 + * @throws NotFoundException
126 + */
127 + public function withPreservedFormType(array $rawParams, int $formId): array
128 + {
129 + if (array_key_exists('formType', $rawParams)) {
130 + return $rawParams;
131 + }
132 +
133 + if ($formId <= 0) {
134 + return $rawParams;
135 + }
136 +
137 + $existing = $this->getFormById($formId);
138 + if (method_exists($existing, 'getFormType')) {
139 + $rawParams['formType'] = $existing->getFormType();
140 + }
141 +
142 + return $rawParams;
143 + }
144 +
145 + /**
111 146 * Update the starred field of a form.
112 147 *
113 148 * @param int $formId
114 149 * @param mixed $value
@@ -141,8 +176,15 @@
141 176 * @return int
142 177 */
143 178 public function deleteForm(int $formId): int
144 179 {
180 + /**
181 + * Fires before a form is deleted.
182 + *
183 + * @param int $formId The ID of the form being deleted.
184 + */
185 + do_action('ivyforms/form/before_delete', $formId);
186 +
145 187 return $this->formRepository->delete($formId);
146 188 }
147 189
148 190 /**
@@ -153,8 +195,17 @@
153 195 * @return int Number of deleted forms
154 196 */
155 197 public function deleteForms(array $formIds): int
156 198 {
199 + foreach ($formIds as $formId) {
200 + /**
201 + * Fires before a form is deleted.
202 + *
203 + * @param int $formId The ID of the form being deleted.
204 + */
205 + do_action('ivyforms/form/before_delete', (int) $formId);
206 + }
207 +
157 208 return $this->formRepository->deleteMany($formIds);
158 209 }
159 210
160 211 /**