Esempio n. 1
0
 /**
  * Called for any colunm without a realted function
  *
  * @since 1.0.0
  *
  * @param	array $item A singular item (one full row's worth of data)
  * @param	array $column_name The name/slug of the column to be processed
  * @return	string Text or HTML to be placed inside the column <td>
  */
 function column_default($item, $column_name)
 {
     do_action('nnr_news_int_before_table_column_default_v1');
     if ($column_name == 'source') {
         if ($this->data_manager_table_name != '' && class_exists('NNR_Data_Manager_v1')) {
             $data_manager = new NNR_Data_Manager_v1($this->data_manager_table_name);
             return $data_manager->get_name_from_id($item['data_id']);
         }
         return $item['data_id'];
     }
     if ($column_name == 'date') {
         return date('Y-m-d', strtotime($item['date']));
     }
     do_action('nnr_news_int_after_table_column_default_v1');
     return apply_filters('nnr_news_int_table_column_default_v1', $item[$column_name]);
 }
Esempio n. 2
0
<?php

$data_manager = new NNR_Data_Manager_v1(self::$data_manager_table_name);
?>

<?php 
do_action('nnr_data_man_before_view_status_controls_v1');
?>

<!-- Show based on status -->

<a class="<?php 
echo !isset($_GET['status']) ? 'nnr-current-tab' : 'nnr-tab';
?>
" href="<?php 
echo admin_url() . 'admin.php?page=' . self::$dashboard_page;
?>
"> <?php 
_e('All', self::$text_domain);
?>
 <span class="<?php 
echo self::$prefix_dash . 'count';
?>
">(<?php 
echo count($data_manager->get_data());
?>
)</span></a> |
<a class="<?php 
echo isset($_GET['status']) && $_GET['status'] == 'active' ? 'nnr-current-tab' : 'nnr-tab';
?>
" href="<?php 
Esempio n. 3
0
 /**
  * Prepares data for display.
  *
  * @since 1.0.0
  *
  * @param	N/A
  * @return	N/A
  */
 function prepare_items()
 {
     do_action('nnr_data_man_before_table_prepare_items_v1');
     $data_manager = new NNR_Data_Manager_v1($this->table_name);
     global $wpdb;
     $per_page = 50;
     $columns = $this->get_columns();
     $hidden = array();
     $sortable = $this->get_sortable_columns();
     $this->_column_headers = array($columns, $hidden, $sortable);
     $current_page = $this->get_pagenum();
     // All
     if (!isset($_GET['status'])) {
         $this->items = $data_manager->get_data();
     } else {
         if (isset($_GET['status']) && $_GET['status'] == 'active') {
             $this->items = $data_manager->get_active_data();
         } else {
             $this->items = $data_manager->get_inactive_data();
         }
     }
     $this->items = apply_filters('nnr_data_man_table_items_v1', $this->items);
     $total_items = count($this->items);
     /**
      * The WP_List_Table class does not handle pagination for us, so we need
      * to ensure that the data is trimmed to only the current page. We can use
      * array_slice() to
      */
     $data = apply_filters('nnr_data_man_table_data_v1', array_slice($this->items, ($current_page - 1) * $per_page, $per_page));
     $this->set_pagination_args(apply_filters('nnr_data_man_table_set_pagination_args_v1', array('total_items' => $total_items, 'per_page' => $per_page, 'total_pages' => ceil($total_items / $per_page))));
     do_action('nnr_data_man_after_table_prepare_items_v1');
 }
