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