/**
  * Retrieves the lists via Infusionsoft API and updates the data in DB.
  * @return string
  */
 function get_infusionsoft_lists($app_id, $api_key, $name)
 {
     if (!function_exists('curl_init')) {
         return __('curl_init is not defined ', 'rapidology');
     }
     if (!class_exists('iSDK')) {
         require_once RAD_RAPIDOLOGY_PLUGIN_DIR . 'subscription/infusionsoft/isdk.php';
     }
     $lists = array();
     try {
         $infusion_app = new iSDK();
         $infusion_app->cfgCon($app_id, $api_key, 'throw');
     } catch (iSDKException $e) {
         $error_message = $e->getMessage();
     }
     if (empty($error_message)) {
         $need_request = true;
         $page = 0;
         $all_lists = array();
         while (true == $need_request) {
             $error_message = 'success';
             $lists_data = $infusion_app->dsQuery('ContactGroup', 1000, $page, array('Id' => '%'), array('Id', 'GroupName'));
             $all_lists = array_merge($all_lists, $lists_data);
             if (1000 > count($lists_data)) {
                 $need_request = false;
             } else {
                 $page++;
             }
         }
     }
     if (!empty($all_lists)) {
         foreach ($all_lists as $list) {
             $group_query = '%' . $list['Id'] . '%';
             $subscribers_count = $infusion_app->dsCount('Contact', array('Groups' => $group_query));
             $lists[$list['Id']]['name'] = sanitize_text_field($list['GroupName']);
             $lists[$list['Id']]['subscribers_count'] = sanitize_text_field($subscribers_count);
             $lists[$list['Id']]['growth_week'] = sanitize_text_field($this->calculate_growth_rate('infusionsoft_' . $list['Id']));
         }
         $this->update_account('infusionsoft', sanitize_text_field($name), array('lists' => $lists, 'api_key' => sanitize_text_field($api_key), 'client_id' => sanitize_text_field($app_id), 'is_authorized' => 'true'));
     }
     return $error_message;
 }
Esempio n. 2
0
$connInfo = array('main:mojo:i:679c2a2a6aef93984f48e3ec4794db26:Mojo Video');
$infusion = new iSDK();
$infusion->cfgCon("main");
//*=================
//* WISHLIST
//*=================
//WISHLISTMEMBER
$wishlist = new wlmapiclass('http://www.mojoleadmastery.com/members', 'LXbfqw59CFNUWaexLXbfqw59CFNUWaex');
$wishlist->return_format = 'php';
// <- value can also be xml or json
//*===============================
//* GET USER INFORMATION FROM IS
//*===============================
$returnFields = array('contactId');
$query = array('Id' => $order_id);
$contacts = $infusion->dsQuery("Job", 1, 0, $query, $returnFields);
$fields = array('FirstName', 'LastName', 'Email', 'Phone1', 'Company', 'Username', 'Password');
$IS_DATA = $infusion->loadCon($contacts[0]['contactId'], $fields);
//*==============================================
//* POST TO MOJO Lead Mastery
//* http://mojoleadmastery.com/
//*==============================================
//SET LEVEL
//if($level == 'MLMMonthly')
//{
//	$wllevels = array("1409152379"); //mojo full
//	$member= 'Mojo Lead Mastery';
//}
//
//else if($level == 'MLMYearly')
//{
Esempio n. 3
0
$sel = -1;
/******************************************************************************
 * 
 * Pre-load all data that is necessary for comparisons to determine if an item
 * already exists within the Infusionsoft app.
 * 
 * Example : Load all product id's to compare with products being read so that
 * we don't create duplicates of the exact same information
 * 
 *****************************************************************************/
