芝麻web文件管理V1.00
编辑当前文件:/home/royashxg/www/wp-content/plugins/fluentform/app/Modules/Form/Settings/FormSettings.php
app = $application; $this->request = $application->request; $this->formId = intval($this->request->get('form_id')); $this->settingsQuery = wpFluent()->table('fluentform_form_meta')->where('form_id', $this->formId); } /** * Get settings for a particular form by id */ public function index() { $metaKey = sanitize_text_field($this->request->get('meta_key')); // We'll always try to get a collection for a given meta key. // Acknowledging that a certain meta key can have multiple // results. The developer using the api knows beforehand // that whether the expected result contains multiple // or one value. The developer will access that way. $query = $this->settingsQuery->where('meta_key', $metaKey); $result = $query->get(); foreach ($result as $item) { $item->value = json_decode($item->value, true); if ('notifications' == $metaKey) { if (!$item->value) { $item->value = ['name' => '']; } } if (isset($item->value['layout']) && !isset($item->value['layout']['asteriskPlacement'])) { $item->value['layout']['asteriskPlacement'] = 'asterisk-right'; } } $result = apply_filters_deprecated( 'fluentform_get_meta_key_settings_response', [ $result, $this->formId, $metaKey ], FLUENTFORM_FRAMEWORK_UPGRADE, 'fluentform/get_meta_key_settings_response', 'Use fluentform/get_meta_key_settings_response instead of fluentform_get_meta_key_settings_response.' ); $result = $this->app->applyFilters('fluentform/get_meta_key_settings_response', $result, $this->formId, $metaKey); wp_send_json_success(['result' => $result], 200); } public function getGeneralSettingsAjax() { $formId = intval($this->request->get('form_id')); $form = new Form($this->app); $settings = [ 'generalSettings' => $form->getFormsDefaultSettings($formId), 'advancedValidationSettings' => $form->getAdvancedValidationSettings($formId), ]; $settings = apply_filters_deprecated( 'fluentform_form_settings_ajax', [ $settings, $formId ], FLUENTFORM_FRAMEWORK_UPGRADE, 'fluentform/form_settings_ajax', 'Use fluentform/form_settings_ajax instead of fluentform_form_settings_ajax.' ); $settings = $this->app->applyFilters('fluentform/form_settings_ajax', $settings, $formId); wp_send_json_success($settings, 200); } public function saveGeneralSettingsAjax() { $formId = intval($this->request->get('form_id')); $form = new Form($this->app); $formSettings = \json_decode($this->request->get('formSettings'), true); $sanitizerMap = [ 'redirectTo' => 'sanitize_text_field', 'redirectMessage' => 'fluentform_sanitize_html', 'messageToShow' => 'fluentform_sanitize_html', 'customPage' => 'sanitize_text_field', 'samePageFormBehavior' => 'sanitize_text_field', 'customUrl' => 'sanitize_url', 'enabled' => 'rest_sanitize_boolean', 'numberOfEntries' => 'intval', 'period' => 'intval', 'limitReachedMsg' => 'sanitize_text_field', 'start' => 'sanitize_text_field', 'end' => 'sanitize_text_field', 'pendingMsg' => 'sanitize_text_field', 'expiredMsg' => 'sanitize_text_field', 'requireLoginMsg' => 'sanitize_text_field', 'message' => 'sanitize_text_field', 'labelPlacement' => 'sanitize_text_field', 'helpMessagePlacement' => 'sanitize_text_field', 'errorMessagePlacement' => 'sanitize_text_field', 'asteriskPlacement' => 'sanitize_text_field', 'delete_entry_on_submission' => 'sanitize_text_field', 'id' => 'intval', 'showLabel' => 'rest_sanitize_boolean', 'showCount' => 'rest_sanitize_boolean', 'status' => 'rest_sanitize_boolean', 'type' => 'sanitize_text_field', 'field' => 'sanitize_text_field', 'operator' => 'sanitize_text_field', 'value' => 'sanitize_text_field', 'error_message' => 'sanitize_text_field', 'validation_type' => 'sanitize_text_field', 'conv_form_per_step_save' => 'rest_sanitize_boolean', 'conv_form_resume_from_last_step' => 'rest_sanitize_boolean', ]; $formSettings = $this->sanitizeData($formSettings, $sanitizerMap); $advancedValidationSettings = \json_decode($this->request->get('advancedValidationSettings'), true); $advancedValidationSettings = $this->sanitizeData($advancedValidationSettings, $sanitizerMap); Validator::validate( 'confirmations', ArrayHelper::get($formSettings, 'confirmation', []) ); $form->updateMeta($formId, 'formSettings', $formSettings); $form->updateMeta($formId, 'advancedValidationSettings', $advancedValidationSettings); $deleteAfterXDaysStatus = ArrayHelper::get($formSettings, 'delete_after_x_days'); $deleteDaysCount = ArrayHelper::get($formSettings, 'auto_delete_days'); $deleteOnSubmission = ArrayHelper::get($formSettings, 'delete_entry_on_submission'); if ('yes' != $deleteOnSubmission && $deleteDaysCount && 'yes' == $deleteAfterXDaysStatus) { // We have to set meta values $form->updateMeta($formId, 'auto_delete_days', intval($deleteDaysCount)); } else { // we have to delete meta values $form->deleteMeta($formId, 'auto_delete_days'); } do_action_deprecated( 'fluentform_after_save_form_settings', [ $formId, $this->request->all() ], FLUENTFORM_FRAMEWORK_UPGRADE, 'fluentform/after_save_form_settings', 'Use fluentform/after_save_form_settings instead of fluentform_after_save_form_settings.' ); $this->app->doAction('fluentform/after_save_form_settings', $formId, $this->request->all()); wp_send_json_success([ 'message' => __('Settings has been saved.', 'fluentform'), ], 200); } /** * Save settings/meta for a form in database */ public function store() { $value = $this->request->get('value', ''); $valueArray = $value ? json_decode($value, true) : []; $key = sanitize_text_field($this->request->get('meta_key')); if ('formSettings' == $key) { Validator::validate( 'confirmations', ArrayHelper::get( $valueArray, 'confirmation', [] ) ); } else { Validator::validate($key, $valueArray); } $sanitizerMap = [ 'name' => 'sanitize_text_field', 'field' => 'sanitize_text_field', 'email' => 'sanitize_text_field', 'operator' => 'sanitize_text_field', 'value' => 'sanitize_text_field', 'fromName' => 'sanitize_text_field', 'fromEmail' => 'sanitize_text_field', 'replyTo' => 'sanitize_text_field', 'bcc' => 'sanitize_text_field', 'subject' => 'sanitize_text_field', 'message' => 'wp_kses_post', 'status' => 'rest_sanitize_boolean', 'enabled' => 'rest_sanitize_boolean', 'type' => 'sanitize_text_field', 'url' => 'sanitize_url', 'webhook' => 'sanitize_url', 'textTitle' => 'sanitize_text_field', ]; $valueArray = $this->sanitizeData($valueArray, $sanitizerMap); $value = json_encode($valueArray); $data = [ 'meta_key' => $key, 'value' => $value, 'form_id' => $this->formId, ]; // If the request has an valid id field it's safe to assume // that the user wants to update an existing settings. // So, we'll proceed to do so by finding it first. $id = intval($this->request->get('id')); if ($id) { $settings = $this->settingsQuery->find($id); } if (isset($settings)) { $this->settingsQuery->where('id', $settings->id)->update($data); $insertId = $settings->id; } else { $insertId = $this->settingsQuery->insertGetId($data); } wp_send_json_success([ 'message' => __('Settings has been saved.', 'fluentform'), 'settings' => json_decode($value, true), 'id' => $insertId, ], 200); } /** * Delete settings/meta from database for a given form */ public function remove() { $id = intval($this->request->get('id')); $this->settingsQuery->where('id', $id)->delete(); wp_send_json([], 200); } private function sanitizeData($settings, $sanitizerMap) { if (fluentformCanUnfilteredHTML()) { return $settings; } return fluentform_backend_sanitizer($settings, $sanitizerMap); } }