You must install and activate AffiliateWP to use AffiliateWP MailChimp Add-on

'; } if ( $affwp_plugin_data['Version'] < '1.1' ) { echo '

AffiliateWP MailChimp Add-on requires AffiliateWP 1.1 or greater. Please update AffiliateWP.

'; } } //Plugin Settings Link public function settings_link( $links ) { $plugin_link = array( 'Settings', ); return array_merge( $plugin_link, $links ); } //AffiliateWP Mailchimp Settings public function affwp_mailchimp_settings( $settings ) { $mailchimp_api_key = affiliate_wp()->settings->get( 'affwp_mailchimp_api_key' ); $mailchimp_lists = $this->affwp_mailchimp_get_lists(); if ($mailchimp_lists === false ) { $mailchimp_lists = array (); } if( ! empty ( $mailchimp_api_key ) ){ $mailchimp_lists = array_merge( array( '' => 'Select a list' ), $mailchimp_lists ); } else{ $mailchimp_lists = array( '' => 'Enter your MailChimp API Key and save to see your lists' ); } $affwp_mailchimp_settings = array( 'affwp_mailchimp_header' => array( 'name' => 'AffiliateWP MailChimp Settings', 'type' => 'header' ), 'affwp_enable_mailchimp' => array( 'name' => 'Enable/Disable', 'type' => 'checkbox', 'desc' => 'Enable MailChimp Subscription. This will allow affiliate to subscribe to your Mailchimp list.' ), 'affwp_mailchimp_form_label' => array( 'name' =>'Checkbox Label', 'desc' => 'Enter the form label here.
The default label is "Signup for our newsletter".', 'type' => 'text', 'std' => 'Signup for our newsletter' ), 'affwp_mailchimp_api_key' => array( 'name' =>'MailChimp API Key', 'desc' => '
Enter your MailChimp API Key here. Click here to login to MailChimp and get your API key.', 'type' => 'text', 'std' => '' ), 'affwp_mailchimp_enable_opt_in' => array( 'name' => 'Double Opt-In', 'desc' => 'If enabled, affiliates will receive an email with a link to confirm their subscription to the list.', 'type' => 'checkbox' ), 'affwp_mailchimp_auto_subscribe' => array( 'name' => 'Auto Subscribe', 'desc' => 'If enabled, affiliates will be subscribed to your newsletter automatically without them ticking the subscribe checkbox.
N.B: This will remove the checkbox from the registration page as there is no need to display it.', 'type' => 'checkbox' ), 'affwp_mailchimp_list' => array( 'name' => 'Newsletter List', 'desc' => 'Choose the List you want the affiliate to be subscribe to when registered.', 'type' => 'select', 'options' => $mailchimp_lists ) ); return array_merge( $settings, $affwp_mailchimp_settings ); } //Add Subscribe Checkbox to the signup page public function affwp_mailchimp_subscribe_checkbox(){ $mailchimp_enabled = affiliate_wp()->settings->get( 'affwp_enable_mailchimp' ); $mailchimp_label = affiliate_wp()->settings->get( 'affwp_mailchimp_form_label' ); $mailchimp_api_key = affiliate_wp()->settings->get( 'affwp_mailchimp_api_key' ); $mailchimp_list = affiliate_wp()->settings->get( 'affwp_mailchimp_list' ); $mailchimp_auto_subscribe = affiliate_wp()->settings->get( 'affwp_mailchimp_auto_subscribe' ); if ( ! $mailchimp_auto_subscribe ){ ob_start(); if ( $mailchimp_enabled && $mailchimp_api_key && $mailchimp_list ){ ?>

