X7ROOT File Manager
Current Path:
/home/oakwood/public_html/wp-content/plugins/metform-pro/core/integrations
home
/
oakwood
/
public_html
/
wp-content
/
plugins
/
metform-pro
/
core
/
integrations
/
ðŸ“
..
📄
Aweber.php
(15.91 KB)
📄
Convert_Kit.php
(3.93 KB)
📄
Fluent_Crm.php
(1.92 KB)
📄
Initiator.php
(969 B)
📄
Mail_Adapter.php
(179 B)
📄
Mail_Adapter_Contract.php
(150 B)
📄
Mail_Poet.php
(2.55 KB)
ðŸ“
auth
ðŸ“
crm
ðŸ“
ecommerce
ðŸ“
email
ðŸ“
email-verification
ðŸ“
google-sheet
📄
multistep-form-controls.php
(25.69 KB)
📄
multistep-section-settings.php
(1.9 KB)
ðŸ“
payment
ðŸ“
pdf-export
ðŸ“
post
📄
response-message-controls.php
(12.49 KB)
📄
rest-api.php
(717 B)
ðŸ“
sms
📄
zapier.php
(1.19 KB)
Editing: Aweber.php
<?php namespace MetForm_Pro\Core\Integrations; use MetForm_Pro\XPD_Constants; class Aweber { const ACCESS_TOKEN_KEY = 'met_form_aweber_mail_access_token_key'; const REFRESH_TOKEN_KEY = 'met_form_aweber_mail_refresh_token_key'; const AUTHORIZATION_CODE_KEY = 'met_form_aweber_mail_auth_code_key'; const NONCE_VERIFICATION_KEY = 'met_form_aweber_mail_state_key'; const BASIC_AUTH_64_CRED_KEY = 'met_form_aweber_basic_auth_64_key'; const AWEBER_LISTS_CACHE_KEY = 'mf_aweber_lists_key'; const AWEBER_ACCOUNT_DATA_CACHE_KEY = 'mf_aweber_account_data_key'; protected $auth_url = 'https://auth.aweber.com/oauth2/'; protected $authorization_url = 'https://auth.aweber.com/oauth2/authorize'; protected $access_token_url = 'https://auth.aweber.com/oauth2/token'; protected $aweber_api_account_url = 'https://api.aweber.com/1.0/accounts'; private $tmp_uri = '/admin.php?page=metform-menu-settings'; /** * Aweber constructor. * * @param bool $loadActions */ public function __construct($loadActions = true) { $this->tmp_uri = get_admin_url() . 'admin.php?page=metform-menu-settings'; if($loadActions) { add_action('wp_ajax_get_list_lists', [$this, 'get_list_lists']); } add_action('wp_ajax_get_aweber_custom_fields', [$this, 'get_aweber_custom_fields']); } public function get_aweber_custom_fields(){ if ( !isset( $_POST['nonce'] ) || !wp_verify_nonce( sanitize_text_field(wp_unslash($_POST['nonce'])), 'wp_rest' ) ) { wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'Unauthorized access.', ]); } if(isset($_POST['formId'])){ $form_id = isset($_POST['formId']) ? sanitize_text_field(wp_unslash($_POST['formId'])) : ''; } else { wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'No form ID.', ]); } $selected_value = isset($_POST['selectedValue']) ? sanitize_text_field(wp_unslash($_POST['selectedValue'])) : ''; if($selected_value == -1){ $settings = \MetForm\Core\Forms\Action::instance()->get_all_data($form_id); if(isset($settings['mf_aweber_list_id'])){ $selected_value = $settings['mf_aweber_list_id']; } else { wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'No settings for selected value.', ]); } } if(empty($selected_value) || $selected_value == '-1'){ wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'Please select a option first.', ]); } // Generate access token $accToken = $this->get_access_token(); if($accToken['result'] === XPD_Constants::RETURN_NOT_OKAY) { if(!empty($accToken['action_need'])) { wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'Developer did not authorized the application, please first authorize the app and then try again.', ]); } wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => $accToken['msg'], ]); } if(empty($accToken['token'])) { wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'Access token could not be retrieved.', ]); } $accessToken = $accToken['token']; $aweber_acc_data = get_option(self::AWEBER_ACCOUNT_DATA_CACHE_KEY); // If there is no account data saved then make a request for account data if( !$aweber_acc_data ){ try { $bearerAuth = 'Bearer ' . $accessToken; $headers = array( 'Authorization' => $bearerAuth, 'Accept' => 'application/json', 'User-Agent' => 'XPD-AWeber-get-account', ); $body = []; $payLoad = array( 'method' => 'GET', 'headers' => $headers, 'body' => $body ); $url = $this->aweber_api_account_url; $response = wp_remote_post($url, $payLoad); } catch(\Exception $ex) { wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'Could not retrieved list due to api call fail! - ['. $ex->getMessage().']', ]); } if (is_wp_error($response) || isset($response['body']['error'])) { wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'Could not retrieved account information due to - '. $response->get_error_message(), ]); } $responseBody = json_decode($response['body']); $aweber_acc_data = $responseBody->entries[0]; } if(isset($aweber_acc_data->lists_collection_link)){ try { $bearerAuth = 'Bearer ' . $accessToken; $headers = array( 'Authorization' => $bearerAuth, 'Accept' => 'application/json', 'User-Agent' => 'XPD-AWeber-get-account', ); $body = []; $payLoad = array( 'method' => 'GET', 'headers' => $headers, 'body' => $body ); $url = $aweber_acc_data->lists_collection_link . '/'. $selected_value .'/custom_fields'; $response = wp_remote_post($url, $payLoad); } catch(\Exception $ex) { wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'Could not retrieved list due to api call fail! - ['. $ex->getMessage().']', ]); } if ( is_wp_error($response)) { wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'Could not retrieved account information due to - '. $response->get_error_message(), ]); } if(isset($response['response']['code']) && $response['response']['code'] !==200) { wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'Could not retrieved account information due to - '. json_decode($response['body'])->error_description, ]); } $responseBody = json_decode($response['body']); } else { wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'Something wend wrong!', ]); } if(isset($responseBody->entries)){ array_unshift($responseBody->entries , (object) [ 'id' => 'mf_subscription_email', 'name' => 'Email', ]); array_unshift($responseBody->entries , (object) [ 'id' => 'mf_subscription_name', 'name' => 'Name', ]); } wp_send_json_success([ 'result' => XPD_Constants::RETURN_OKAY, 'custom_fields' => $responseBody, 'msg' => 'Successfully returned.', ]); wp_die(); } /** * * @param $accountId * * @return string */ public function build_list_fetching_url($accountId) { return trailingslashit($this->aweber_api_account_url) . $accountId .'/lists'; } /** * Get the list of aweber mail list * * @return mixed */ public function get_list_lists() { $accToken = $this->get_access_token(); if($accToken['result'] === XPD_Constants::RETURN_NOT_OKAY) { if(!empty($accToken['action_need'])) { return wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'Developer did not authorized the application, please first authorize the app and then try again.', ]); } return wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => $accToken['msg'], ]); } if(empty($accToken['token'])) { return wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'Access token could not be retrieved.', ]); } $accessToken = $accToken['token']; try { $bearerAuth = 'Bearer ' . $accessToken; $headers = array( 'Authorization' => $bearerAuth, 'Accept' => 'application/json', 'User-Agent' => 'XPD-AWeber-get-account', ); $body = []; $payLoad = array( 'method' => 'GET', 'headers' => $headers, 'body' => $body ); $url = $this->aweber_api_account_url; $response = wp_remote_post($url, $payLoad); } catch(\Exception $ex) { return wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'Could not retrieved list due to api call fail! - ['. $ex->getMessage().']', ]); } if (is_wp_error($response)) { return wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'Could not retrieved account information due to - '. $response->get_error_message(), ]); } $json = json_decode($response['body']); if(!empty($json)) { if(property_exists($json, 'error')) { return wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'Error returned while getting accounts. ['.$json->error.' :: '.$json->message.']', ]); } if($json->total_size < 1) { return wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'No accounts found of this user!.', ]); } // Todo: Do a loop to get all the accounts of this user... $entries = $json->entries; $account = $entries[0]; $accountId = $account->id; // Save account data in option for future use. update_option(self::AWEBER_ACCOUNT_DATA_CACHE_KEY, $account); try { $bearerAuth = 'Bearer ' . $accessToken; $headers = array( 'Authorization' => $bearerAuth, 'Accept' => 'application/json', 'User-Agent' => 'XPD-AWeber-get-account', ); $body = []; $payLoad = array( 'method' => 'GET', 'headers' => $headers, 'body' => $body ); $listUrl = $this->build_list_fetching_url($accountId); $response1 = wp_remote_post($listUrl, $payLoad); } catch(\Exception $ex) { return wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'Account retrieve success but could not retrieved the list due to api call fail! - ['. $ex->getMessage().']', ]); } $json = json_decode($response1['body']); if(!empty($json)) { if(property_exists($json, 'error')) { return wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'Error returned while getting lists. ['.$json->error_description.']', 'msg3' => $json->error, ]); } $acOptions = []; if(!empty($json->entries)) { foreach($json->entries as $entry) { $tmp = []; $tmp['id'] = $entry->id; $tmp['name'] = $entry->name; $tmp['s_link'] = $entry->subscribers_collection_link; $acOptions[$entry->id] = $tmp; } update_option(self::AWEBER_LISTS_CACHE_KEY, $acOptions); } return wp_send_json_success([ 'result' => XPD_Constants::RETURN_OKAY, 'lists' => $acOptions, 'msg' => 'successfully retrieved.', ]); } return wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'Something very awful happened! Southern army attacked the Northern army :(, please try again later.' ]); } return wp_send_json_error([ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'Could not retrieved account information, empty body returned from aweber server.' ]); } /** * * @return array */ public function get_access_token() { return self::refresh_token(); } /** * * @param $form_data * @param $settings * * @return mixed */ public function call_api($form_data, $settings) { $listId = $settings['mail_settings']['mf_aweber_list_id']; if(!empty($settings['mail_settings']['mf_aweber_custom_field_name_mf_subscription_email']['field_key'])){ $emailFld = $settings['mail_settings']['mf_aweber_custom_field_name_mf_subscription_email']['field_key']; } else { $emailFld = $settings['email_name']; } if(!empty($settings['mail_settings']['mf_aweber_custom_field_name_mf_subscription_name']['field_key'])){ $name_field_key = $settings['mail_settings']['mf_aweber_custom_field_name_mf_subscription_name']['field_key']; } else { $name_field_key = 'mf-listing-fname'; } $fNm = (isset($form_data[$name_field_key]) ? $form_data[$name_field_key] : 'NF') ; $email = (isset($form_data[$emailFld]) ? $form_data[$emailFld] : '') ; $data['email'] = $email; $data['name'] = $fNm; $aweber_custom_fields = []; foreach ($settings['mail_settings'] as $key => $value) { if (strpos($key, 'mf_aweber_custom_field_name_') !== false) { array_push($aweber_custom_fields, [ 'key' => $value['custom_field_key'], 'value' => $form_data[$value['field_key']] ]); } } $data['aweber_custom_fields'] = $aweber_custom_fields; return $this->add_subscriber_to_form($listId, $data); } /** * * @param $formId * @param $form_data * * @return array */ public function add_subscriber_to_form($formId, $form_data) { $cacheList = get_option(self::AWEBER_LISTS_CACHE_KEY); $return = []; if(empty($cacheList[$formId])) { #error ......... $return['status'] = 0; $return['msg'] = esc_html__('Lists could not found in cache!, please refresh the lists first.', 'metform-pro'); return $return; } $accessToken = $this->get_access_token(); if(empty($accessToken['token'])) { $return['status'] = 0; $return['msg'] = esc_html__('Failed to retrieve access token for aweber! action could not be performed.', 'metform-pro'); return $return; } $config = []; $config['email'] = $form_data['email']; $config['name'] = $form_data['name']; if(isset($form_data['aweber_custom_fields']) && !empty($form_data['aweber_custom_fields'])){ foreach($form_data['aweber_custom_fields'] as $field){ $config['custom_fields'][$field['key']] = $field['value']; } } #$config['misc_notes'] = ''; #$config['ad_tracking'] = ''; #$config['custom_fields'] = ['key1' => 'val1', 'key2' => 'val2',]; #$config['tags'] = [112, 114]; try { $bearerAuth = 'Bearer ' . $accessToken['token']; $headers = array( 'Authorization' => $bearerAuth, 'Content-Type' => 'application/json; charset=utf-8', 'Accept' => 'application/json', 'User-Agent' => 'XPD-AWeber-get-account', ); $payLoad = array( 'headers' => $headers, 'method' => 'POST', 'body' => wp_json_encode($config), ); $url = $cacheList[$formId]['s_link']; $response = wp_remote_post($url, $payLoad); } catch(\Exception $ex) { $return['status'] = 0; $return['msg'] = "Something went wrong: " . esc_html($ex->getMessage()); return $return; } if (is_wp_error($response)) { $error_message = $response->get_error_message(); $return['status'] = 0; $return['msg'] = "Something went wrong: " . esc_html($error_message); return $return; } $return['status'] = 1; $return['msg'] = esc_html__('Your data inserted on ConvertKit.', 'metform-pro'); return $return; } public static function refresh_token() { $response = false; $token_data = get_option(self::ACCESS_TOKEN_KEY); if(empty($token_data)) { return [ 'result' => XPD_Constants::RETURN_NOT_OKAY, 'msg' => 'No token found!', ]; } if(isset($token_data['token_type']) || !empty($token_data['token_type'])){ if(!get_transient('mf_aweber_token_transient')){ // Refresh the token $response = wp_remote_get( 'https://api.wpmet.com/public/aweber-auth/refresh-token.php?refresh_token='. $token_data['refresh_token'] ); // Check if request is successful if($response['response']['code'] === 200){ $responseBody = json_decode($response['body'], true); // Save new token values $token_data['access_token'] = $responseBody['access_token']; $token_data['refresh_token'] = $responseBody['refresh_token']; $token_data['token_type'] = $responseBody['token_type']; $token_data['expires_in'] = $responseBody['expires_in']; // Save the results in a transient named latest_5_posts set_transient( 'mf_aweber_token_transient', $responseBody['access_token'], $responseBody['expires_in'] ); // Update settings options update_option(self::ACCESS_TOKEN_KEY, $token_data); return [ 'result' => XPD_Constants::RETURN_OKAY, 'token' => $token_data['access_token'], ]; } } } return [ 'result' => XPD_Constants::RETURN_OKAY, 'token' => $token_data['access_token'], ]; } }
Upload File
Create Folder