shell bypass 403
GrazzMean Shell
: /home/nayff91c5tsx/www/wp-content/plugins/fluentformpro/src/Integrations/ClickSend/ [ drwx---r-x ]
<?php
namespace FluentFormPro\Integrations\ClickSend;
if (!defined('ABSPATH')) {
exit; // Exit if accessed directly.
}
use FluentForm\App\Http\Controllers\IntegrationManagerController;
use FluentForm\Framework\Foundation\Application;
use FluentForm\Framework\Helpers\ArrayHelper;
class Bootstrap extends IntegrationManagerController
{
public function __construct(Application $app)
{
parent::__construct(
$app,
'ClickSend',
'clicksend_sms_notification',
'_fluentform_clicksend_sms_notification_settings',
'clicksend_sms_notification_feed',
25
);
$this->logo = fluentFormMix('img/integrations/clicksend.png');
$this->description = 'Send SMS in real time when a form is submitted with ClickSend.';
$this->registerAdminHooks();
add_filter('fluentform/save_integration_value_' . $this->integrationKey, [$this, 'validate'], 10, 3);
add_action('wp_ajax_fluentform_clicksend_sms_config', array($this, 'getClickSendConfigOptions'));
// add_filter('fluentform/notifying_async_clicksend_sms_notification', '__return_false');
add_filter(
'fluentform/get_integration_values_clicksend_sms_notification',
[$this, 'resolveIntegrationSettings'],
100,
3
);
}
public function getClickSendConfigOptions()
{
}
public function getGlobalFields($fields)
{
return [
'logo' => $this->logo,
'menu_title' => __('SMS Provider Settings (ClickSend)', 'fluentformpro'),
'menu_description' => __('Please Provide your ClickSend Settings here', 'fluentformpro'),
'valid_message' => __('Your ClickSend API Key is valid', 'fluentformpro'),
'invalid_message' => __('Your ClickSend API Key is not valid', 'fluentformpro'),
'save_button_text' => __('Save Settings', 'fluentformpro'),
'config_instruction' => __($this->getConfigInstructions(), 'fluentformpro'),
'fields' => [
'senderNumber' => [
'type' => 'text',
'placeholder' => __('ClickSend Sender Number', 'fluentformpro'),
'label_tips' => __("Enter your ClickSend sender number", 'fluentformpro'),
'label' => __('Sender Number', 'fluentformpro'),
],
'username' => [
'type' => 'text',
'placeholder' => __('ClickSend Username', 'fluentformpro'),
'label_tips' => __("Enter ClickSend Username. This can be found from ClickSend", 'fluentformpro'),
'label' => __('Username', 'fluentformpro'),
],
'authToken' => [
'type' => 'password',
'placeholder' => __('API Key', 'fluentformpro'),
'label_tips' => __("Enter ClickSend API Key. This can be found from ClickSend", 'fluentformpro'),
'label' => __('API Key', 'fluentformpro'),
]
],
'hide_on_valid' => true,
'discard_settings' => [
'section_description' => __('Your ClickSend API integration is up and running', 'fluentformpro'),
'button_text' => __('Disconnect ClickSend', 'fluentformpro'),
'data' => [
'authToken' => ''
],
'show_verify' => true
]
];
}
public function getGlobalSettings($settings)
{
$globalSettings = get_option($this->optionKey);
if (!$globalSettings) {
$globalSettings = [];
}
$defaults = [
'senderNumber' => '',
'username' => '',
'authToken' => '',
'provider' => 'ClickSend'
];
return wp_parse_args($globalSettings, $defaults);
}
public function saveGlobalSettings($settings)
{
try {
if (empty($settings['authToken'])) {
//prevent saving integration without the sender number
throw new \Exception(
__('API Key is required', 'fluentformpro')
);
}
if (empty($settings['senderNumber'])) {
//prevent saving integration without the sender number
throw new \Exception(
__('Sender number is required', 'fluentformpro')
);
}
if (empty($settings['username'])) {
//prevent saving integration without the sender number
throw new \Exception(
__('Username number is required', 'fluentformpro')
);
}
$integrationSettings = [
'senderNumber' => sanitize_textarea_field($settings['senderNumber']),
'username' => sanitize_text_field($settings['username']),
'authToken' => sanitize_text_field($settings['authToken']),
'provider' => 'ClickSend',
'status' => false
];
update_option($this->optionKey, $integrationSettings, 'no');
$api = new ClickSend($settings['authToken'], $settings['username']);
$result = $api->auth_test();
if (!empty($result['error'])) {
throw new \Exception($result['message']);
}
} catch (\Exception $exception) {
$integrationSettings = [
'senderNumber' => '',
'username' => '',
'authToken' => '',
'provider' => 'ClickSend',
'status' => false
];
update_option($this->optionKey, $integrationSettings, 'no');
wp_send_json_error([
'message' => $exception->getMessage()
], 400);
}
// Integration key is verified now, Proceed now
$integrationSettings = [
'senderNumber' => sanitize_textarea_field($settings['senderNumber']),
'username' => sanitize_text_field($settings['username']),
'authToken' => sanitize_text_field($settings['authToken']),
'provider' => 'ClickSend',
'status' => true
];
// Update the reCaptcha details with siteKey & secretKey.
update_option($this->optionKey, $integrationSettings, 'no');
wp_send_json_success([
'message' => __('Your ClickSend API Key has been verified and successfully set', 'fluentformpro'),
'status' => true
], 200);
}
public function pushIntegration($integrations, $formId)
{
$integrations[$this->integrationKey] = [
'title' => __('ClickSend SMS Notification', 'fluentformpro'),
'logo' => $this->logo,
'is_active' => $this->isConfigured(),
'configure_title' => __('Configuration required!', 'fluentformpro'),
'global_configure_url' => admin_url('admin.php?page=fluent_forms_settings#general-clicksend_sms_notification-settings'),
'configure_message' => __('ClickSend SMS Notification is not configured yet! Please configure your ClickSend SMS api first', 'fluentformpro'),
'configure_button_text' => __('Set ClickSend SMS Notification API', 'fluentformpro')
];
return $integrations;
}
public function getIntegrationDefaults($settings, $formId)
{
$name = $this->app->request->get('serviceName', '');
$listId = $this->app->request->get('serviceId', '');
return [
'name' => $name,
'receiver_number' => '',
'list_id' => $listId,
'email' => '',
'message_body' => 'message-input',
'message' => '',
'phone_number' => '',
'fields' => (object)[],
'other_add_contact_fields' => [
[
'item_value' => '',
'label' => ''
]
],
'contact_list_name' => '',
'campaign_name' => '',
'email_campaign_subject' => '',
'campaign_list_id' => '',
'schedule' => '',
'template_id' => '',
'email_template_id' => '',
'email_address_id' => '',
'email_form_name' => '',
'enabled' => true,
'conditionals' => [
'conditions' => [],
'status' => false,
'type' => 'all'
],
];
}
public function getSettingsFields($settings, $formId)
{
$fieldSettings = [
'fields' => [
[
'key' => 'name',
'label' => __('Name', 'fluentformpro'),
'required' => true,
'placeholder' => __('Your Feed Name', 'fluentformpro'),
'component' => 'text'
],
[
'key' => 'list_id',
'label' => __('Services', 'fluentformpro'),
'placeholder' => __('Choose Service', 'fluentformpro'),
'required' => true,
'component' => 'refresh',
'options' => [
'single-sms' => 'Single SMS',
'sms-campaign' => 'SMS Campaign',
'create-new-contact' => 'Create Subscriber Contact',
'add-contact-list' => 'Add Contact List',
'email-campaign' => 'Add Email Campaign',
]
]
],
'button_require_list' => false,
'integration_title' => $this->title
];
$listId = $this->app->request->get(
'serviceId',
ArrayHelper::get($settings, 'list_id')
);
if ($listId) {
$fields = $this->getFieldsByService($listId);
$fields = array_merge($fieldSettings['fields'], $fields);
$fieldSettings['fields'] = $fields;
}
$fieldSettings['fields'] = array_merge($fieldSettings['fields'], [
[
'require_list' => false,
'key' => 'conditionals',
'label' => __('Conditional Logics', 'fluentformpro'),
'tips' => __('Allow this 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')
]
]);
return $fieldSettings;
}
public function getFieldsByService($listId)
{
$api = $this->getRemoteClient();
switch ($listId){
case 'single-sms':
$template_options = array();
$templates = $api->getTemplates('sms/templates');
if (!is_wp_error($templates)) {
foreach ($templates['data']['data'] as $template) {
$template_options[$template['template_id']] = $template['template_name'];
}
}
$fields = [
[
'key' => 'message_body',
'label' => __('Message Body', 'fluentformpro'),
'tips' => __('Select your message body type e.g. Input Message or Template Message.', 'fluentformpro'),
'placeholder' => __('Choose Message Body', 'fluentformpro'),
'required' => true,
'component' => 'select',
'options' => [
'message-input' => 'Input Message',
'template-message' => 'Template Message',
]
],
[
'key' => 'receiver_number',
'label' => __('To', 'fluentformpro'),
'required' => true,
'tips' => __('Enter a receiver number or select input field shortcode.', 'fluentformpro'),
'placeholder' => __('Type the receiver number', 'fluentformpro'),
'component' => 'value_text'
],
[
'key' => 'message',
'label' => __('Message', 'fluentformpro'),
'tips' => __('Enter your message. If you chose Template Message as Message Body, you can ignore this settings.', 'fluentformpro'),
'required' => false,
'placeholder' => __('Message Body', 'fluentformpro'),
'component' => 'value_textarea'
],
[
'key' => 'template_id',
'label' => __('SMS Template', 'fluentformpro'),
'placeholder' => __('Choose Template', 'fluentformpro'),
'tips' => __('Choose a template for SMS body. This settings won\'t take effect if you chose Input Message as Message Body.', 'fluentformpro'),
'required' => false,
'component' => 'select',
'options' => $template_options
],
[
'key' => 'schedule',
'label' => __('SMS Schedule', 'fluentformpro'),
'placeholder' => __('SMS schedule date and time ', 'fluentformpro'),
'tips' => __('Optional. Choose a datetime for sending SMS. If empty, SMS will be sent immediately.', 'fluentformpro'),
'required' => false,
'component' => 'datetime',
]
];
break;
case 'sms-campaign':
$template_options = array();
$templates = $api->getTemplates('sms/templates');
if (!is_wp_error($templates)) {
foreach ($templates['data']['data'] as $template) {
$template_options[$template['template_id']] = $template['template_name'];
}
}
$list_options = array();
$lists = $api->getLists();
if (!is_wp_error($lists)) {
foreach ($lists['data']['data'] as $list) {
$list_options[$list['list_id']] = $list['list_name'];
}
}
$fields = [
[
'key' => 'message_body',
'label' => __('Message Body', 'fluentformpro'),
'tips' => __('Select your message body type e.g. Input Message or Template Message.', 'fluentformpro'),
'placeholder' => __('Choose Message Body', 'fluentformpro'),
'required' => true,
'component' => 'select',
'options' => [
'message-input' => 'Input Message',
'template-message' => 'Template Message',
]
],
[
'key' => 'campaign_name',
'label' => __('Campaign Name', 'fluentformpro'),
'tips' => __('Enter your campaign name or select input shortcode field for campaign name.', 'fluentformpro'),
'required' => true,
'placeholder' => __('Campaign Name', 'fluentformpro'),
'component' => 'value_text'
],
[
'key' => 'campaign_list_id',
'label' => __('Campaign List', 'fluentformpro'),
'placeholder' => __('Choose list', 'fluentformpro'),
'tips' => __('Choose a list for sending SMS to all of its contact.', 'fluentformpro'),
'required' => true,
'component' => 'select',
'options' => $list_options
],
[
'key' => 'message',
'label' => __('Message', 'fluentformpro'),
'tips' => __('Enter your message. If you chose Template Message as Message Body, you can ignore this settings.', 'fluentformpro'),
'required' => false,
'placeholder' => __('Message Body', 'fluentformpro'),
'component' => 'value_textarea'
],
[
'key' => 'template_id',
'label' => __('SMS Template', 'fluentformpro'),
'placeholder' => __('Choose Template', 'fluentformpro'),
'tips' => __('Choose a template for SMS body. This settings won\'t take effect if you chose Input Message as Message Body.', 'fluentformpro'),
'required' => false,
'component' => 'select',
'options' => $template_options
],
[
'key' => 'schedule',
'label' => __('Campaign Schedule', 'fluentformpro'),
'placeholder' => __('Campaign schedule date and time ', 'fluentformpro'),
'tips' => __('Choose a datetime for your SMS campaign.', 'fluentformpro'),
'required' => false,
'component' => 'datetime',
]
];
break;
case 'create-new-contact':
$list_options = array();
$lists = $api->getLists();
if (!is_wp_error($lists)) {
foreach ($lists['data']['data'] as $list){
$list_options[$list['list_id']] = $list['list_name'];
}
}
$fields = [
[
'key' => 'campaign_list_id',
'label' => __('Campaign List', 'fluentformpro'),
'placeholder' => __('Choose list', 'fluentformpro'),
'tips' => __('Choose the list to which the contact should be added.', 'fluentformpro'),
'required' => true,
'component' => 'select',
'options' => $list_options
],
[
'key' => 'phone_number',
'label' => __('Phone Number', 'fluentformpro'),
'placeholder' => __('Subscriber Number', 'fluentformpro'),
'tips' => __('Enter subscriber or select input shortcode field to add contact in the list.', 'fluentformpro'),
'required' => true,
'component' => 'value_text',
],
[
'key' => 'email',
'label' => __('Email', 'fluentformpro'),
'placeholder' => __('Subscriber Email', 'fluentformpro'),
'tips' => __('Enter subscriber email or select input shortcode field to add contact in the list.', 'fluentformpro'),
'required' => true,
'component' => 'value_text',
],
[
'key' => 'other_add_contact_fields',
'required' => false,
'label' => __('Other Fields', 'fluentformpro'),
'tips' => __('Other contact fields to add more information about the contact. These fields are optional.',
'fluentformpro'),
'component' => 'dropdown_many_fields',
'options' => [
'first_name' => __('First Name', 'fluentformpro'),
'last_name' => __('Last Name', 'fluentformpro'),
'organization_name' => __('Company', 'fluentformpro'),
'fax_number' => __('Fax Number', 'fluentformpro'),
'address_line_1' => __('Address Line 1', 'fluentformpro'),
'address_line_2' => __('Address Line 2', 'fluentformpro'),
'address_city' => __('City', 'fluentformpro'),
'address_state' => __('State', 'fluentformpro'),
'address_postal_code' => __('Postal Code', 'fluentformpro'),
'address_country' => __('Country', 'fluentformpro'),
'custom_1' => __('Custom Field 1', 'fluentformpro'),
'custom_2' => __('Custom Field 2', 'fluentformpro'),
'custom_3' => __('Custom Field 3', 'fluentformpro'),
'custom_4' => __('Custom Field 4', 'fluentformpro'),
]
],
];
break;
case 'email-campaign':
$list_options = array();
$lists = $api->getLists();
if (!is_wp_error($lists)) {
foreach ($lists['data']['data'] as $list) {
$list_options[$list['list_id']] = $list['list_name'];
}
}
$template_options = array();
$templates = $api->getTemplates('email/templates');
if (!is_wp_error($templates)) {
foreach ($templates['data']['data'] as $template) {
$template_options[$template['template_id']] = $template['template_name'];
}
}
$email_address_options = array();
$email_address = $api->getEmailAddress('email/addresses');
if (!is_wp_error($email_address)) {
foreach ($email_address['data']['data'] as $email_info) {
$email_address_options[$email_info['email_address_id']] = $email_info['email_address'];
}
}
$from_name_options = array();
$account_info = $api->get('account');
if (!is_wp_error($account_info)) {
$first_name = $account_info['data']['user_first_name'];
$last_name = $account_info['data']['user_last_name'];
$from_name_options[$first_name . ' ' . $last_name] = $first_name . ' ' . $last_name;
$from_name_options[$first_name] = $first_name;
$from_name_options[$last_name] = $last_name;
$from_name_options[$account_info['data']['username']] = $account_info['data']['username'];
$from_name_options[$account_info['data']['account_name']] = $account_info['data']['account_name'];
}
$fields = [
[
'key' => 'campaign_name',
'label' => __('Campaign Name', 'fluentformpro'),
'tips' => __('Enter your campaign name or select input shortcode field for campaign name.', 'fluentformpro'),
'required' => true,
'placeholder' => __('Campaign Name', 'fluentformpro'),
'component' => 'value_text'
],
[
'key' => 'email_campaign_subject',
'label' => __('Campaign Subject', 'fluentformpro'),
'tips' => __('Enter your campaign subject or select input shortcode field for campaign subject.', 'fluentformpro'),
'required' => true,
'placeholder' => __('Campaign Subject', 'fluentformpro'),
'component' => 'value_text'
],
[
'key' => 'campaign_list_id',
'label' => __('Campaign List', 'fluentformpro'),
'placeholder' => __('Choose list', 'fluentformpro'),
'tips' => __('Choose a list for sending email to all of its contact.', 'fluentformpro'),
'required' => true,
'component' => 'select',
'options' => $list_options
],
[
'key' => 'message',
'label' => __('Message', 'fluentformpro'),
'tips' => __('Enter your message.', 'fluentformpro'),
'required' => true,
'placeholder' => __('Message Body', 'fluentformpro'),
'component' => 'value_textarea'
],
[
'key' => 'email_template_id',
'label' => __('Email Template', 'fluentformpro'),
'placeholder' => __('Choose Template', 'fluentformpro'),
'tips' => __('Choose a template for SMS body.', 'fluentformpro'),
'required' => false,
'component' => 'select',
'options' => $template_options
],
[
'key' => 'email_address_id',
'label' => __('From Email Address', 'fluentformpro'),
'placeholder' => __('Enter From Email', 'fluentformpro'),
'tips' => __('Enter an email address for Form Email.', 'fluentformpro'),
'required' => true,
'component' => 'select',
'options' => $email_address_options
],
[
'key' => 'email_form_name',
'label' => __('Email Form Name', 'fluentformpro'),
'placeholder' => __('Enter Form Name', 'fluentformpro'),
'tips' => __('Enter a name for sending email Form Name.', 'fluentformpro'),
'required' => true,
'component' => 'select',
'options' => $from_name_options
],
[
'key' => 'schedule',
'label' => __('Campaign Schedule', 'fluentformpro'),
'placeholder' => __('Campaign schedule date and time ', 'fluentformpro'),
'tips' => __('Choose a datetime for your sms campaign.', 'fluentformpro'),
'required' => false,
'component' => 'datetime',
]
];
break;
case 'add-contact-list':
$fields = [
[
'key' => 'contact_list_name',
'label' => __('List Name', 'fluentformpro'),
'placeholder' => __('Contact List Name', 'fluentformpro'),
'tips' => __('Enter name or select input shortcode field for contact list.', 'fluentformpro'),
'required' => true,
'component' => 'value_text',
],
];
break;
default:
return [];
}
return $fields;
}
public function resolveIntegrationSettings($settings, $feed, $formId)
{
$serviceName = $this->app->request->get('serviceName', '');
$serviceId = $this->app->request->get('serviceId', '');
if ($serviceName) {
$settings['name'] = $serviceName;
}
if ($serviceId) {
$settings['list_id'] = $serviceId;
}
return $settings;
}
public function getMergeFields($list, $listId, $formId)
{
return false;
}
public function validate($settings, $integrationId, $formId)
{
$error = false;
$errors = array();
foreach ($this->getFieldsByService($settings['list_id']) as $field){
if ($field['required'] && empty($settings[$field['key']])) {
$error = true;
$errors[$field['key']] = [__($field['label'] .' is required', 'fluentformpro')];
}
}
if ($error){
wp_send_json_error([
'message' => __('Validation Failed', 'fluentformpro'),
'errors' => $errors
], 423);
}
return $settings;
}
/*
* Form Submission Hooks Here
*/
public function notify($feed, $formData, $entry, $form)
{
$feedData = $feed['processedValues'];
if (empty($feedData['list_id'])) {
do_action('fluentform/integration_action_result', $feed, 'failed', __('No Valid Service Found', 'fluentformpro'));
return;
}
$apiSettings = $this->getGlobalSettings([]);
$api = $this->getRemoteClient();
// sms body
$smsBody = '';
if (!empty($feedData['message_body'])) {
if ($feedData['message_body'] == 'template-message' && !empty($feedData['template_id'])) {
$templates = $api->getTemplates('sms/templates');
if (!is_wp_error($templates)) {
foreach ($templates['data']['data'] as $template) {
if ($template['template_id'] == $feedData['template_id']) {
$smsBody = $template['body'];
}
}
}
}
if ($feedData['message_body'] == 'message-input' && !empty($feedData['message'])) {
$smsBody = $feedData['message'];
}
}
// sms time schedule
$schedule = 0;
if (!empty($feedData['schedule'])) {
$schedule = strtotime($feedData['schedule']);
}
// switch services and do operation
switch ($feedData['list_id']){
case 'single-sms':
if (
empty($feedData['message_body']) ||
empty($feedData['receiver_number']) ||
($feedData['message_body'] == 'template-message' && empty($feedData['template_id'])) ||
($feedData['message_body'] == 'message-input' && empty($feedData['message']))
) {
do_action('fluentform/integration_action_result', $feed, 'failed', __('Not Fulfilled Required Field', 'fluentformpro'));
return;
}
$action = 'single-sms';
$smsData = [
"messages" => array([
'body' => $smsBody,
'schedule' => $schedule,
'from' => $apiSettings['senderNumber'],
'to' => $feedData['receiver_number'],
])
];
$this->handleSMSResponse($action, $smsData, $feed, $entry);
break;
case 'sms-campaign':
if (empty($feedData['message_body']) ||
empty($feedData['campaign_list_id']) ||
($feedData['message_body'] == 'template-message' && empty($feedData['template_id'])) ||
($feedData['message_body'] == 'message-input' && empty($feedData['message']))
) {
do_action('fluentform/integration_action_result', $feed, 'failed', __('Not Fulfilled Required Field', 'fluentformpro'));
return;
}
$action = 'sms-campaign';
$smsData = [
'body' => $smsBody,
'schedule' => $schedule,
'from' => $apiSettings['senderNumber'],
'name' => $feedData['campaign_name'],
'list_id' => $feedData['campaign_list_id']
];
$this->handleSMSResponse($action, $smsData, $feed, $entry);
break;
case 'create-new-contact':
if (empty($feedData['phone_number']) || empty($feedData['campaign_list_id']) || empty($feedData['email'])) {
do_action('fluentform/integration_action_result', $feed, 'failed', __('Not Fulfilled Required Field', 'fluentformpro'));
return;
}
$data = array();
$data['phone_number'] = $feedData['phone_number'];
$data['email'] = sanitize_email($feedData['email']);
if ($feedData['other_add_contact_fields']) {
foreach ($feedData['other_add_contact_fields'] as $field) {
$data[$field['label']] = $field['item_value'];
}
}
$response = $api->addSubscriberContact($feedData['campaign_list_id'], $data);
if (is_wp_error($response)) {
$this->handleFailed($feed, $response->get_error_message());
} else {
$this->handleSuccess($feed, __('ClickSend SMS feed has been successfully initialed and add subscriber in contact list', 'fluentformpro'));
}
break;
case 'add-contact-list':
if (empty($feedData['contact_list_name'])) {
do_action('fluentform/integration_action_result', $feed, 'failed', __('Not Fulfilled Required Field', 'fluentformpro'));
return;
}
$data = array();
$data['list_name'] = $feedData['contact_list_name'];
$response = $api->addContactList($data);
if (is_wp_error($response)) {
$this->handleFailed( $feed, $response->get_error_message());
} else {
$this->handleSuccess($feed,__('ClickSend SMS feed has been successfully initialed and add contact list', 'fluentformpro'));
}
break;
case 'email-campaign':
if (
empty($feedData['email_address_id']) ||
empty($feedData['campaign_list_id']) ||
empty($feedData['email_campaign_subject']) ||
empty($feedData['campaign_name']) ||
empty($feedData['email_form_name']) ||
empty($feedData['message'])
) {
do_action('fluentform/integration_action_result', $feed, 'failed', __('Not Fulfilled Required Field', 'fluentformpro'));
return;
}
$data = array();
$data['list_id'] = $feedData['campaign_list_id'];
$data['subject'] = $feedData['email_campaign_subject'];
$data['name'] = $feedData['campaign_name'];
$data['body'] = $feedData['message'];
$data['from_name'] = $feedData['email_form_name'];
$data['schedule'] = $schedule;
$data['from_email_address_id'] = $feedData['email_address_id'];
if ($feedData['email_template_id']) {
$data['template_id'] = $feedData['email_template_id'];
}
$response = $api->addEmailCampaign($data);
if (is_wp_error($response)) {
$this->handleFailed($feed, $response->get_error_message());
} else {
$this->handleSuccess($feed, __('ClickSend SMS feed has been successfully initialed and pushed email campaign data', 'fluentformpro'));
}
break;
}
}
public function handleSMSResponse($action, $smsData, $feed, $entry)
{
$smsData = apply_filters_deprecated(
'fluentform_integration_data_' . $this->integrationKey,
[
$smsData,
$feed,
$entry
],
FLUENTFORM_FRAMEWORK_UPGRADE,
'fluentform/integration_data_' . $this->integrationKey,
'Use fluentform/integration_data_' . $this->integrationKey . ' instead of fluentform_integration_data_' . $this->integrationKey
);
$smsData = apply_filters('fluentform/integration_data_' . $this->integrationKey, $smsData, $feed, $entry);
$api = $this->getRemoteClient();
$response = $api->sendSMS($action, $smsData);
if (is_wp_error($response)) {
$this->handleFailed( $feed, $response->get_error_message());
} else {
$this->handleSuccess($feed );
}
}
public function handleFailed( $feed, $err_msg = 'ClickSend Integration Data insert failed.')
{
do_action('fluentform/integration_action_result', $feed, 'failed', __($err_msg, 'fluentformpro'));
}
public function handleSuccess( $feed, $success_msg = 'ClickSend feed has been successfully initialed and pushed data')
{
// It's success
do_action('fluentform/integration_action_result', $feed, 'success', __($success_msg, 'fluentformpro'));
}
protected function getConfigInstructions()
{
ob_start();
?>
<div><h4>To Authenticate clicksend you have to clicksend account first. <a href="https://dashboard.clicksend.com/#/signup/" target="_blank">Sign UP</a></h4>
<ol>
<li>Go to Your ClickSend account <a href="https://dashboard.clicksend.com/#/dashboard/home" target="_blank">Dashboard</a>, Click on the profile icon and also click on account settings or browse
<a href="https://dashboard.clicksend.com/account/subaccounts" target="_blank">Account link</a>
</li>
<li>
You'll need an API key and clicksend number. You can access your
<a href="https://dashboard.clicksend.com/#/account/subaccount" target="_blank"> API key </a> and
<a href="https://dashboard.clicksend.com/#/numbers/sms" target="_blank">purchase a number</a>.
</li>
<li>Copy your ClickSend purchase number, username and API key. And paste bellow input. Then click
save settings.
</li>
</ol>
</div>
<?php
return ob_get_clean();
}
public function getRemoteClient()
{
$settings = $this->getGlobalSettings([]);
return new ClickSend($settings['authToken'], $settings['username']);
}
}