PluginProbe
Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder / 5.2.9
Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder v5.2.9
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 / Modules / Form / Transfer.php

Transfer.php in Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder 5.2.9, at app/Modules/Form/Transfer.php

177 lines 6.5 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\Modules\Form;
4
5 use FluentForm\App\Helpers\Helper;
6 use FluentForm\Framework\Foundation\Application;
7 use FluentForm\Framework\Helpers\ArrayHelper;
8 use FluentForm\Framework\Request\File;
9
10 /* @deprecated Current File FluentForm\App\Http\Controllers\TransferController */
11
12 class Transfer
13 {
14 /**
15 * Request object
16 *
17 * @var \FluentForm\Framework\Request\Request $request
18 */
19 protected $request;
20
21 /**
22 * Transfer constructor.
23 *
24 * @param \FluentForm\Framework\Foundation\Application $application
25 */
26 public function __construct(Application $application)
27 {
28 $this->request = $application->make('request');
29 }
30
31 /**
32 * Export forms as JSON.
33 */
34 public function export()
35 {
36 // Get the IDs of the forms the user wants to be exported.
37 $formIds = $this->request->get('forms');
38
39 // Load the forms for a given form IDs and the settings from the DB.
40 $result = wpFluent()
41 ->table('fluentform_forms')
42 ->whereIn('id', $formIds)
43 ->get();
44
45 // Prepare the loaded query results to form and it's settings objects.
46 $forms = [];
47 foreach ($result as $item) {
48 $form = $item;
49 $form->form_fields = json_decode($form->form_fields);
50 $form->metas = $this->getFormMetas($item->id);
51 $forms[] = $form;
52 }
53
54 $fileName = 'fluentform-export-forms-' . count($forms) . '-' . date('d-m-Y') . '.json';
55
56 header('Content-disposition: attachment; filename=' . $fileName);
57
58 header('Content-type: application/json');
59
60 echo json_encode(array_values($forms)); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- $forms is escaped before being passed in.
61
62 die();
63 }
64
65 /**
66 * Import forms from a previously exported JSON file.
67 */
68 public function import()
69 {
70 $file = $this->request->file('file');
71
72 if ($file instanceof File) {
73 $forms = \json_decode($file->getContents(), true);
74 $insertedForms = [];
75 if ($forms && is_array($forms)) {
76 foreach ($forms as $formItem) {
77 // First of all make the form object.
78 $formFields = json_encode([]);
79 if ($fields = ArrayHelper::get($formItem, 'form', '')) {
80 $formFields = json_encode($fields);
81 } elseif ($fields = ArrayHelper::get($formItem, 'form_fields', '')) {
82 $formFields = json_encode($fields);
83 } else {
84 wp_send_json([
85 'message' => __('You have a faulty JSON file, please export the Fluent Forms again.', 'fluentform'),
86 ], 422);
87 }
88
89 $form = [
90 'title' => ArrayHelper::get($formItem, 'title'),
91 'form_fields' => $formFields,
92 'status' => ArrayHelper::get($formItem, 'status', 'published'),
93 'has_payment' => ArrayHelper::get($formItem, 'has_payment', 0),
94 'type' => ArrayHelper::get($formItem, 'type', 'form'),
95 'created_by' => get_current_user_id(),
96 ];
97
98 if (ArrayHelper::get($formItem, 'conditions')) {
99 $form['conditions'] = ArrayHelper::get($formItem, 'conditions');
100 }
101
102 if (isset($formItem['appearance_settings'])) {
103 $form['appearance_settings'] = $formItem['appearance_settings'];
104 }
105
106 // Insert the form to the DB.
107 $formId = wpFluent()->table('fluentform_forms')->insertGetId($form);
108
109 $insertedForms[$formId] = [
110 'title' => $form['title'],
111 'edit_url' => admin_url('admin.php?page=fluent_forms&route=editor&form_id=' . $formId),
112 ];
113
114 if (isset($formItem['metas'])) {
115 foreach ($formItem['metas'] as $metaData) {
116 $settings = [
117 'form_id' => $formId,
118 'meta_key' => $metaData['meta_key'],
119 'value' => $metaData['value'],
120 ];
121 wpFluent()->table('fluentform_form_meta')->insert($settings);
122 }
123 } else {
124 $oldKeys = [
125 'formSettings',
126 'notifications',
127 'mailchimp_feeds',
128 'slack',
129 ];
130 foreach ($oldKeys as $key) {
131 if (isset($formItem[$key])) {
132 $settings = [
133 'form_id' => $formId,
134 'meta_key' => $key,
135 'value' => json_encode($formItem[$key]),
136 ];
137 wpFluent()->table('fluentform_form_meta')->insert($settings);
138 }
139 }
140 }
141
142 do_action_deprecated(
143 'fluentform_form_imported',
144 [
145 $formId
146 ],
147 FLUENTFORM_FRAMEWORK_UPGRADE,
148 'fluentform/form_imported',
149 'Use fluentform/form_imported instead of fluentform_form_imported.'
150 );
151
152 do_action('fluentform/form_imported', $formId);
153 }
154
155 wp_send_json([
156 'message' => __('You form has been successfully imported.', 'fluentform'),
157 'inserted_forms' => $insertedForms,
158 ], 200);
159 }
160 }
161
162 wp_send_json([
163 'message' => __('You have a faulty JSON file, please export the Fluent Forms again.', 'fluentform'),
164 ], 422);
165 }
166
167 public function getFormMetas($formId)
168 {
169 return wpFluent()
170 ->table('fluentform_form_meta')
171 ->select(['meta_key', 'value'])
172 ->where('form_id', $formId)
173 ->whereNotIn('meta_key', ['_total_views', '_ff_form_styler_css'])
174 ->get();
175 }
176 }
177