// here we're doing the same thing as above but for the contact's records
// how many rows in ContactGroup table
$count = $app->dsCount($tName, $query);
// iterate all rows of table
while ($count > 0) {
    $data = $app->dsQuery($tName, $limit, $page, $query, $rFields);
    foreach ($data as $dat) {
        $ekmcons[$concount] = $dat['Email'];
        $ekmids[$concount] = $dat['Id'];
    }
    $count = $count - 1000;
    $page++;
}
$concount = $app->dsCount($tName, $query);
/*$data=$app->dsQuery($tName, $limit, $page, $query, $rFields);
$count=count($data);
foreach ($data as $dat){
	$ekmcons[$concount]=$dat['Email'];
    $ekmids[$concount]=$dat['Id'];
	$concount++;
}
Esempio n. 4
0
$rFields = array('ShortDescription');
$count = 0;
$prodcount = 0;
$concount = 0;
$found = false;
/******************************************************************************
 * 
 * Pre-load all data that is necessary for comparisons to determine if an item
 * already exists within the Infusionsoft app.
 * 
 * Example : Load all product id's to compare with products being read so that
 * we don't create duplicates of the exact same information
 * 
 *****************************************************************************/
// this loads the EKM product id's from the product ShortDescription field already in IS
$data = $app->dsQuery($tName, $limit, $page, $query, $rFields);
$count = count($data);
foreach ($data as $dat) {
    $ekmids[$prodcount] = $dat['ShortDescription'];
    $prodcount++;
}
while ($count === 1000) {
    $page++;
    $data = $app->dsQuery($tName, $limit, $page, $query, $rFields);
    $count = count($data);
    foreach ($data as $dat) {
        $ekmids[$prodcount] = $dat['ShortDescription'];
        $prodcount++;
    }
}
// here we're doing the same thing as above but for the contact's records
 /**
  * Get all the infusionsoft lists for specfic account
  *
  * @access public
  * @return void
  */
 function nnr_new_int_get_infusionsoft_lists_v1()
 {
     do_action('nnr_news_int_before_get_infusionsoft_lists_v1');
     if (!function_exists('curl_init')) {
         return __('curl_init is not defined ', 'bloom');
     }
     if (!class_exists('iSDK')) {
         require_once dirname(dirname(__FILE__)) . '/services/infusionsoft/isdk.php';
     }
     $options = '';
     // Make sure the use entered in the api key
     if (isset($_POST['app_id']) && $_POST['app_id'] != '' && isset($_POST['api_key']) && $_POST['api_key'] != '') {
         try {
             $infusion_app = new iSDK();
             $infusion_app->cfgCon($_POST['app_id'], $_POST['api_key'], 'throw');
         } catch (iSDKException $e) {
             $error_message = $e->getMessage();
         }
         if (empty($error_message)) {
             $need_request = true;
             $page = 0;
             $all_lists = array();
             while (true == $need_request) {
                 $error_message = 'success';
                 $lists_data = $infusion_app->dsQuery('ContactGroup', 1000, $page, array('Id' => '%'), array('Id', 'GroupName'));
                 $all_lists = array_merge($all_lists, $lists_data);
                 if (1000 > count($lists_data)) {
                     $need_request = false;
                 } else {
                     $page++;
                 }
             }
         }
         // Get all list information
         if (!empty($all_lists)) {
             foreach ($all_lists as $list) {
                 if ($_POST['list'] == $list['Id']) {
                     $options .= '<option value="' . $list['Id'] . '" selected="selected">' . $list['GroupName'] . '</option>';
                 } else {
                     $options .= '<option value="' . $list['Id'] . '">' . $list['GroupName'] . '</option>';
                 }
             }
         }
     }
     do_action('nnr_news_int_after_get_infusionsoft_lists_v1');
     echo apply_filters('nnr_news_int_get_infusionsoft_lists_v1', $options);
     die;
     // this is required to terminate immediately and return a proper response
 }
