芝麻web文件管理V1.00
编辑当前文件:/home/royashxg/www/wp-content/plugins/fluentformpro/src/Integrations/Salesflare/Bootstrap.php
key), $this->key, '_fluentform_' . $this->key . '_settings', $this->key . '_feeds', 98 ); $this->logo = fluentFormMix('img/integrations/salesflare.png'); $this->description = 'Create Salesflare contact from WordPress, so you can grow your contact list.'; $this->registerAdminHooks(); // add_filter('fluentform/notifying_async_'.$this->key, '__return_false'); } public function pushIntegration($integrations, $formId) { $integrations[$this->integrationKey] = [ 'title' => sprintf(__('%s Integration', 'fluentformpro'), $this->name), 'logo' => $this->logo, 'is_active' => $this->isConfigured(), 'configure_title' => __('Configuration required!', 'fluentformpro'), 'global_configure_url' => admin_url( 'admin.php?page=fluent_forms_settings#general-' . $this->key . '-settings' ), 'configure_message' => sprintf( __('%s is not configured yet! Please configure the addon first.', 'fluentformpro'), $this->name ), 'configure_button_text' => __('Set API', 'fluentformpro') ]; return $integrations; } public function getGlobalSettings($settings) { $globalSettings = get_option($this->optionKey); if (!$globalSettings) { $globalSettings = []; } $defaults = [ 'apiKey' => '', 'status' => '' ]; return wp_parse_args($globalSettings, $defaults); } public function getGlobalFields($fields) { return [ 'logo' => $this->logo, 'menu_title' => sprintf(__('%s Integration Settings', 'fluentformpro'), $this->name), 'menu_description' => __( 'Copy the API Key from Salesflare settings API keys and paste it here, then click on Save.', 'fluentformpro' ), 'valid_message' => sprintf(__('Your %s API Key is valid', 'fluentformpro'), $this->name), 'invalid_message' => sprintf(__('Your %s API Key is not valid', 'fluentformpro'), $this->name), 'save_button_text' => __('Save Settings', 'fluentformpro'), 'fields' => [ 'apiKey' => [ 'type' => 'text', 'placeholder' => __('API Key', 'fluenformpro'), 'label_tips' => sprintf( __( 'Enter your %s Api Key, Copy the API Code and paste it here, then click on Save button', 'fluentformpro' ), $this->name ), 'label' => sprintf(__('%s API Key', 'fluentformpro'), $this->name), ], ], 'hide_on_valid' => true, 'discard_settings' => [ 'section_description' => sprintf( __('Your %s API integration is up and running', 'fluentformpro'), $this->name ), 'button_text' => sprintf(__('Disconnect %s', 'fluentformpro'), $this->name), 'data' => [ 'apiKey' => '' ], 'show_verify' => true ] ]; } public function saveGlobalSettings($settings) { if (!$settings['apiKey']) { $integrationSettings = [ 'apiKey' => '', 'status' => false ]; update_option($this->optionKey, $integrationSettings, 'no'); wp_send_json_success([ 'message' => __('Your settings has been updated and discarded', 'fluentformpro'), 'status' => false ], 200); } try { $apiKey = $settings['apiKey']; update_option($this->optionKey, [ 'status' => false, 'apiKey' => $apiKey ], 'no'); $response = (new API($apiKey))->ping(); if (!is_wp_error($response)) { update_option($this->optionKey, [ 'status' => true, 'apiKey' => $apiKey ], 'no'); wp_send_json_success([ 'status' => true, 'message' => __('Your settings has been updated!', 'fluentformpro') ], 200); } throw new \Exception($response->get_error_message(), 400); } catch (\Exception $e) { wp_send_json_error([ 'status' => false, 'message' => 'Invalid API key' ], $e->getCode()); } } public function getIntegrationDefaults($settings, $formId) { return [ 'name' => '', 'list_id' => '', 'email' => '', 'firstname' => '', 'lastname' => '', 'website' => '', 'company' => '', 'phone' => '', 'address' => '', 'city' => '', 'state' => '', 'zip' => '', 'tags' => '', 'fields' => (object)[], 'custom_fields_mapping' => [ [ 'item_value' => '', 'label' => '' ] ], 'conditionals' => [ 'conditions' => [], 'status' => false, 'type' => 'all' ], 'contact_update' => false, 'enabled' => true ]; } public function getSettingsFields($settings, $formId) { return [ 'fields' => [ [ 'key' => 'name', 'label' => __('Name', 'fluentformpro'), 'required' => true, 'placeholder' => __('Your Feed Name', 'fluentformpro'), 'component' => 'text' ], [ 'key' => 'fields', 'require_list' => false, 'label' => __('Map Fields', 'fluentformpro'), 'tips' => __('Select which Fluent Forms fields pair with their
respective ' . $this->name . ' fields.', 'fluentformpro'), 'component' => 'map_fields', 'field_label_remote' => $this->name . ' Field', 'field_label_local' => __('Form Field', 'fluentformpro'), 'primary_fileds' => [ [ 'key' => 'email', 'label' => __('Email Address', 'fluentformpro'), 'required' => true, 'input_options' => 'emails' ], [ 'key' => 'firstname', 'label' => __('First Name', 'fluentformpro') ], [ 'key' => 'lastname', 'label' => __('Last Name', 'fluentformpro') ], [ 'key' => 'phone_number', 'label' => __('Phone Number', 'fluentformpro') ], [ 'key' => 'country', 'label' => __('Country', 'fluentformpro') ], [ 'key' => 'city', 'label' => __('City', 'fluentformpro') ], [ 'key' => 'state_region', 'label' => __('State', 'fluentformpro') ], [ 'key' => 'street', 'label' => __('Street', 'fluentformpro') ], [ 'key' => 'zip', 'label' => __('Zip', 'fluentformpro') ], ] ], [ 'key' => 'custom_fields_mapping', 'require_list' => false, 'label' => __('Custom Fields', 'fluentformpro'), 'tips' => __('Select which Fluent Forms fields pair with their
respective ' . $this->name . ' fields.', 'fluentformpro'), 'component' => 'dropdown_many_fields', 'field_label_remote' => __($this->name . ' Field', 'fluentformpro'), 'field_label_local' => __('Form Field', 'fluentformpro'), 'options' => $this->customFields() ], [ 'require_list' => false, 'key' => 'tags', 'label' => __('Tags', 'fluentformpro'), 'tips' => __('Associate tags to your ' . $this->name . ' contacts with a comma separated list (e.g. new lead, FluentForms, web source). Commas within a merge tag value will be created as a single tag.', 'fluentformpro'), 'component' => 'value_text', 'inline_tip' => __('Please provide each tag by comma separated value, You can use dynamic smart codes', 'fluentformpro') ], [ 'require_list' => false, 'key' => 'conditionals', 'label' => __('Conditional Logics', 'fluentformpro'), 'tips' => __('Allow ' . $this->name . ' integration conditionally based on your submission values', 'fluentformpro'), 'component' => 'conditional_block' ], [ 'require_list' => false, 'key' => 'enabled', 'label' => __('Status', 'fluentformpro'), 'component' => 'checkbox-single', 'checkbox_label' => __('Enable This feed', 'fluentformpro') ] ], 'button_require_list' => false, 'integration_title' => $this->title ]; } public function getMergeFields($list, $listId, $formId) { return []; } public function customFields() { $api = $this->getApiClient(); $fields = $api->customFields(); $formattedFields = []; foreach ($fields as $field) { if (isset($field['api_field'])) { $formattedFields[$field['api_field']] = $field['name']; } } return $formattedFields; } protected function getApiClient() { $settings = $this->getGlobalSettings([]); return new API( $settings['apiKey'] ); } public function notify($feed, $formData, $entry, $form) { $feedData = $feed['processedValues']; if (!is_email($feedData['email'])) { $feedData['email'] = ArrayHelper::get($formData, $feedData['email']); } if (!is_email($feedData['email'])) { do_action( 'fluentform/integration_action_result', $feed, 'failed', $this->name . __(' API called skipped because no valid email available', 'fluentformpro') ); return; } $addData = [ 'email' => $feedData['email'], 'firstname' => ArrayHelper::get($feedData, 'firstname'), 'lastname' => ArrayHelper::get($feedData, 'lastname'), 'phone_number' => ArrayHelper::get($feedData, 'phone_number'), ]; if ($this->addressData($feedData)) { $addData['address'] = $this->addressData($feedData); } if ($customFields = ArrayHelper::get($feedData, 'custom_fields_mapping')) { $customData = []; foreach ($customFields as $customField) { $customData[$customField['label']] = $customField['item_value']; } $customData = array_filter($customData); if ($customData) { $addData['custom'] = $customData; } } $tags = ArrayHelper::get($feedData, 'tags'); if (!is_array($tags)) { $tags = explode(',', $tags); } $tags = array_map('trim', $tags); $tags = array_filter($tags); if ($tags) { $addData['tags'] = $tags; } $addData = apply_filters_deprecated( 'fluentform_integration_data_' . $this->integrationKey, [ $addData, $feed, $entry ], FLUENTFORM_FRAMEWORK_UPGRADE, 'fluentform/integration_data_' . $this->integrationKey, 'Use fluentform/integration_data_' . $this->integrationKey . ' instead of fluentform_integration_data_' . $this->integrationKey ); $addData = apply_filters('fluentform/integration_data_' . $this->integrationKey, $addData, $feed, $entry); $response = $this->getApiClient()->createContact($addData); if (!is_wp_error($response) && isset($response['id'])) { do_action( 'fluentform/integration_action_result', $feed, 'success', $this->name . __(' feed has been successfully initialed and pushed data', 'fluentformpro') ); } else { $error = is_wp_error($response) ? $response->get_error_messages() : 'API Error when submitting Data'; do_action('fluentform/integration_action_result', $feed, 'failed', $error); } } private function addressData($feedData) { $addressList = ArrayHelper::only($feedData, [ 'city', 'country', 'state_region', 'street', 'zip' ]); $address = []; foreach ($addressList as $addressKey => $value) { $address[$addressKey] = $value; } if (count(array_filter($address)) > 0) { return array_filter($address); } return false; } }