Skip to content

Commit

Permalink
Merge pull request #26 from ConvertKit/1.4.2
Browse files Browse the repository at this point in the history
Release 1.4.2
  • Loading branch information
growdev authored Jul 5, 2016
2 parents acc9755 + cef9d2c commit e4f1915
Show file tree
Hide file tree
Showing 4 changed files with 155 additions and 154 deletions.
29 changes: 12 additions & 17 deletions lib/convertkit-api.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class ConvertKitAPI {
protected $api_version = 'v3';

/** @var string */
protected $api_url_base = 'http://api.convertkit.com/';
protected $api_url_base = 'https://api.convertkit.com/';

/** @var array */
protected $resources = array();
Expand Down Expand Up @@ -91,11 +91,12 @@ public function get_resources($resource) {
* @return object
*/
public function form_subscribe($form_id, $options) {
$request = sprintf('forms/%s/subscribe', $form_id);
$request = $this->api_version . sprintf('/forms/%s/subscribe', $form_id);

$args = array(
'email' => $options['email'],
'fname' => $options['fname']
'api_key' => $this->api_key,
'email' => $options['email'],
'name' => $options['name'],
);

return $this->make_request($request, 'POST', $args);
Expand All @@ -108,14 +109,14 @@ public function form_subscribe($form_id, $options) {
* @return object Response object
*/
public function form_unsubscribe($options) {
$request = 'unsubscribe';
$request = $this->api_version . '/unsubscribe';

$args = array(
'api_secret' => $this->api_secret,
'email' => $options['email']
);

return $this->make_request($request, 'POST', $args);
return $this->make_request($request, 'PUT', $args);
}

/**
Expand Down Expand Up @@ -209,23 +210,17 @@ public function make_request($request, $method = 'GET', $args = array()) {
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
if ( 'PUT' == $method ){
curl_setopt($ch, CURLOPT_PUT, true);
//curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-HTTP-Method-Override: PUT'));
}

$results = curl_exec($ch);
curl_close($ch);

return json_decode($results);
}

/**
* Merge default request arguments with those of this request
*
* @param array $args Request arguments
* @return array Request arguments
*/
public function filter_request_arguments($args = array()) {
return array_merge($args, array('k' => $this->api_key, 'v' => $this->api_version));
}

/**
* Build the full request URL
*
Expand All @@ -234,7 +229,7 @@ public function filter_request_arguments($args = array()) {
* @return string Request URL
*/
public function build_request_url($request, array $args) {
return $this->api_url_base . $request . '?' . http_build_query($this->filter_request_arguments($args));
return $this->api_url_base . $request . '?' . http_build_query( $args );
}

}
270 changes: 136 additions & 134 deletions lib/integration/wishlist_member.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,140 +4,142 @@

if(!class_exists('ConvertKitWishlistIntegration')) {

/**
* Class ConvertKitWishlistIntegration
*/
class ConvertKitWishlistIntegration {
protected $api;
protected $options;

/**
* Constructor
*/
public function __construct() {
$general_options = get_option('_wp_convertkit_settings');
$this->options = get_option('_wp_convertkit_integration_wishlistmember_settings');
$api_key = $general_options && array_key_exists("api_key", $general_options) ? $general_options['api_key'] : null;
$api_secret = $general_options && array_key_exists("api_secret", $general_options) ? $general_options['api_secret'] : null;
$this->api = new ConvertKitAPI($api_key,$api_secret);

add_action(
'wishlistmember_add_user_levels', // hook
array($this, 'add_user_levels'), // function to call
null, // priority (default is fine)
2 // number of arguments passed
);

add_action(
'wishlistmember_remove_user_levels', // hook
array($this, 'remove_user_levels'), // function to call
null, // priority
2 // number of arguments passed
);
}

/**
* Callback function for wishlistmember_add_user_levels action
*
* @param string $member_id ID for member that has just had levels added
* @param array $levels Levels to which member was added
*/
public function add_user_levels($member_id, $levels) {
$member = $this->get_member($member_id);

foreach ($levels as $wlm_level_id) {
if (!isset($this->options[$wlm_level_id . '_form'])) continue;

$this->member_resource_subscribe(
$member,
$this->options[$wlm_level_id . '_form']
);
}
}

/**
* Note: Form level unsubscribe is not available in v3 of the API.
*
* Callback function for wishlistmember_remove_user_levels action
*
* @param string $member_id ID for member that has just had levels removed
* @param array $levels Levels from which member was removed
*/
public function remove_user_levels($member_id, $levels) {
/*
$member = $this->get_member($member_id);
foreach ($levels as $wlm_level_id) {
if (
isset($this->options[$wlm_level_id . '_form'])
&& isset($this->options[$wlm_level_id . '_unsubscribe'])
&& $this->options[$wlm_level_id . '_unsubscribe'] == '1'
) {
$this->member_resource_unsubscribe(
$member,
$this->options[$wlm_level_id . '_form']
);
}
}
*/
}

/**
* Subscribes a member to a ConvertKit resource
*
* @param array $member UserInfo from WishList Member
* @param string $form_id ConvertKit form id
* @return object Response object from API
*/
public function member_resource_subscribe($member, $form_id) {

// Check for temp email
if ( preg_match('/temp_[a-f0-9]{32}/', $member['user_email'] ) ) {
$email = $member['wlm_origemail'];
} else {
$email = $member['user_email'];
}
return $this->api->form_subscribe(
$form_id,
array(
'email' => $email,
'fname' => $member['display_name']
)
);
}

/**
* Unsubscribes a member from a ConvertKit resource
*
* @param array $member UserInfo from WishList Member
* @param string $form_id ConvertKit form id
* @return object Response object from API
*/
public function member_resource_unsubscribe($member, $form_id) {
return $this->api->form_unsubscribe(
array(
'email' => $member['user_email']
)
);
}

/**
* Gets a WLM member using the wlmapi functions
*
* @param string $id The member id
* @return array The member fields from the API request
*/
public function get_member($id) {
if (!function_exists('wlmapi_get_member')) return false;

$wlm_get_member = wlmapi_get_member($id);

if ($wlm_get_member['success'] == 0) return false;

return $wlm_get_member['member'][0]['UserInfo'];
}

}
/**
* Class ConvertKitWishlistIntegration
*/
class ConvertKitWishlistIntegration {
protected $api;
protected $options;

/**
* Constructor
*/
public function __construct() {
$general_options = get_option('_wp_convertkit_settings');
$this->options = get_option('_wp_convertkit_integration_wishlistmember_settings');
$api_key = $general_options && array_key_exists("api_key", $general_options) ? $general_options['api_key'] : null;
$api_secret = $general_options && array_key_exists("api_secret", $general_options) ? $general_options['api_secret'] : null;
$this->api = new ConvertKitAPI($api_key,$api_secret);

add_action(
'wishlistmember_add_user_levels', // hook
array($this, 'add_user_levels'), // function to call
null, // priority (default is fine)
2 // number of arguments passed
);

add_action(
'wishlistmember_remove_user_levels', // hook
array($this, 'remove_user_levels'), // function to call
null, // priority
2 // number of arguments passed
);
}

/**
* Callback function for wishlistmember_add_user_levels action
*
* @param string $member_id ID for member that has just had levels added
* @param array $levels Levels to which member was added
*/
public function add_user_levels($member_id, $levels) {
$member = $this->get_member($member_id);

foreach ($levels as $wlm_level_id) {
if (!isset($this->options[$wlm_level_id . '_form'])) continue;

$this->member_resource_subscribe(
$member,
$this->options[$wlm_level_id . '_form']
);
}
}

/**
* Note: Form level unsubscribe is not available in v3 of the API.
*
* Callback function for wishlistmember_remove_user_levels action
*
* @param string $member_id ID for member that has just had levels removed
* @param array $levels Levels from which member was removed
*/
public function remove_user_levels($member_id, $levels) {

$member = $this->get_member($member_id);

foreach ($levels as $wlm_level_id) {
if (
isset($this->options[$wlm_level_id . '_form'])
&& isset($this->options[$wlm_level_id . '_unsubscribe'])
&& $this->options[$wlm_level_id . '_unsubscribe'] == '1'
) {
$this->member_resource_unsubscribe(
$member,
$this->options[$wlm_level_id . '_form']
);
}
}

}

/**
* Subscribes a member to a ConvertKit resource
*
* @param array $member UserInfo from WishList Member
* @param string $form_id ConvertKit form id
* @return object Response object from API
*/
public function member_resource_subscribe($member, $form_id) {

// Check for temp email
if ( preg_match('/temp_[a-f0-9]{32}/', $member['user_email'] ) ) {
$email = $member['wlm_origemail'];
} else {
$email = $member['user_email'];
}

// Note Wishlist Member combines first and last name into 'display_name'
return $this->api->form_subscribe(
$form_id,
array(
'email' => $email,
'name' => $member['display_name'],
)
);
}

/**
* Unsubscribes a member from a ConvertKit resource
*
* @param array $member UserInfo from WishList Member
* @param string $form_id ConvertKit form id
* @return object Response object from API
*/
public function member_resource_unsubscribe($member, $form_id) {
return $this->api->form_unsubscribe(
array(
'email' => $member['user_email']
)
);
}

/**
* Gets a WLM member using the wlmapi functions
*
* @param string $id The member id
* @return array The member fields from the API request
*/
public function get_member($id) {
if (!function_exists('wlmapi_get_member')) return false;

$wlm_get_member = wlmapi_get_member($id);

if ($wlm_get_member['success'] == 0) return false;

return $wlm_get_member['member'][0]['UserInfo'];
}

}

$convertkit_wishlist_integration = new ConvertKitWishlistIntegration;
}
6 changes: 5 additions & 1 deletion readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Donate link: https://convertkit.com
Tags: email, marketing, embed form, convertkit, capture
Requires at least: 3.6
Tested up to: 4.5.3
Stable tag: 1.4.1
Stable tag: 1.4.2
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

Expand Down Expand Up @@ -44,6 +44,10 @@ Yes, for it to work you must first have an account on ConvertKit.com

== Changelog ==

### 1.4.2

* Fixed issue with WishlistMember integration where members were not being subscribed.

### 1.4.1

* Add upgrade routine to change ID to form_id for API version 3.0
Expand Down
4 changes: 2 additions & 2 deletions wp-convertkit.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Plugin Name: WP ConvertKit
Plugin URI: http://convertkit.com/
Description: Quickly and easily integrate ConvertKit forms into your site.
Version: 1.4.1
Version: 1.4.2
Author: ConvertKit
Author URI: http://convertkit.com/
*/
Expand All @@ -17,7 +17,7 @@
*/
class WP_ConvertKit {

const VERSION = '1.4.1';
const VERSION = '1.4.2';

const POST_META_KEY = '_wp_convertkit_post_meta';

Expand Down

0 comments on commit e4f1915

Please sign in to comment.