Esempio n. 4
0
    /**
     * Display the Stats
     *
     * @access public
     * @return void
     */
    function nnr_stats_tracker_load_v1()
    {
        do_action('nnr_stats_before_load_v1');
        // Check for Table Name
        if (!isset($_POST['table_name']) || empty($_POST['table_name'])) {
            echo 'No Stats table name found.';
            die;
        }
        // Check for Table Name
        if (!isset($_POST['data_table_name']) || empty($_POST['data_table_name'])) {
            echo 'No Data Manager table name found.';
            die;
        }
        // Check for Text Domain
        if (!isset($_POST['text_domain']) || empty($_POST['text_domain'])) {
            $_POST['text_domain'] = '';
        }
        // Check for Stats Page
        if (!isset($_POST['stats_page']) || empty($_POST['stats_page'])) {
            $_POST['stats_page'] = '';
        }
        // Check for Text Domain
        if (!isset($_POST['prefix']) || empty($_POST['prefix'])) {
            $_POST['prefix'] = '';
        }
        $pie_chart_colors = array('#00a0b0', '#edc951', '#eb6841', '#4f372d', '#cc2a36');
        $stats_tracker = new NNR_Stats_Tracker_v1($_POST['table_name']);
        $data_manager = new NNR_Data_Manager_v1($_POST['data_table_name']);
        // Get Start and End Dates
        $start_date = date('Y-m-d', mktime(0, 0, 0, date("m") - 1, date("d"), date("Y")));
        $end_date = date('Y-m-d', strtotime(current_time('mysql')));
        $post_start_date = urldecode($_POST['start_date']);
        $post_end_date = urldecode($_POST['end_date']);
        if (isset($post_start_date) && $post_start_date != '') {
            $start_date = date('Y-m-d', strtotime($post_start_date));
        }
        if (isset($post_end_date) && $post_end_date != '') {
            $end_date = date('Y-m-d', strtotime($post_end_date));
        }
        global $wpdb;
        // All optin_fire stats
        if (isset($_POST['data_id']) && $_POST['data_id'] == 'false') {
            $data = $data_manager->get_data();
            $stats = $stats_tracker->get_stats($start_date, $end_date);
            $data_stats = array();
            foreach ($data as $item) {
                foreach ($stats as $stat) {
                    if ($item['id'] == $stat['data_id']) {
                        $data_stats[$item['id']] = array('data_id' => $stat['data_id'], 'name' => $item['name'], 'date' => $stat['date'], 'impressions' => isset($data_stats[$item['id']]['impressions']) ? $data_stats[$item['id']]['impressions'] + $stat['impressions'] : $stat['impressions'], 'conversions' => isset($data_stats[$item['id']]['conversions']) ? $data_stats[$item['id']]['conversions'] + $stat['conversions'] : $stat['conversions']);
                    }
                }
            }
            $impressions_total = 0;
            $conversions_total = 0;
            foreach ($data_stats as $data_stat) {
                $impressions_total += $data_stat['impressions'];
                $conversions_total += $data_stat['conversions'];
            }
            $ctr = $impressions_total != 0 ? round($conversions_total / $impressions_total * 100, 2) : 0;
            $stats_content = '
		<div class="nnr-stats-total-container col-sm-12">
			<div class="nnr-stats-totals col-sm-4">
				<div class="nnr-stats-impressions-total">
					<span>' . __('Impressions', $_POST['text_domain']) . '</span>
					<div class="nnr-stats-totals-text">' . number_format($impressions_total) . '</div>
					<i class="fa fa-globe"></i>
				</div>
			</div>
			<div class="nnr-stats-totals col-sm-4">
				<div class="nnr-stats-conversions-total">
					<span>' . __('Conversions', $_POST['text_domain']) . '</span>
					<div class="nnr-stats-totals-text">' . number_format($conversions_total) . '</div>
					<i class="fa fa-certificate"></i>
				</div>
			</div>
			<div class="nnr-stats-totals col-sm-4">
				<div class="nnr-stats-conversion-rate-total">
					<span>' . __('Conversion Rate', $_POST['text_domain']) . '</span>
					<div class="nnr-stats-totals-text">' . $ctr . '%</div>
					<i class="fa fa-usd"></i>
				</div>
			</div>
		</div>

		<div class="clearfix"></div>

		<div class="col-sm-6 nnr-stats-table-container">

			<h3 id="nnr-heading" class="text-center">' . __('Total Stats', $_POST['text_domain']) . '</h3>

			<table class="nnr-stats-table table sortable">

				<thead>
					<tr>
						<th>' . __('Name', $_POST['text_domain']) . '</th>
						<th class="nnr-impressions-key">' . __('Impressions', $_POST['text_domain']) . '</th>
						<th class="nnr-conversions-key">' . __('Conversions', $_POST['text_domain']) . '</th>
						<th data-defaultsort="desc" class="nnr-conversion-rate-key">' . __('Conversion Rate', $_POST['text_domain']) . '</th>
					</tr>
				</thead>
				<tbody>';
            if (count($data_stats) < 1) {
                $stats_content .= '<tr><td>' . __('No Stats Data for this time period', $_POST['text_domain']) . '</td></tr>';
            }
            foreach ($data_stats as $data_stat) {
                $ctr = $data_stat['impressions'] > 0 ? round($data_stat['conversions'] / $data_stat['impressions'] * 100, 2) : '0';
                $stats_content .= '<tr>
						<td data-value="' . $data_stat['name'] . '"><a href="' . admin_url() . 'admin.php?page=' . $_POST['stats_page'] . '&data_id=' . $data_stat['data_id'] . '&data_name=' . $data_stat['name'] . '" class="">' . $data_stat['name'] . '</a></td>
						<td data-value="' . $data_stat['impressions'] . '">' . number_format($data_stat['impressions']) . '</td>';
                $stats_content .= '
						<td data-value="' . $data_stat['conversions'] . '">' . number_format($data_stat['conversions']) . '</td>
						<td data-value="' . $ctr . '" class="conversions column-conversions">' . $ctr . '%</td>
					</tr>';
            }
            $stats_content .= '</tbody>
			</table>
		</div>

		<div class="nnr-conversion-chart col-sm-6">

			<h3 id="nnr-heading" class="text-center">' . __('Conversion Distribution', $_POST['text_domain']) . '</h3>

			<div class="col-sm-12">
				<canvas id="nnr-pie-chart"></canvas>
			</div>

			<ul class="col-sm-12 nnr-pie-chart-legend-colors">';
            $counter = 0;
            foreach ($data_stats as $data_stat) {
                if ($data_stat['conversions'] < 1) {
                    continue;
                }
                $stats_content .= '<li class="nnr-pie-chart-legend-item">
						<span class="nnr-pie-chart-legend-color" style="background-color:' . $pie_chart_colors[$counter % count($pie_chart_colors)] . '"></span>
						<span class="nnr-pie-chart-optin-name">' . $data_stat['name'] . '</span>
					</li>';
                $counter++;
            }
            $stats_content .= '</ul>
		</div>';
        } else {
            if (isset($_POST['data_id']) && $_POST['data_id'] != 'false') {
                $data_stats = $stats_tracker->get_stats_from_id($_POST['data_id'], $start_date, $end_date);
                $data = $data_manager->get_data_from_id($_POST['data_id']);
                $stats_display = new NNR_Stats_Tracker_Display_v1('');
                $data_stats = $stats_display->add_empty_data($start_date, $end_date, $data_stats);
                // Unset index
                foreach ($data_stats as $key => $data_stat) {
                    unset($data_stats[$key]['id']);
                    unset($data_stats[$key]['data_id']);
                }
                $impressions_total = 0;
                $conversions_total = 0;
                foreach ($data_stats as $data_stat) {
                    $impressions_total += $data_stat['impressions'];
                    $conversions_total += $data_stat['conversions'];
                }
                $ctr = $impressions_total != 0 ? round($conversions_total / $impressions_total * 100, 2) : 0;
                $stats_content = '<div class="nnr-stats-total-container col-sm-12">
			<div class="nnr-stats-totals col-sm-4">
				<div class="nnr-stats-impressions-total">
					<span>' . __('Impressions', $_POST['text_domain']) . '</span>
					<div class="nnr-stats-totals-text">' . number_format($impressions_total) . '</div>
					<i class="fa fa-globe"></i>
				</div>
			</div>
			<div class="nnr-stats-totals col-sm-4">
				<div class="nnr-stats-conversions-total">
					<span>' . __('Conversions', $_POST['text_domain']) . '</span>
					<div class="nnr-stats-totals-text">' . number_format($conversions_total) . '</div>
					<i class="fa fa-certificate"></i>
				</div>
			</div>
			<div class="nnr-stats-totals col-sm-4">
				<div class="nnr-stats-conversion-rate-total">
					<span>' . __('Conversion Rate', $_POST['text_domain']) . '</span>
					<div class="nnr-stats-totals-text">' . $ctr . '%</div>
					<i class="fa fa-usd"></i>
				</div>
			</div>
		</div>

		<div class="clearfix"></div>

		<div class="nnr-line-graph-container">

			<h3 id="nnr-heading" class="text-center">' . __('Impressions and Conversions', $_POST['text_domain']) . '</h3>

			<canvas id="nnr-line-graph"></canvas>
		</div>

		<div class="col-sm-12">

			<h3 id="nnr-heading" class="text-center">' . __('Total Stats', $_POST['text_domain']) . '</h3>

			<table class="table table-responsive sortable">

				<thead>
					<th data-defaultsort="desc">' . __('Date', $_POST['text_domain']) . '</th>
					<th class="nnr-impressions-key">' . __('Impressions', $_POST['text_domain']) . '</th>
					<th class="nnr-conversions-key">' . __('Conversions', $_POST['text_domain']) . '</th>
					<th class="nnr-conversion-rate-key">' . __('Conversion Rate', $_POST['text_domain']) . '</th>
				</thead>';
                foreach (array_reverse($data_stats) as $data_stat) {
                    $ctr = $data_stat['impressions'] > 0 ? round($data_stat['conversions'] / $data_stat['impressions'] * 100, 2) : '0';
                    $stats_content .= '<tr>
						<td data-value="' . strtotime($data_stat['date']) . '">' . date('M j Y', strtotime($data_stat['date'])) . '</td>
						<td data-value="' . $data_stat['impressions'] . '">' . number_format($data_stat['impressions']) . '</td>
						<td data-value="' . $data_stat['conversions'] . '">' . number_format($data_stat['conversions']) . '</td>
						<td data-value="' . $ctr . '" class="conversions column-conversions">' . $ctr . '%</td>';
                    $stats_content .= '</tr>';
                }
                $stats_content .= '</table>
		</div>';
            }
        }
        do_action('nnr_stats_after_load_v1');
        echo json_encode(apply_filters('nnr_stats_load_data_v1', array('stats_content' => $stats_content, 'data_stats' => $data_stats)));
        die;
        // this is required to terminate immediately and return a proper response
    }
 /**
  * Record an impression made by a optin fire
  * This function is called via PHP.
  *
  * @access public
  * @static
  * @return void
  */
 function nnr_new_int_add_email_v1()
 {
     do_action('nnr_news_int_before_submission_add_email_v1');
     // No First Name
     if (!isset($_POST['first_name'])) {
         $_POST['first_name'] = '';
     }
     // No Last Name
     if (!isset($_POST['last_name'])) {
         $_POST['last_name'] = '';
     }
     // Could not find Data ID
     if (!isset($_POST['data_id']) || $_POST['data_id'] == '') {
         echo json_encode(array('id' => $_POST['data_id'], 'status' => 'warning', 'message' => __('Could not find Data ID.', $_POST['text_domain'])));
         die;
     }
     // Get all newsletter data for this data instance
     $data_manager = new NNR_Data_Manager_v1($_POST['table_name']);
     $data_instance = $data_manager->get_data_from_id($_POST['data_id']);
     $success_action = isset($data_instance['args']['newsletter']['success_action']) ? stripcslashes($data_instance['args']['newsletter']['success_action']) : 'message';
     $success_mesage = isset($data_instance['args']['newsletter']['success_message']) ? stripcslashes($data_instance['args']['newsletter']['success_message']) : __('Welcome to the community!', $_POST['text_domain']);
     $success_url = isset($data_instance['args']['newsletter']['success_url']) ? stripcslashes($data_instance['args']['newsletter']['success_url']) : '';
     // No Email
     if (!isset($_POST['email']) || $_POST['email'] == '') {
         echo json_encode(array('id' => $_POST['data_id'], 'status' => 'warning', 'message' => __('No Email address provided.', $_POST['text_domain'])));
         die;
     }
     // Invalid Email Address
     if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
         echo json_encode(array('id' => $_POST['data_id'], 'status' => 'warning', 'message' => __('Invalid Email provided.', $_POST['text_domain'])));
         die;
     }
     // WordPress
     if ($_POST['type'] == 'wordpress') {
         $newsletter_db = new NNR_Newsletter_Integrations_Submission_v1($_POST['news_table_name']);
         $result = $newsletter_db->add_data(array('data_id' => $_POST['data_id'], 'email' => $_POST['email'], 'first_name' => $_POST['first_name'], 'last_name' => $_POST['last_name']));
         if ($result) {
             echo json_encode(array('id' => $_POST['data_id'], 'status' => 'check', 'success_action' => $success_action, 'url' => $success_url, 'message' => $success_mesage, 'conversion' => apply_filters('nnr_news_int_submission_success_v1', array('data_id' => $_POST['data_id'], 'table_name' => $_POST['stats_table_name']))));
             die;
         } else {
             echo json_encode(array('id' => $_POST['data_id'], 'status' => 'check', 'message' => __('We already have your email!', $_POST['text_domain'])));
             die;
         }
     } else {
         if ($_POST['type'] == 'mailchimp') {
             require_once dirname(dirname(__FILE__)) . '/services/mailchimp/MailChimp.php';
             if (!isset($data_instance['args']['newsletter']['mailchimp']['api_key']) || $data_instance['args']['newsletter']['mailchimp']['api_key'] == '') {
                 echo json_encode(array('id' => $_POST['data_id'], 'status' => 'warning', 'message' => __('MailChimp account is not setup properly.', $_POST['text_domain'])));
                 die;
             }
             if (!isset($data_instance['args']['newsletter']['mailchimp']['list']) || $data_instance['args']['newsletter']['mailchimp']['list'] == '') {
                 echo json_encode(array('id' => $_POST['data_id'], 'status' => 'warning', 'message' => __('MailChimp: No list specified.', $_POST['text_domain'])));
                 die;
             }
             if (!isset($data_instance['args']['newsletter']['mailchimp']['optin'])) {
                 $data_instance['args']['newsletter']['mailchimp']['optin'] = true;
             }
             $MailChimp = new NNR_New_Int_MailChimp($data_instance['args']['newsletter']['mailchimp']['api_key']);
             $result = $MailChimp->call('lists/subscribe', array('id' => $data_instance['args']['newsletter']['mailchimp']['list'], 'email' => array('email' => $_POST['email']), 'merge_vars' => array('FNAME' => $_POST['first_name'], 'LNAME' => $_POST['last_name']), 'double_optin' => $data_instance['args']['newsletter']['mailchimp']['optin'], 'update_existing' => false, 'replace_interests' => false, 'send_welcome' => true));
             if ($result) {
                 if (isset($result['email'])) {
                     echo json_encode(array('id' => $_POST['data_id'], 'status' => 'check', 'success_action' => $success_action, 'url' => $success_url, 'message' => $success_mesage, 'conversion' => apply_filters('nnr_news_int_submission_success_v1', array('data_id' => $_POST['data_id'], 'table_name' => $_POST['stats_table_name']))));
                     die;
                 } else {
                     if (isset($result['status']) && $result['status'] == 'error') {
                         echo json_encode(array('id' => $_POST['data_id'], 'status' => 'warning', 'message' => $result['error']));
                         die;
                     }
                 }
             } else {
                 echo json_encode(array('id' => $_POST['data_id'], 'status' => 'warning', 'message' => __('Unable to subscribe.', $_POST['text_domain'])));
                 die;
             }
         } else {
             if ($_POST['type'] == 'aweber') {
                 require_once dirname(dirname(__FILE__)) . '/services/aweber/aweber_api.php';
                 $aweber = new AWeberAPI($data_instance['args']['newsletter']['aweber']['consumer_key'], $data_instance['args']['newsletter']['aweber']['consumer_secret']);
                 try {
                     $account = $aweber->getAccount($data_instance['args']['newsletter']['aweber']['access_key'], $data_instance['args']['newsletter']['aweber']['access_secret']);
                     $list = $account->loadFromUrl('/accounts/' . $account->id . '/lists/' . $data_instance['args']['newsletter']['aweber']['list_id']);
                     $subscriber = array('email' => $_POST['email'], 'name' => $_POST['first_name'] . ' ' . $_POST['last_name'], 'ip' => $_SERVER['REMOTE_ADDR']);
                     $newSubscriber = $list->subscribers->create($subscriber);
                     echo json_encode(array('id' => $_POST['data_id'], 'status' => 'check', 'success_action' => $success_action, 'url' => $success_url, 'message' => $success_mesage, 'conversion' => apply_filters('nnr_news_int_submission_success_v1', array('data_id' => $_POST['data_id'], 'table_name' => $_POST['stats_table_name']))));
                     die;
                 } catch (AWeberAPIException $exc) {
                     echo json_encode(array('id' => $_POST['data_id'], 'status' => 'warning', 'message' => $exc->message));
                     die;
                 }
             } else {
                 if ($_POST['type'] == 'getresponse') {
                     require_once dirname(dirname(__FILE__)) . '/services/getresponse/jsonRPCClient.php';
                     $api = new jsonRPCClient('http://api2.getresponse.com');
                     try {
                         $api->add_contact($data_instance['args']['newsletter']['getresponse']['api_key'], array('campaign' => $data_instance['args']['newsletter']['getresponse']['campaign'], 'name' => $_POST['first_name'] . ' ' . $_POST['last_name'], 'email' => $_POST['email']));
                         echo json_encode(array('id' => $_POST['data_id'], 'status' => 'check', 'success_action' => $success_action, 'url' => $success_url, 'message' => $success_mesage, 'conversion' => apply_filters('nnr_news_int_submission_success_v1', array('data_id' => $_POST['data_id'], 'table_name' => $_POST['stats_table_name']))));
                         die;
                     } catch (RuntimeException $exc) {
                         $msg = $exc->getMessage();
                         $msg = substr($msg, 0, strpos($msg, ";"));
                         echo json_encode(array('id' => $_POST['data_id'], 'status' => 'warning', 'message' => $msg));
                         die;
                     }
                 } else {
                     if ($_POST['type'] == 'campaignmonitor') {
                         require_once dirname(dirname(__FILE__)) . '/services/campaignmonitor/csrest_subscribers.php';
                         $wrap = new CS_REST_Subscribers($data_instance['args']['newsletter']['campaignmonitor']['list'], $data_instance['args']['newsletter']['campaignmonitor']['api_key']);
                         // Check if subscriber is already subscribed
                         $result = $wrap->get($_POST['email']);
                         if ($result->was_successful()) {
                             echo json_encode(array('id' => $_POST['data_id'], 'status' => 'warning', 'message' => __('You are already subscribed to this list.', $_POST['text_domain'])));
                             die;
                         }
                         $result = $wrap->add(array('EmailAddress' => $_POST['email'], 'Name' => $_POST['first_name'] . ' ' . $_POST['last_name'], 'Resubscribe' => true));
                         if ($result->was_successful()) {
                             echo json_encode(array('id' => $_POST['data_id'], 'status' => 'check', 'success_action' => $success_action, 'url' => $success_url, 'message' => $success_mesage, 'conversion' => apply_filters('nnr_news_int_submission_success_v1', array('data_id' => $_POST['data_id'], 'table_name' => $_POST['stats_table_name']))));
                             die;
                         } else {
                             echo json_encode(array('id' => $_POST['data_id'], 'status' => 'warning', 'message' => $result->response->Message));
                             die;
                         }
                     } else {
                         if ($_POST['type'] == 'madmimi') {
                             require_once dirname(dirname(__FILE__)) . '/services/madmimi/MadMimi.class.php';
                             $mailer = new MadMimi($data_instance['args']['newsletter']['madmimi']['username'], $data_instance['args']['newsletter']['madmimi']['api_key']);
                             try {
                                 // Check if user is already in list
                                 $result = $mailer->Memberships($_POST['email']);
                                 $lists = new SimpleXMLElement($result);
                                 if ($lists->list) {
                                     foreach ($lists->list as $l) {
                                         if ($l->attributes()->{'name'}->{0} == $data_instance['args']['newsletter']['madmimi']['list']) {
                                             echo json_encode(array('id' => $_POST['data_id'], 'status' => 'check', 'message' => __('You are already subscribed to this list.', $_POST['text_domain'])));
                                             die;
                                         }
                                     }
                                 }
                                 $result = $mailer->AddMembership($data_instance['args']['newsletter']['madmimi']['list'], $_POST['email'], array('first_name' => $_POST['first_name'], 'last_name' => $_POST['last_name']));
                                 echo json_encode(array('id' => $_POST['data_id'], 'status' => 'check', 'success_action' => $success_action, 'url' => $success_url, 'message' => $success_mesage, 'conversion' => apply_filters('nnr_news_int_submission_success_v1', array('data_id' => $_POST['data_id'], 'table_name' => $_POST['stats_table_name']))));
                                 die;
                             } catch (RuntimeException $exc) {
                                 echo json_encode(array('id' => $_POST['data_id'], 'status' => 'warning', 'message' => $msg));
                                 die;
                             }
                         } else {
                             if ($_POST['type'] == 'infusionsoft') {
                                 require_once dirname(dirname(__FILE__)) . '/services/infusionsoft/isdk.php';
                                 try {
                                     $infusion_app = new iSDK();
                                     $infusion_app->cfgCon($data_instance['args']['newsletter']['infusionsoft']['app_id'], $data_instance['args']['newsletter']['infusionsoft']['api_key'], 'throw');
                                 } catch (iSDKException $e) {
                                     echo json_encode(array('id' => $_POST['data_id'], 'status' => 'warning', 'message' => $e->getMessage()));
                                     die;
                                 }
                                 if (empty($error_message)) {
                                     $contact_data = $infusion_app->dsQuery('Contact', 1, 0, array('Email' => $_POST['email']), array('Id', 'Groups'));
                                     // Check if contact already exists
                                     if (0 < count($contact_data)) {
                                         if (false === strpos($contact_data[0]['Groups'], $data_instance['args']['newsletter']['infusionsoft']['list'])) {
                                             $infusion_app->grpAssign($contact_data[0]['Id'], $data_instance['args']['newsletter']['infusionsoft']['list']);
                                             echo json_encode(array('id' => $_POST['data_id'], 'status' => 'check', 'success_action' => $success_action, 'url' => $success_url, 'message' => $success_mesage, 'conversion' => apply_filters('nnr_news_int_submission_success_v1', array('data_id' => $_POST['data_id'], 'table_name' => $_POST['stats_table_name']))));
                                             die;
                                         } else {
                                             echo json_encode(array('id' => $_POST['data_id'], 'status' => 'check', 'message' => __('You are already subscribed to this list.', $_POST['text_domain'])));
                                             die;
                                         }
                                     } else {
                                         $new_contact_id = $infusion_app->dsAdd('Contact', array('FirstName' => $_POST['first_name'], 'LastName' => $_POST['last_name'], 'Email' => $_POST['email']));
                                         $infusion_app->grpAssign($new_contact_id, $data_instance['args']['newsletter']['infusionsoft']['list']);
                                         echo json_encode(array('id' => $_POST['data_id'], 'status' => 'check', 'success_action' => $success_action, 'url' => $success_url, 'message' => $success_mesage, 'conversion' => apply_filters('nnr_news_int_submission_success_v1', array('data_id' => $_POST['data_id'], 'table_name' => $_POST['stats_table_name']))));
                                         die;
                                     }
                                 }
                             } else {
                                 if ($_POST['type'] == 'mymail') {
                                     // Check if plugin is activated
                                     if (!function_exists('mymail')) {
                                         echo json_encode(array('id' => $_POST['data_id'], 'status' => 'warning', 'message' => __('MyMail is not activated.', $_POST['text_domain'])));
                                         die;
                                     }
                                     // Add subscriber
                                     $subscriber_id = mymail('subscribers')->add(array('email' => $_POST['email'], 'firstname' => $_POST['first_name'], 'lastname' => $_POST['last_name']), false);
                                     // Add to List
                                     if (!is_wp_error($subscriber_id)) {
                                         mymail('subscribers')->assign_lists($subscriber_id, array($data_instance['args']['newsletter']['mymail']['list']));
                                         echo json_encode(array('id' => $_POST['data_id'], 'status' => 'check', 'success_action' => $success_action, 'url' => $success_url, 'message' => $success_mesage, 'conversion' => apply_filters('nnr_news_int_submission_success_v1', array('data_id' => $_POST['data_id'], 'table_name' => $_POST['stats_table_name']))));
                                         die;
                                     } else {
                                         echo json_encode(array('id' => $_POST['data_id'], 'status' => 'check', 'message' => __('You are already subscribed to this list.', $_POST['text_domain'])));
                                         die;
                                     }
                                 } else {
                                     if ($_POST['type'] == 'activecampaign') {
                                         require_once dirname(dirname(__FILE__)) . '/services/activecampaign/ActiveCampaign.class.php';
                                         $ac = new ActiveCampaign($data_instance['args']['newsletter']['activecampaign']['app_url'], $data_instance['args']['newsletter']['activecampaign']['api_key']);
                                         if (!(int) $ac->credentials_test()) {
                                             echo json_encode(array('id' => $_POST['data_id'], 'status' => 'warning', 'message' => __('Unable to to connect to Active Campaign.', $_POST['text_domain'])));
                                             die;
                                         }
                                         // Add subscriber
                                         $contact_sync = $ac->api("contact/add", array("email" => $_POST['email'], "first_name" => $_POST['first_name'], "last_name" => $_POST['last_name'], "p[" . $data_instance['args']['newsletter']['activecampaign']['list'] . "]" => $data_instance['args']['newsletter']['activecampaign']['list'], "status[" . $data_instance['args']['newsletter']['activecampaign']['list'] . "]" => 1));
                                         if ((int) $contact_sync->success) {
                                             echo json_encode(array('id' => $_POST['data_id'], 'status' => 'check', 'success_action' => $success_action, 'url' => $success_url, 'message' => $success_mesage, 'conversion' => apply_filters('nnr_news_int_submission_success_v1', array('data_id' => $_POST['data_id'], 'table_name' => $_POST['stats_table_name']))));
                                             die;
                                         } else {
                                             echo json_encode(array('id' => $_POST['data_id'], 'status' => 'warning', 'message' => $contact_sync->error));
                                             die;
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     do_action('nnr_news_int_after_submission_add_email_v1');
     echo json_encode(apply_filters('nnr_news_int_submission_add_email_v1', array('id' => $_POST['data_id'], 'status' => 'warning', 'message' => __('Unable to subscribe user. Newsletter not setup properly.', $_POST['text_domain']))));
     die;
     // this is required to terminate immediately and return a proper response
 }