settings->get( 'affwp_enable_mailchimp' ); $mailchimp_label = affiliate_wp()->settings->get( 'affwp_mailchimp_form_label' ); $mailchimp_api_key = affiliate_wp()->settings->get( 'affwp_mailchimp_api_key' ); $mailchimp_list = affiliate_wp()->settings->get( 'affwp_mailchimp_list' ); ob_start(); if ( ! empty ( $mailchimp_enabled ) && ! empty ( $mailchimp_api_key ) && ! empty ( $mailchimp_list ) ){ ?>

settings->get( 'affwp_enable_mailchimp' ); $mailchimp_label = affiliate_wp()->settings->get( 'affwp_mailchimp_form_label' ); $mailchimp_api_key = affiliate_wp()->settings->get( 'affwp_mailchimp_api_key' ); $mailchimp_list = affiliate_wp()->settings->get( 'affwp_mailchimp_list' ); $subscribe_status = get_user_meta( $user_id, 'tbz_affwp_subscribed_to_mailchimp', true ); if( ! $subscribe_status && $mailchimp_enabled && $mailchimp_api_key && $mailchimp_list ){ ob_start(); if ( $mailchimp_enabled && $mailchimp_api_key && $mailchimp_list ){ ?>

affiliates->get_by( 'affiliate_id', $affiliate_id ); $user_id = $affiliate->user_id; $email = $wpdb->get_var( $wpdb->prepare( "SELECT user_email FROM $wpdb->users WHERE ID = '%d'", $user_id ) ); $name = affiliate_wp()->affiliates->get_affiliate_name( $affiliate_id ); $mailchimp_api_key = affiliate_wp()->settings->get( 'affwp_mailchimp_api_key' ); if( ! empty( $_POST['affwp_mailchimp_subscribe'] ) && $mailchimp_api_key ) { $name = explode( ' ', $name ); $first_name = $name[0]; $last_name = isset( $name[1] ) ? $name[1] : ''; $mailchimp_list = affiliate_wp()->settings->get( 'affwp_mailchimp_list' ); $mailchimp_api_key = trim( $mailchimp_api_key ); $check_opt_in = affiliate_wp()->settings->get( 'affwp_mailchimp_enable_opt_in' ); if( ! empty ( $check_opt_in ) ) { $status = 'pending'; } else { $status = 'subscribed'; } if ( ! class_exists( 'TbzAffWPMailChimp' ) ) { require_once plugin_dir_path( __FILE__ ) . 'classes/api/MailChimp.php'; } $MailChimp = new TbzAffWPMailChimp( $mailchimp_api_key ); $result = $MailChimp->post( "lists/$mailchimp_list/members", [ 'email_address' => $email, 'status' => $status ]); $subscriber_hash = $MailChimp->subscriberHash( $email ); $result = $MailChimp->patch( "lists/$mailchimp_list/members/$subscriber_hash", [ 'merge_fields' => [ 'FNAME' => $first_name, 'LNAME' => $last_name ] ]); update_user_meta( $user_id, 'tbz_affwp_subscribed_to_mailchimp', 'yes' ); return; } return false; } //Add New Affiliate to Newsletter List public function affwp_mailchimp_add_user_to_list( $affiliate_id, $status ){ $mailchimp_enabled = affiliate_wp()->settings->get( 'affwp_enable_mailchimp' ); $mailchimp_api_key = affiliate_wp()->settings->get( 'affwp_mailchimp_api_key' ); $mailchimp_auto_subscribe = affiliate_wp()->settings->get( 'affwp_mailchimp_auto_subscribe' ); if( $mailchimp_enabled && $mailchimp_auto_subscribe ){ if( is_user_logged_in() ){ global $wpdb; $user_id = get_current_user_id(); $email = $wpdb->get_var( $wpdb->prepare( "SELECT user_email FROM $wpdb->users WHERE ID = '%d'", $user_id ) ); $name = $wpdb->get_var( $wpdb->prepare( "SELECT display_name FROM $wpdb->users WHERE ID = '%d'", $user_id ) ); $name = explode( ' ', $name ); $first_name = $name[0]; $last_name = isset( $name[1] ) ? $name[1] : ''; } else{ $name = explode( ' ', sanitize_text_field( $_POST['affwp_user_name'] ) ); $first_name = $name[0]; $last_name = isset( $name[1] ) ? $name[1] : ''; $email = sanitize_text_field( $_POST['affwp_user_email'] ); $affiliate = affiliate_wp()->affiliates->get_by( 'affiliate_id', $affiliate_id ); $user_id = $affiliate->user_id; } $mailchimp_list = affiliate_wp()->settings->get( 'affwp_mailchimp_list' ); $mailchimp_api_key = trim( $mailchimp_api_key ); $check_opt_in = affiliate_wp()->settings->get( 'affwp_mailchimp_enable_opt_in' ); if ( ! class_exists( 'TbzAffWPMailChimp' ) ) { require_once plugin_dir_path( __FILE__ ) . 'classes/api/MailChimp.php'; } $MailChimp = new TbzAffWPMailChimp( $mailchimp_api_key ); if( ! empty ( $check_opt_in ) ) { $status = 'pending'; } else { $status = 'subscribed'; } $result = $MailChimp->post( "lists/$mailchimp_list/members", [ 'email_address' => $email, 'status' => $status ]); $subscriber_hash = $MailChimp->subscriberHash( $email ); $result = $MailChimp->patch( "lists/$mailchimp_list/members/$subscriber_hash", [ 'merge_fields' => [ 'FNAME' => $first_name, 'LNAME' => $last_name ] ]); update_user_meta( $user_id, 'tbz_affwp_subscribed_to_mailchimp', 'yes' ); return true; } if( ! empty( $_POST['affwp_mailchimp_subscribe'] ) && $mailchimp_api_key ) { if( is_user_logged_in() ){ global $wpdb; $user_id = get_current_user_id(); $email = $wpdb->get_var( $wpdb->prepare( "SELECT user_email FROM $wpdb->users WHERE ID = '%d'", $user_id ) ); $name = $wpdb->get_var( $wpdb->prepare( "SELECT display_name FROM $wpdb->users WHERE ID = '%d'", $user_id ) ); $name = explode( ' ', $name ); $first_name = $name[0]; $last_name = isset( $name[1] ) ? $name[1] : ''; } else{ $name = explode( ' ', sanitize_text_field( $_POST['affwp_user_name'] ) ); $first_name = $name[0]; $last_name = isset( $name[1] ) ? $name[1] : ''; $email = sanitize_text_field( $_POST['affwp_user_email'] ); $affiliate = affiliate_wp()->affiliates->get_by( 'affiliate_id', $affiliate_id ); $user_id = $affiliate->user_id; } $mailchimp_list = affiliate_wp()->settings->get( 'affwp_mailchimp_list' ); $mailchimp_api_key = trim( $mailchimp_api_key ); $check_opt_in = affiliate_wp()->settings->get( 'affwp_mailchimp_enable_opt_in' ); if( ! empty ( $check_opt_in ) ) { $status = 'pending'; } else { $status = 'subscribed'; } if ( ! class_exists( 'TbzAffWPMailChimp' ) ) { require_once plugin_dir_path( __FILE__ ) . 'classes/api/MailChimp.php'; } $MailChimp = new TbzAffWPMailChimp( $mailchimp_api_key ); $result = $MailChimp->post( "lists/$mailchimp_list/members", [ 'email_address' => $email, 'status' => $status ]); $subscriber_hash = $MailChimp->subscriberHash( $email ); $result = $MailChimp->patch( "lists/$mailchimp_list/members/$subscriber_hash", [ 'merge_fields' => [ 'FNAME' => $first_name, 'LNAME' => $last_name ] ]); update_user_meta( $user_id, 'tbz_affwp_subscribed_to_mailchimp', 'yes' ); return true; } return false; } //Add New Affiliate to NewsLetter List from the Admin Add New Affiliate Page public function affwp_mailchimp_admin_add_user_to_list( $add ){ global $wpdb; $affiliate = affiliate_wp()->affiliates->get_by( 'affiliate_id', $add ); $user_id = $affiliate->user_id; $email = $wpdb->get_var( $wpdb->prepare( "SELECT user_email FROM $wpdb->users WHERE ID = '%d'", $user_id ) ); $name = affiliate_wp()->affiliates->get_affiliate_name( $add ); $mailchimp_api_key = affiliate_wp()->settings->get( 'affwp_mailchimp_api_key' ); if( ! empty( $_POST['affwp_mailchimp_subscribe'] ) && ! empty( $mailchimp_api_key ) ) { $name = explode( ' ', $name ); $first_name = $name[0]; $last_name = isset( $name[1] ) ? $name[1] : ''; $mailchimp_list = affiliate_wp()->settings->get( 'affwp_mailchimp_list' ); $mailchimp_api_key = trim( $mailchimp_api_key ); $check_opt_in = affiliate_wp()->settings->get( 'affwp_mailchimp_enable_opt_in' ); if( ! empty ( $check_opt_in ) ) { $status = 'pending'; } else { $status = 'subscribed'; } if ( ! class_exists( 'TbzAffWPMailChimp' ) ) { require_once plugin_dir_path( __FILE__ ) . 'classes/api/MailChimp.php'; } $MailChimp = new TbzAffWPMailChimp( $mailchimp_api_key ); $result = $MailChimp->post( "lists/$mailchimp_list/members", [ 'email_address' => $email, 'status' => $status ]); $subscriber_hash = $MailChimp->subscriberHash( $email ); $result = $MailChimp->patch( "lists/$mailchimp_list/members/$subscriber_hash", [ 'merge_fields' => [ 'FNAME' => $first_name, 'LNAME' => $last_name ] ]); update_user_meta( $user_id, 'tbz_affwp_subscribed_to_mailchimp', 'yes' ); return true; } return false; } //Get MailChimp Lists public function affwp_mailchimp_get_lists(){ $mailchimp_api_key = affiliate_wp()->settings->get( 'affwp_mailchimp_api_key' ); $mailchimp_api_key = trim( $mailchimp_api_key ); if ( ! empty( $mailchimp_api_key ) ) { $mailchimp_lists = get_transient( 'tbz_affwp_edd_mailchimp_lists' ); if( false === $mailchimp_lists ) { if ( ! class_exists( 'TbzAffWPMailChimp' ) ) { require_once plugin_dir_path( __FILE__ ) . 'classes/api/MailChimp.php'; } $Mailchimp = new TbzAffWPMailChimp( $mailchimp_api_key ); $lists = $Mailchimp->get( 'lists' ); $lists_count = $lists['total_items']; if( $lists_count > 0 ) { foreach ( $lists['lists'] as $list) { $mailchimp_lists[ $list ['id'] ] = $list['name']; } set_transient( 'tbz_affwp_edd_mailchimp_lists', $mailchimp_lists, 1 * HOUR_IN_SECONDS ); } return false; } return $mailchimp_lists; } return false; } } } function tbz_affwp_mailchimp_addon() { return Tbz_AffiliateWP_MailChimp_Add_on::get_instance(); } add_action( 'plugins_loaded', 'tbz_affwp_mailchimp_addon' );