PluginProbe
Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder / 6.2.7
Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder v6.2.7
6.2.14 6.2.13 6.2.12 6.2.10 6.2.11 6.2.9 6.2.8 6.2.7 6.2.6 6.2.5 6.2.4 6.2.3 6.2.2 3.6.22 3.6.31 3.6.40 3.6.41 3.6.42 3.6.50 3.6.51 3.6.60 3.6.61 3.6.62 3.6.64 3.6.65 All 196 releases
fluentform / app / Services / Integrations / FormIntegrationService.php

FormIntegrationService.php in Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder 6.2.7, at app/Services/Integrations/FormIntegrationService.php

261 lines 10.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace FluentForm\App\Services\Integrations;
4
5 use FluentForm\App\Models\FormMeta;
6 use FluentForm\Framework\Helpers\ArrayHelper as Arr;
7
8 class FormIntegrationService
9 {
10 public function find($attr)
11 {
12 $formId = intval(Arr::get($attr, 'form_id'));
13 $integrationId = intval(Arr::get($attr, 'integration_id'));
14 $integrationName = sanitize_text_field(Arr::get($attr, 'integration_name'));
15
16 $settings = [
17 'conditionals' => [
18 'conditions' => [],
19 'status' => false,
20 'type' => 'all',
21 ],
22 'enabled' => true,
23 'list_id' => '',
24 'list_name' => '',
25 'name' => '',
26 'merge_fields' => [],
27 ];
28
29 $mergeFields = false;
30 if ($integrationId) {
31 $feed = FormMeta::where(['form_id' => $formId, 'id' => $integrationId])->first();
32
33
34 if ($feed->value) {
35 $settings = json_decode($feed->value, true);
36 $settings = apply_filters_deprecated(
37 'fluentform_get_integration_values_' . $integrationName,
38 [
39 $settings,
40 $feed,
41 $formId
42 ],
43 FLUENTFORM_FRAMEWORK_UPGRADE,
44 'fluentform/get_integration_values_' . $integrationName,
45 'Use fluentform/get_integration_values_' . $integrationName . ' instead of fluentform_get_integration_values_' . $integrationName
46 );
47 $settings = apply_filters('fluentform/get_integration_values_' . $integrationName, $settings, $feed, $formId);
48 if (!empty($settings['list_id'])) {
49 $mergeFields = apply_filters_deprecated(
50 'fluentform_get_integration_merge_fields_' . $integrationName,
51 [
52 false,
53 $settings['list_id'],
54 $formId
55 ],
56 FLUENTFORM_FRAMEWORK_UPGRADE,
57 'fluentform/get_integration_merge_fields_' . $integrationName,
58 'Use fluentform/get_integration_merge_fields_' . $integrationName . ' instead of fluentform_get_integration_merge_fields_' . $integrationName
59 );
60 $mergeFields = apply_filters('fluentform/get_integration_merge_fields_' . $integrationName, false, $settings['list_id'], $formId);
61 }
62 }
63 } else {
64 $settings = apply_filters_deprecated(
65 'fluentform_get_integration_defaults_' . $integrationName,
66 [
67 false,
68 $formId
69 ],
70 FLUENTFORM_FRAMEWORK_UPGRADE,
71 'fluentform/get_integration_defaults_' . $integrationName,
72 'Use fluentform/get_integration_defaults_' . $integrationName . ' instead of fluentform_get_integration_defaults_' . $integrationName
73 );
74 $settings = apply_filters('fluentform/get_integration_defaults_' . $integrationName, $settings, $formId);
75 }
76
77 if ('true' == $settings['enabled']) {
78 $settings['enabled'] = true;
79 } elseif ('false' == $settings['enabled'] || $settings['enabled']) {
80 $settings['enabled'] = false;
81 }
82 $settings = apply_filters_deprecated(
83 'fluentform_get_integration_settings_fields_' . $integrationName,
84 [
85 $settings,
86 $formId,
87 $settings
88 ],
89 FLUENTFORM_FRAMEWORK_UPGRADE,
90 'fluentform/get_integration_settings_fields_' . $integrationName,
91 'Use fluentform/get_integration_settings_fields_' . $integrationName . ' instead of fluentform_get_integration_settings_fields_' . $integrationName
92 );
93 $settingsFields = apply_filters('fluentform/get_integration_settings_fields_' . $integrationName, $settings, $formId, $settings);
94
95 return ([
96 'settings' => $settings,
97 'settings_fields' => $settingsFields,
98 'merge_fields' => $mergeFields,
99 ]);
100 }
101
102 public function update($attr)
103 {
104 $formId = intval(Arr::get($attr, 'form_id'));
105 $integrationId = intval(Arr::get($attr, 'integration_id'));
106 $integrationName = sanitize_text_field(Arr::get($attr, 'integration_name'));
107 $dataType = sanitize_text_field(Arr::get($attr, 'data_type'));
108 $status = Arr::get($attr, 'status', true);
109 $metaValue = Arr::get($attr, 'integration');
110
111
112 if ('stringify' == $dataType) {
113 $metaValue = \json_decode($metaValue, true);
114 } else {
115 $metaValue = wp_unslash($metaValue);
116 }
117 $isUpdatingStatus = empty($metaValue);
118
119 if ($isUpdatingStatus) {
120 $integrationData = FormMeta::findOrFail($integrationId);
121 $metaValue = \json_decode($integrationData->value, true);
122 $metaValue['enabled'] = $status;
123 $metaKey = $integrationData->meta_key;
124 } else {
125 if (empty($metaValue['name'])) {
126 $errors['name'] = [__('Feed name is required', 'fluentform')];
127 wp_send_json_error([
128 'message' => __('Validation Failed! Feed name is required', 'fluentform'),
129 'errors' => $errors
130 ], 423);
131 }
132 $metaValue = apply_filters_deprecated(
133 'fluentform_save_integration_value_' . $integrationName,
134 [
135 $metaValue,
136 $integrationId,
137 $formId
138 ],
139 FLUENTFORM_FRAMEWORK_UPGRADE,
140 'fluentform/save_integration_value_' . $integrationName,
141 'Use fluentform/save_integration_value_' . $integrationName . ' instead of fluentform_save_integration_value_' . $integrationName
142 );
143 $metaValue = apply_filters('fluentform/save_integration_value_' . $integrationName, $metaValue,
144 $integrationId, $formId);
145 $metaKey = $integrationName . '_feeds';
146 }
147 $data = [
148 'form_id' => $formId,
149 'meta_key' => $metaKey,
150 'value' => \json_encode($metaValue),
151 ];
152 $data = apply_filters_deprecated(
153 'fluentform_save_integration_settings_' . $integrationName,
154 [
155 $data,
156 $integrationId
157 ],
158 FLUENTFORM_FRAMEWORK_UPGRADE,
159 'fluentform/save_integration_settings_' . $integrationName,
160 'Use fluentform/save_integration_settings_' . $integrationName . ' instead of fluentform_save_integration_settings_' . $integrationName
161 );
162 $data = apply_filters('fluentform/save_integration_settings_' . $integrationName, $data, $integrationId);
163 $created = false;
164 if ($integrationId) {
165 FormMeta::where('form_id', $formId)
166 ->where('id', $integrationId)
167 ->update($data);
168 } else {
169 $integrationId = FormMeta::insertGetId($data);
170 $created = true;
171 }
172
173
174 return ([
175 'message' => __('Integration successfully saved', 'fluentform'),
176 'integration_id' => $integrationId,
177 'integration_name' => $integrationName,
178 'created' => $created,
179 ]);
180 }
181
182 public function get($formId)
183 {
184 $notificationKeys = apply_filters_deprecated(
185 'fluentform_global_notification_types',
186 [
187 [],
188 $formId
189 ],
190 FLUENTFORM_FRAMEWORK_UPGRADE,
191 'fluentform/global_notification_types',
192 'Use fluentform/global_notification_types instead of fluentform_global_notification_types.'
193 );
194 $notificationKeys = apply_filters('fluentform/global_notification_types', $notificationKeys, $formId);
195 $feeds = [];
196 if ($notificationKeys) {
197 $feeds = FormMeta::whereIn('meta_key', $notificationKeys)->where('form_id', $formId)->get();
198 }
199 $formattedFeeds = [];
200
201 if (count($feeds)) {
202 foreach ($feeds as $feed) {
203 $data = json_decode($feed->value, true);
204 $enabled = $data['enabled'];
205 if ($enabled && 'true' == $enabled) {
206 $enabled = true;
207 } elseif ('false' == $enabled) {
208 $enabled = false;
209 }
210 $feedData = [
211 'id' => $feed->id,
212 'name' => Arr::get($data, 'name'),
213 'enabled' => $enabled,
214 'provider' => $feed->meta_key,
215 'feed' => $data,
216 ];
217 $feedData = apply_filters_deprecated(
218 'fluentform_global_notification_feed_' . $feed->meta_key,
219 [
220 $feedData,
221 $formId
222 ],
223 FLUENTFORM_FRAMEWORK_UPGRADE,
224 'fluentform/global_notification_feed_' . $feed->meta_key,
225 'Use fluentform/global_notification_feed_' . $feed->meta_key . ' instead of fluentform_global_notification_feed_' . $feed->meta_key
226 );
227 $feedData = apply_filters('fluentform/global_notification_feed_' . $feed->meta_key, $feedData,
228 $formId);
229 $formattedFeeds[] = $feedData;
230 }
231 }
232 $availableIntegrations = apply_filters_deprecated(
233 'fluentform_get_available_form_integrations',
234 [
235 [],
236 $formId
237 ],
238 FLUENTFORM_FRAMEWORK_UPGRADE,
239 'fluentform/get_available_form_integrations',
240 'Use fluentform/get_available_form_integrations instead of fluentform_get_available_form_integrations.'
241 );
242 $availableIntegrations = apply_filters('fluentform/get_available_form_integrations', $availableIntegrations, $formId);
243
244 return ([
245 'feeds' => $formattedFeeds,
246 'available_integrations' => $availableIntegrations,
247 'all_module_config_url' => admin_url('admin.php?page=fluent_forms_add_ons'),
248 ]);
249 }
250
251 public function delete($id, $formId = null)
252 {
253 $query = FormMeta::where('id', $id);
254 if ($formId) {
255 $query->where('form_id', $formId);
256 }
257 $query->delete();
258 }
259
260 }
261