Esempio n. 6
0
 /**
  * Subscribes to Infusionsoft list. Returns either "success" string or error message.
  * @return string
  */
 function subscribe_infusionsoft($api_key, $app_id, $list_id, $email, $name = '', $last_name = '')
 {
     if (!function_exists('curl_init')) {
         return __('curl_init is not defined ', 'bloom');
     }
     if (!class_exists('iSDK')) {
         require_once ET_BLOOM_PLUGIN_DIR . 'subscription/infusionsoft/isdk.php';
     }
     try {
         $infusion_app = new iSDK();
         $infusion_app->cfgCon($app_id, $api_key, 'throw');
     } catch (iSDKException $e) {
         $error_message = $e->getMessage();
     }
     if (empty($error_message)) {
         $contact_data = $infusion_app->dsQuery('Contact', 1, 0, array('Email' => $email), array('Id', 'Groups'));
         if (0 < count($contact_data)) {
             if (false === strpos($contact_data[0]['Groups'], $list_id)) {
                 $infusion_app->grpAssign($contact_data[0]['Id'], $list_id);
                 $error_message = 'success';
             } else {
                 $error_message = __('Already subscribed', 'bloom');
             }
         } else {
             $contact_details = array('FirstName' => $name, 'LastName' => $last_name, 'Email' => $email);
             $new_contact_id = $infusion_app->dsAdd('Contact', $contact_details);
             $infusion_app->grpAssign($new_contact_id, $list_id);
             $error_message = 'success';
         }
     }
     return $error_message;
 }
 $cid = 36;
 //Sets current date
 $currentDate = date("d-m-Y");
 $oDate = $app->infuDate($currentDate);
 echo "date set<br/>";
 //Creates blank order
 $newOrder = $app->blankOrder($cid, "New Order for Contact 123", $oDate, 0, 0);
 echo "newOrder=" . $newOrder . "<br/>";
 $newOrder = (int) $newOrder;
 //Adds item to order
 $result = $app->addOrderItem($newOrder, 53, 4, 66.66, 1, "JustinsStuff", "new stuff!");
 echo "item added<br/>";
 //Finds the newest credit card
 $qry = array('ContactId' => $cid);
 $rets = array('Id');
 $cards = $app->dsQuery("CreditCard", 99, 0, $qry, $rets);
 echo "<pre>";
 print_r($cards);
 echo "</pre>";
 $newCard = 0;
 $counter = 0;
 foreach ($cards as $card) {
     if ($cards[$counter]['Id'] > $newCard) {
         $newCard = (int) $cards[$counter]['Id'];
     }
     $counter++;
 }
 echo "newCard= " . $newCard . "<br/>";
 //Charge the invoice for new order with the latest credit card
 $result = $app->chargeInvoice($newOrder, "Cutomer Paid", $newCard, 9, false);
 echo "<pre>";
<?php

require_once "../src/isdk.php";
$app = new iSDK();
if ($app->cfgCon("connectionName")) {
    echo "connected<br/>";
    echo "app connected<br/>";
    $qry = array('JobTitle' => 'New Order for Contact 123');
    $rets = array('Id');
    $cards = $app->dsQuery("Job", 100, 0, $qry, $rets);
    echo "<pre>";
    print_r($cards);
    echo "</pre>";
} else {
    echo "Connection Failed";
}
    <?php 
require "src/isdk.php";
$app = new iSDK();
if ($app->cfgCon("connectionName")) {
    echo "app connected<br/>";
    //$email = i4w_get_contact_field('Email');
    $email = "*****@*****.**";
    echo "Email is {$email}";
    $returnFields = array('Id', 'FirstName', '_Status', 'ContactType', '_Price', '_OrderNumber', '_ProductCode', '_OrderDate');
    $query = array('Email' => $email);
    $contacts = $app->dsQuery("Contact", 1000, 0, $query, $returnFields);
    echo "<pre>";
    print_r($contacts);
    echo "</pre>";
    $counter = 0;
    echo "<table border='1'>";
    echo "<tr>\n <th width=\"200px\" style=\"text-align:left\">Order Number</th>\n <th width=\"100px\" style=\"text-align:left\">Order Date</th>\n  <th width=\"200px\" style=\"text-align:left\">Name</th>\n  <th width=\"100px\" style=\"text-align:left\">Status</th> \n  <th width=\"100px\" style=\"text-align:left\">Price</th> \n  <th width=\"100px\" style=\"text-align:left\">Delivery</th> \n\n\n  </tr>";
    foreach ($contacts as $value) {
        if ($contacts[$counter]['ContactType'] == "Order") {
            //Store Order Number In Variable For Later Use
            $orderNumber = $contacts[$counter]['_OrderNumber'];
            //Figure Out If Paper Or Electronic Deliver
            $delivery = substr($contacts[$counter]['_ProductCode'], -2);
            if ($delivery == "ED") {
                $delivery = "Electronic";
            } elseif ($delivery == "PD") {
                $delivery = "Paper";
            }
            //Populate Table
            echo "<tr><td>";
Esempio n. 10
0
 $subtotal = $order[7];
 $total = $order[8];
 $fname = $order[10];
 $lname = $order[11];
 $email = $order[9];
 $company = $order[12];
 $add1 = $order[13];
 $add2 = $order[14];
 $country = $order[17];
 $zip = $order[18];
 $phone = $order[19];
 $city = $order[15];
 $state = $order[16];
 // if this is a new order then get the contact by querying the account id field for the EKM customer Id
 //$con=$data->query('Contact',array('AccountId'=>$order[0]),1,0);
 $con = $thisapp->dsQuery('Contact', 1000, 0, array('AccountId' => $order[0]), array('Id'));
 /* the condition below tests to see if the billing address is the same as the shipping address and if TRUE is the
 result then that means no and we should use the specific shipping fields otherwise use the billing information
 */
 if ($order[20] == 'TRUE') {
     $company = $order[21];
     $fname = $order[22];
     $lname = $order[23];
     $add1 = $order[24];
     $add2 = $order[25];
     $city = $order[26];
     $state = $order[27];
     $country = $order[28];
     $zip = $order[29];
 }
 $iId = $thisapp->blankOrder($con[0]['Id'], 'testing it out', $thisapp->infuDate($order[3]), 0, 0);
<?php

require_once "../src/isdk.php";
$app = new iSDK();
echo "created object!<br/>";
if ($app->cfgCon("connectionName")) {
    echo "app connected!<br/>";
    $email = '*****@*****.**';
    $totalRecords = $app->dsCount("Contact", array('Email' => $email));
    echo $totalRecords;
    if ($totalRecords > 0) {
        $totalPages = ceil($totalRecords / 1000);
        $contacts = array();
        $page = 0;
        do {
            $contact = $app->dsQuery("Contact", 1000, $page++, array('Email' => $email), array('Id', 'FirstName', 'LastName', 'Email', 'Phone1'));
            foreach ($contact as $c) {
                $contacts[] = $c;
            }
        } while ($page < $totalPages);
        echo "<pre>";
        print_r($contacts);
        echo "</pre>";
    } else {
        echo "There were no contacts found with the specified email";
    }
} else {
    echo "connection failed!<br/>";
}
if (isset($_POST['ajaxemail'])) {
    $email = $_POST['ajaxemail'];
    $sql = "SELECT id FROM  users WHERE email='{$email}'";
    $stmt = $conn->prepare($sql);
    $stmt->execute();
    $result = $stmt->fetchAll();
    echo $result[0]['id'];
    exit;
}
if (isset($_POST['first_name'])) {
    require_once "infusion/isdk.php";
    $app = new iSDK();
    if ($app->cfgCon("connectionName")) {
        $qry = array('Email' => $_POST['emailAddress']);
        $ret = array("Id");
        $dups = $app->dsQuery("Contact", 1, 0, $qry, $ret);
        if (empty($dups)) {
            $contact = array("FirstName" => $_POST['first_name'], "LastName" => $_POST['last_name'], "State" => $_POST['state'], "Phone1" => $_POST['phoneNumber'], "City" => $_POST['city'], "Email" => $_POST['emailAddress'], "Address1Type" => $_POST['addressLine1'], "ZipFour1" => $_POST['zipCode'], "Country" => $_POST['country'], "Company" => $_POST['company']);
            $date = date('d/m/y');
            $cid = $app->addCon($contact);
        } else {
            $cid = $dups[0]['Id'];
            $contact = array("FirstName" => $_POST['first_name'], "LastName" => $_POST['last_name'], "State" => $_POST['state'], "Phone1" => $_POST['phoneNumber'], "City" => $_POST['city'], "Email" => $_POST['emailAddress'], "Address1Type" => $_POST['addressLine1'], "ZipFour1" => $_POST['last_name'], "Country" => $_POST['last_name'], "Company" => $_POST['company']);
            $contact_ID = $app->updateCon($cid, $contact);
        }
        $fullname = explode(" ", $_POST['nameoncard']);
        $card['FirstName'] = $fullname[0];
        $card['LastName'] = $fullname[1];
        $card['CardNumber'] = $_POST['cnumber'];
        $card['ExpirationMonth'] = $_POST['cardmonth'];
        $card['ExpirationYear'] = $_POST['cardyear'];
<?php

require_once "../src/isdk.php";
$app = new iSDK();
if ($app->cfgCon("connectionName")) {
    echo "connected<br/>";
    echo "app connected<br/>";
    $qry = array('Company' => '~null~');
    $rets = array('Id', 'FirstName');
    $cards = $app->dsQuery("Contact", 99, 0, $qry, $rets);
    echo "<pre>";
    print_r($cards);
    echo "</pre>";
} else {
    echo "Connection Failed";
}
<?php

require_once "../src/isdk.php";
$app = new iSDK();
if ($app->cfgCon("connectionName", "api-key", "throw")) {
    echo "connected<br/>";
    echo "app connected<br/>";
    $qry = array("FakeColumn" => "FakeValue");
    try {
        $r = $app->dsQuery("FakeTable", 1, 0, $qry, array("FakeColumn"));
    } catch (iSDKException $e) {
        echo "iSDKException code {$e->getCode()}, message: {$e->getMessage()}\n";
        exit;
    }
    echo "Test failed: exception should have been thrown\n";
    exit(1);
} else {
    echo "connection failed";
}
<?php

require_once "../src/isdk.php";
$app = new iSDK();
$app->enableLogging(1);
$app->setLog('apilog.csv');
if ($app->cfgCon("connectionName")) {
    $contacts = $app->dsQuery("Contact", 10, 0, array('Id' => '%'), array('Id', 'FirstName', 'LastName'));
    echo "<pre>";
    print_r($contacts);
    echo "</pre>";
} else {
    echo "Connection Failed";
}
Esempio n. 16
0
            $city = $order[26];
            $state = $order[27];
            $country = $order[28];
            $zip = $order[29];
        }
        $invoice = $thisapp->blankOrder($con[0]['Id'], 'EKM imported order.', date('Ymd'), 0, 0);
        //$invoice=$thisapp->dsAdd('Job',array('ContactId'=>$con[0]['Id'],'JobTitle'=>'EKM imported order for order number ('.$order[2].')','ShipCity'=>$city,'ShipCompany'=>$company,'ShipCountry'=>$country,'ShipFirstName'=>$fname,'ShipLastName'=>$lname,'ShipPhone'=>$phone,'ShipState'=>$state,'ShipStreet1'=>$add1,'ShipStreet2'=>$add2,'ShipZip'=>$zip));
        //echo 'Adding  order for contact id : '.$data[0]['Id'].'<br>';
    } else {
        //if this is not a new order then add order items to the existing order
        /**** These are the indexes for product information ****
         * 		39=ProductId
         * 		40=ProductName
         * 		41=ProductCode (mapped to ShortDescription in IS)
         * 		42=ProductOptions
         * 		43=ProductPrice
         * 		44=ProductDiscount
         * 		45=ProductDelivery
         * 		46=ProductQuantity (this would go on an invoice rather than in a product definition)
         * 		47=ProductRRP (Recommended Retail Price)*/
        $prod = $thisapp->dsQuery('Product', 1, 0, array('ShortDescription' => $order[39]), array('Id'));
        $dat = $thisapp->addOrderItem($invoice, $prod[0]['Id'], 4, $prod[43], $order[46], $order[40], 'EKM imported invoice item');
        echo 'Adding produce (' . $prod[0]['Id'] . ') for order number ' . $invoice . '<br />';
    }
}
$orderDate = substr($order[3], 1, 8);
$pDate = $app->infuDate($orderDate);
$dat = $thisapp->addOrderItem($invoice, 0, 4, -$discount, 1, 'Total Discount', 'EKM imported invoice item');
$dat = $thisapp->addOrderItem($invoice, 0, 1, $shipping, 1, 'Total Shipping Cost', 'EKM imported invoice item');
$dat = $thisapp->manualPmt($invoice, $total, $pDate, 'Manual Credit Card Payment', 'EKM imported payment', true);
fclose($file);
 public static function donation_button_get_infusionsoft_lists()
 {
     $infusionsoft_lists = array();
     $enable_infusionsoft = get_option('enable_infusionsoft');
     if (isset($enable_infusionsoft) && $enable_infusionsoft == 'yes') {
         $infusionsoft_debug = get_option('log_enable_infusionsoft') == 'yes' ? 'yes' : 'no';
         $log = new Donation_Button_Logger();
         $infusionsoft_lists = unserialize(get_transient('donation_button_infusionsoft_list'));
         if (empty($infusionsoft_lists) || get_option('donation_button_infusionsoft_force_refresh') == 'yes') {
             include_once DBP_PLUGIN_DIR_PATH . '/admin/partials/lib/infusionsoft/isdk.php';
             $infusionsoft_api_key = get_option('infusionsoft_api_key');
             $infusionsoft_api_app_name = get_option('infusionsoft_api_app_name');
             if (isset($infusionsoft_api_key) && !empty($infusionsoft_api_key) && (isset($infusionsoft_api_app_name) && !empty($infusionsoft_api_app_name))) {
                 $app = new iSDK();
                 try {
                     if ($app->cfgCon($infusionsoft_api_app_name, $infusionsoft_api_key)) {
                         $returnFields = array('Id', 'Name');
                         $query = array('Id' => '%');
                         $lists = $app->dsQuery("Campaign", 1000, 0, $query, $returnFields);
                     }
                 } catch (Exception $e) {
                     unset($infusionsoft_lists);
                     $infusionsoft_lists['false'] = $e->getMessage();
                 }
                 if (count($lists) > 0 and is_array($lists)) {
                     unset($infusionsoft_lists);
                     foreach ($lists as $list) {
                         $infusionsoft_lists[$list['Id']] = $list['Name'];
                     }
                     delete_transient('donation_button_infusionsoft_list');
                     set_transient('donation_button_infusionsoft_list', serialize($infusionsoft_lists), 86400);
                     if ('yes' == $infusionsoft_debug) {
                         $log->add('Infusionsoft', 'Infusionsoft Get List Success..');
                     }
                     update_option('donation_button_infusionsoft_force_refresh', 'no');
                 } else {
                     if ('yes' == $infusionsoft_debug) {
                         $log->add('Infusionsoft', 'Infusionsoft API Key And Application Name Please Check.');
                     }
                 }
             } else {
                 if ('yes' == $infusionsoft_debug) {
                     $log->add('Infusionsoft', 'Required information is empty.');
                 }
                 $infusionsoft_lists['false'] = __("Required information is empty.", 'donation-button');
             }
         }
     }
     return $infusionsoft_lists;
 }
 public function shoppingcart()
 {
     if (isset($_POST['first_name'])) {
         $app = new \iSDK();
         if ($app->cfgCon("connectionName")) {
             $qry = array('Email' => $_POST['emailAddress']);
             $ret = array("Id");
             $dups = $app->dsQuery("Contact", 1, 0, $qry, $ret);
             if (empty($dups)) {
                 $contact = array("FirstName" => $_POST['first_name'], "LastName" => $_POST['last_name'], "State" => $_POST['state'], "Phone1" => $_POST['phoneNumber'], "City" => $_POST['city'], "Email" => $_POST['emailAddress'], "Address1Type" => $_POST['addressLine1'], "ZipFour1" => $_POST['last_name'], "Country" => $_POST['last_name'], "Company" => $_POST['company']);
                 $date = date('d/m/y');
                 $cid = $app->addCon($contact);
             } else {
                 $cid = $dups[0]['Id'];
                 $contact = array("FirstName" => $_POST['first_name'], "LastName" => $_POST['last_name'], "State" => $_POST['state'], "Phone1" => $_POST['phoneNumber'], "City" => $_POST['city'], "Email" => $_POST['emailAddress'], "Address1Type" => $_POST['addressLine1'], "ZipFour1" => $_POST['last_name'], "Country" => $_POST['last_name'], "Company" => $_POST['company']);
                 $contact_ID = $app->updateCon($cid, $contact);
             }
             $fullname = explode(" ", $_POST['nameoncard']);
             $card['FirstName'] = $fullname[0];
             $card['LastName'] = $fullname[1];
             $card['CardNumber'] = $_POST['cnumber'];
             $card['ExpirationMonth'] = $_POST['cardmonth'];
             $card['ExpirationYear'] = $_POST['cardyear'];
             $card['CVV2'] = $_POST['CVV'];
             $result = $app->validateCard($card);
             if ($result['Valid'] == 'false') {
                 $msg = "Order cancel due to credit card";
                 return view('licenses.shoppingcart', compact('msg'));
             } else {
                 $ccid = $app->dsAdd("CreditCard", $card);
                 //$timezone = new DateTimeZone( "America/New_York" );
                 //$date = new DateTime();
                 //$date->setTimezone( $timezone );
                 $currentDate = date('Y-m-d H:i:s');
                 $oDate = $app->infuDate($currentDate);
                 try {
                     $invID = $app->blankOrder($cid, "Order for Licenses" . $cid, $oDate, 0, 0);
                 } catch (Exception $e) {
                     echo 'Caught exception: ', $e->getMessage(), "\n";
                 }
                 $ord = $app->getOrderId($invID);
                 $Quantity = $_POST['Quantity'];
                 $subID = array();
                 for ($i = 1; $i <= $Quantity; $i++) {
                     $app->addOrderItem((int) $invID, (int) 50, (int) 4, (double) 0.1, (int) 1, 'Licenses Item' . $i, '');
                     $_intproductid = $app->addRecurringAdv((int) $cid, true, (int) 34, (int) 1, (double) 0.1, false, (int) 2, (int) $ccid, (int) 0, (int) 30);
                     $_nextBillDate = date("d-m-Y", strtotime("1 Months + 1 day"));
                     $subID[$i] = $_intproductid;
                     $thedate = $app->infuDate($_nextBillDate);
                     $app->updateSubscriptionNextBillDate($_intproductid, $thedate);
                     $service["Frequency"] = 1;
                     $service["BillingCycle"] = 2;
                     $app->dsUpdate("RecurringOrder", $_intproductid, $service);
                 }
                 $payStat = $app->chargeInvoice((int) $invID, "Payment Via API", (int) $ccid, (int) 2, false);
                 if (substr($payStat['Message'], 0, 2) == "91") {
                     $payStat = $app->chargeInvoice((int) $invID, "Payment Via API", (int) $ccid, (int) 2, false);
                 }
                 if ($payStat['RefNum'] != "E" && $payStat['Code'] == "APPROVED") {
                     $msg = "Thanks For Order";
                     $user_id = Auth::user()->id;
                     $users = User::findOrFail($user_id);
                     for ($i = 1; $i <= $Quantity; $i++) {
                         $date = new \DateTime();
                         $license = new License();
                         $license->life = 1;
                         $license->license_key = $subID[$i];
                         $license->company_id = $users->company_id;
                         $license->user_id = 0;
                         $license->status = 'ACTIVE';
                         $license->created_by = Auth::user()->id;
                         $license->created_at = $date;
                         $license->updated_at = $date;
                         $license->save();
                     }
                     return view('licenses.shoppingcart', compact('msg'));
                 } else {
                     $msg = "Order cancel due payment";
                     return view('licenses.shoppingcart', compact('msg'));
                 }
             }
         }
     }
     $msg = "";
     return view('licenses.shoppingcart', compact('msg'));
 }
 /**
  * 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
 }