Version Description
Download this release
Release Info
Developer | leadin |
Plugin | HubSpot – Free Marketing Plugin for WordPress |
Version | 5.2.1 |
Comparing to | |
See all releases |
Code changes from version 5.2.0 to 5.2.1
- admin/leadin-admin.php +250 -0
- assets/banner-1544x500.png +0 -0
- assets/banner-772x250.png +0 -0
- assets/icon-128x128.png +0 -0
- assets/icon-256x256.png +0 -0
- images/leadin-icon-16x16-white.png +0 -0
- inc/class-leadin-pointers.php +127 -0
- inc/class-leadin.php +134 -0
- inc/leadin-constants.php +15 -0
- inc/leadin-disconnect.php +26 -0
- inc/leadin-functions.php +121 -0
- inc/leadin-registration.php +47 -0
- leadin.php +204 -0
- package.json +28 -0
- readme.txt +703 -0
- screenshot-1.png +0 -0
- screenshot-2.png +0 -0
- screenshot-3.png +0 -0
- screenshot-4.png +0 -0
- screenshot-5.png +0 -0
admin/leadin-admin.php
ADDED
@@ -0,0 +1,250 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('LEADIN_PLUGIN_VERSION')) {
|
4 |
+
header('HTTP/1.0 403 Forbidden');
|
5 |
+
die;
|
6 |
+
}
|
7 |
+
|
8 |
+
//=============================================
|
9 |
+
// Define Constants
|
10 |
+
//=============================================
|
11 |
+
|
12 |
+
if (!defined('LEADIN_ADMIN_PATH'))
|
13 |
+
define('LEADIN_ADMIN_PATH', untrailingslashit(__FILE__));
|
14 |
+
|
15 |
+
//=============================================
|
16 |
+
// Include Needed Files
|
17 |
+
//=============================================
|
18 |
+
|
19 |
+
include_once(ABSPATH . 'wp-admin/includes/plugin.php');
|
20 |
+
|
21 |
+
if (!class_exists('LI_Pointers'))
|
22 |
+
require_once LEADIN_PLUGIN_DIR . '/inc/class-leadin-pointers.php';
|
23 |
+
|
24 |
+
//=============================================
|
25 |
+
// WPLeadInAdmin Class
|
26 |
+
//=============================================
|
27 |
+
class WPLeadInAdmin
|
28 |
+
{
|
29 |
+
|
30 |
+
var $li_viewers;
|
31 |
+
var $stats_dashboard;
|
32 |
+
var $action;
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Class constructor
|
36 |
+
*/
|
37 |
+
function __construct()
|
38 |
+
{
|
39 |
+
//=============================================
|
40 |
+
// Hooks & Filters
|
41 |
+
//=============================================
|
42 |
+
|
43 |
+
$plugin_version = get_option('leadin_pluginVersion');
|
44 |
+
|
45 |
+
$this->action = $this->leadin_current_action();
|
46 |
+
|
47 |
+
// If the plugin version matches the latest version escape the update function
|
48 |
+
if ($plugin_version != LEADIN_PLUGIN_VERSION)
|
49 |
+
self::leadin_update_check();
|
50 |
+
|
51 |
+
add_action('admin_menu', array(&$this, 'leadin_add_menu_items'));
|
52 |
+
add_action('admin_print_scripts', array(&$this, 'add_leadin_admin_scripts'));
|
53 |
+
add_filter('plugin_action_links_' . 'leadin/leadin.php', array($this, 'leadin_plugin_settings_link'));
|
54 |
+
|
55 |
+
}
|
56 |
+
|
57 |
+
function leadin_update_check()
|
58 |
+
{
|
59 |
+
update_option('leadin_pluginVersion', LEADIN_PLUGIN_VERSION);
|
60 |
+
}
|
61 |
+
|
62 |
+
//=============================================
|
63 |
+
// Menus
|
64 |
+
//=============================================
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Adds Leadin menu to /wp-admin sidebar
|
68 |
+
*/
|
69 |
+
function leadin_add_menu_items()
|
70 |
+
{
|
71 |
+
$options = get_option('leadin_options');
|
72 |
+
|
73 |
+
global $submenu;
|
74 |
+
global $wp_version;
|
75 |
+
|
76 |
+
// Block non-sanctioned users from accessing Leadin
|
77 |
+
$capability = 'activate_plugins';
|
78 |
+
if (!current_user_can('activate_plugins')) {
|
79 |
+
if (!array_key_exists('li_grant_access_to_' . leadin_get_user_role(), $options))
|
80 |
+
return FALSE;
|
81 |
+
else {
|
82 |
+
if (current_user_can('manage_network')) // super admin
|
83 |
+
$capability = 'manage_network';
|
84 |
+
else if (current_user_can('edit_pages')) // editor
|
85 |
+
$capability = 'edit_pages';
|
86 |
+
else if (current_user_can('publish_posts')) // author
|
87 |
+
$capability = 'publish_posts';
|
88 |
+
else if (current_user_can('edit_posts')) // contributor
|
89 |
+
$capability = 'edit_posts';
|
90 |
+
else if (current_user_can('read')) // subscriber
|
91 |
+
$capability = 'read';
|
92 |
+
|
93 |
+
}
|
94 |
+
}
|
95 |
+
|
96 |
+
$leadin_icon = LEADIN_PATH . '/images/leadin-icon-16x16-white.png';
|
97 |
+
|
98 |
+
add_menu_page('Leadin', 'Leadin', $capability, 'leadin', array($this, 'leadin_build_app'), $leadin_icon, '25.100713');
|
99 |
+
|
100 |
+
$slumberMode = get_option('leadin_slumber_mode');
|
101 |
+
|
102 |
+
if (!$slumberMode) {
|
103 |
+
add_submenu_page('leadin', 'Contacts', 'Contacts', 'activate_plugins', 'leadin_contacts', array($this, 'leadin_build_app'));
|
104 |
+
add_submenu_page('leadin', 'Lead Flows', 'Lead Flows', 'activate_plugins', 'leadin_flows', array($this, 'leadin_build_app'));
|
105 |
+
add_submenu_page('leadin', 'Settings', 'Settings', 'activate_plugins', 'leadin_settings', array($this, 'leadin_build_app'));
|
106 |
+
|
107 |
+
$submenu['leadin'][0][0] = 'Dashboard';
|
108 |
+
}
|
109 |
+
|
110 |
+
if (!isset($_GET['page']) || $_GET['page'] != ('leadin' || 'leadin_settings' || 'leadin_contacts' || 'leadin_flows')) {
|
111 |
+
if (!get_option('leadin_portalId'))
|
112 |
+
$li_pointers = new LI_Pointers(TRUE);
|
113 |
+
//else if ( ! get_option('leadin_portalId') && $options )
|
114 |
+
//$li_pointers = new LI_Pointers(FALSE);
|
115 |
+
}
|
116 |
+
}
|
117 |
+
|
118 |
+
//=============================================
|
119 |
+
// Settings Page
|
120 |
+
//=============================================
|
121 |
+
|
122 |
+
/**
|
123 |
+
* Adds setting link for Leadin to plugins management page
|
124 |
+
*
|
125 |
+
* @param array $links
|
126 |
+
* @return array
|
127 |
+
*/
|
128 |
+
function leadin_plugin_settings_link($links)
|
129 |
+
{
|
130 |
+
$fullyRegistered = get_option('leadin_hapikey');
|
131 |
+
if ($fullyRegistered) {
|
132 |
+
$url = get_admin_url(get_current_blog_id(), 'admin.php?page=leadin_settings');
|
133 |
+
} else {
|
134 |
+
$url = get_admin_url(get_current_blog_id(), 'admin.php?page=leadin');
|
135 |
+
}
|
136 |
+
|
137 |
+
$settings_link = '<a href="' . $url . '">Settings</a>';
|
138 |
+
array_unshift($links, $settings_link);
|
139 |
+
return $links;
|
140 |
+
}
|
141 |
+
|
142 |
+
/**
|
143 |
+
* Creates leadin app
|
144 |
+
*/
|
145 |
+
|
146 |
+
function leadin_build_app()
|
147 |
+
{
|
148 |
+
global $wp_version;
|
149 |
+
|
150 |
+
echo '<div id="leadin" class="wrap ' . ($wp_version < 3.8 && !is_plugin_active('mp6/mp6.php') ? 'pre-mp6' : '') . '"></div>';
|
151 |
+
|
152 |
+
wp_enqueue_style('leadin-css');
|
153 |
+
wp_enqueue_script('leadin-app');
|
154 |
+
|
155 |
+
}
|
156 |
+
|
157 |
+
function update_option_leadin_options_callback($old_value, $new_value)
|
158 |
+
{
|
159 |
+
}
|
160 |
+
|
161 |
+
//=============================================
|
162 |
+
// Admin Styles & Scripts
|
163 |
+
//=============================================
|
164 |
+
|
165 |
+
/**
|
166 |
+
* Adds admin javascript
|
167 |
+
*/
|
168 |
+
function add_leadin_admin_scripts()
|
169 |
+
{
|
170 |
+
global $pagenow;
|
171 |
+
global $wp_roles;
|
172 |
+
global $wp_version;
|
173 |
+
|
174 |
+
$ajaxUrl = get_admin_url(get_current_blog_id(), 'admin-ajax.php');
|
175 |
+
|
176 |
+
$leadin_config = array(
|
177 |
+
'portalId' => get_option('leadin_portalId'),
|
178 |
+
'hapikey' => get_option('leadin_hapikey'),
|
179 |
+
'slumberMode' => get_option('leadin_slumber_mode'),
|
180 |
+
'env' => constant('LEADIN_ENV'),
|
181 |
+
'user' => $this->leadin_get_user_for_tracking(),
|
182 |
+
'allRoles' => $wp_roles->get_names(),
|
183 |
+
'leadinPluginVersion' => constant('LEADIN_PLUGIN_VERSION'),
|
184 |
+
'wpVersion' => $wp_version,
|
185 |
+
'siteUrl' => get_site_url(),
|
186 |
+
'adminEmail' => get_option('admin_email'),
|
187 |
+
'siteName' => get_bloginfo('name'),
|
188 |
+
'adminBaseUrl' => get_admin_url(get_current_blog_id(), 'admin.php'),
|
189 |
+
'leadinPluginDirectory' => LEADIN_PLUGIN_SLUG,
|
190 |
+
'ajaxUrl' => is_ssl() ? str_replace('http:', 'https:', $ajaxUrl) : str_replace('https:', 'http:', $ajaxUrl),
|
191 |
+
'locale' => get_locale(),
|
192 |
+
'timezone' => get_option('gmt_offset'),
|
193 |
+
'timezoneString' => get_option('timezone_string') // If not set by the user manually it will be an empty string
|
194 |
+
);
|
195 |
+
|
196 |
+
if (($pagenow == 'admin.php' && isset($_GET['page']) && strstr($_GET['page'], 'leadin'))) {
|
197 |
+
wp_register_script('leadin-head-js', leadin_get_resource_url('/bundle/head/head.js'), FALSE, FALSE, FALSE);
|
198 |
+
wp_localize_script('leadin-head-js', 'leadin_config', $leadin_config);
|
199 |
+
wp_enqueue_script('leadin-head-js');
|
200 |
+
|
201 |
+
wp_register_script('leadin-app', leadin_get_resource_url('/bundle/app.js'), array('backbone'), FALSE, TRUE);
|
202 |
+
wp_register_style('leadin-css', leadin_get_resource_url('/bundle/app.css'));
|
203 |
+
}
|
204 |
+
}
|
205 |
+
|
206 |
+
//=============================================
|
207 |
+
// Internal Class Functions
|
208 |
+
//=============================================
|
209 |
+
|
210 |
+
function leadin_get_user_for_tracking()
|
211 |
+
{
|
212 |
+
$leadin_user = leadin_get_current_user();
|
213 |
+
$tracking_leadin_user = array(
|
214 |
+
'hashed_wp_url' => $leadin_user['user_id'],
|
215 |
+
'name' => $leadin_user['alias'],
|
216 |
+
'email' => $leadin_user['email'],
|
217 |
+
'wp-url' => $leadin_user['wp_url'],
|
218 |
+
'wp-version' => $leadin_user['wp_version'],
|
219 |
+
'li-source' => LEADIN_SOURCE,
|
220 |
+
'website' => $leadin_user['wp_url'],
|
221 |
+
'company' => $leadin_user['wp_url'],
|
222 |
+
'utm_source' => $leadin_user['utm_source'],
|
223 |
+
'utm_medium' => $leadin_user['utm_medium'],
|
224 |
+
'utm_term' => $leadin_user['utm_term'],
|
225 |
+
'utm_content' => $leadin_user['utm_term'],
|
226 |
+
'utm_campaign' => $leadin_user['utm_campaign'],
|
227 |
+
'referral_source' => $leadin_user['referral_source'],
|
228 |
+
'user_email' => $leadin_user['user_email']
|
229 |
+
);
|
230 |
+
return $tracking_leadin_user;
|
231 |
+
}
|
232 |
+
|
233 |
+
/**
|
234 |
+
* GET and set url actions into readable strings
|
235 |
+
* @return string if actions are set, bool if no actions set
|
236 |
+
*/
|
237 |
+
function leadin_current_action()
|
238 |
+
{
|
239 |
+
if (isset($_REQUEST['action']) && -1 != $_REQUEST['action'])
|
240 |
+
return $_REQUEST['action'];
|
241 |
+
|
242 |
+
if (isset($_REQUEST['action2']) && -1 != $_REQUEST['action2'])
|
243 |
+
return $_REQUEST['action2'];
|
244 |
+
|
245 |
+
return FALSE;
|
246 |
+
}
|
247 |
+
|
248 |
+
}
|
249 |
+
|
250 |
+
?>
|
assets/banner-1544x500.png
DELETED
Binary file
|
assets/banner-772x250.png
DELETED
Binary file
|
assets/icon-128x128.png
DELETED
Binary file
|
assets/icon-256x256.png
DELETED
Binary file
|
images/leadin-icon-16x16-white.png
ADDED
Binary file
|
inc/class-leadin-pointers.php
ADDED
@@ -0,0 +1,127 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('LEADIN_PLUGIN_VERSION')) {
|
4 |
+
header('HTTP/1.0 403 Forbidden');
|
5 |
+
die;
|
6 |
+
}
|
7 |
+
|
8 |
+
/**
|
9 |
+
* This class handles the pointers used in the introduction tour.
|
10 |
+
*
|
11 |
+
* @todo Add an introdutory pointer on the edit post page too.
|
12 |
+
*/
|
13 |
+
class LI_Pointers
|
14 |
+
{
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Class constructor.
|
18 |
+
*/
|
19 |
+
function __construct($new_install = FALSE)
|
20 |
+
{
|
21 |
+
//=============================================
|
22 |
+
// Hooks & Filters
|
23 |
+
//=============================================
|
24 |
+
|
25 |
+
if ($new_install) {
|
26 |
+
add_action('admin_enqueue_scripts', array($this, 'enqueue_new_install_pointer'));
|
27 |
+
}
|
28 |
+
}
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Enqueue styles and scripts needed for the pointers.
|
32 |
+
*/
|
33 |
+
function enqueue_new_install_pointer()
|
34 |
+
{
|
35 |
+
if (!current_user_can('manage_options'))
|
36 |
+
return;
|
37 |
+
|
38 |
+
wp_enqueue_style('wp-pointer');
|
39 |
+
wp_enqueue_script('jquery-ui');
|
40 |
+
wp_enqueue_script('wp-pointer');
|
41 |
+
wp_enqueue_script('utils');
|
42 |
+
|
43 |
+
add_action('admin_print_footer_scripts', array($this, 'li_settings_popup_new'));
|
44 |
+
}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Loads in the required scripts for the pointer
|
48 |
+
*/
|
49 |
+
function enqueue_pointer_scripts()
|
50 |
+
{
|
51 |
+
wp_enqueue_style('wp-pointer');
|
52 |
+
wp_enqueue_script('jquery-ui');
|
53 |
+
wp_enqueue_script('wp-pointer');
|
54 |
+
wp_enqueue_script('utils');
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Shows a popup that asks for permission to allow tracking.
|
59 |
+
*/
|
60 |
+
function li_settings_popup_new()
|
61 |
+
{
|
62 |
+
$id = '#toplevel_page_leadin';
|
63 |
+
|
64 |
+
$content = '<h3>' . __('So close...', 'leadin') . '</h3>';
|
65 |
+
$content .= '<p>' . __('Leadin needs just a bit more info to get up and running. Click on \'Complete Setup\' to complete the setup.', 'leadin') . '</p>';
|
66 |
+
|
67 |
+
$opt_arr = array(
|
68 |
+
'content' => $content,
|
69 |
+
'position' => array('edge' => 'left', 'align' => 'center')
|
70 |
+
);
|
71 |
+
|
72 |
+
$function2 = 'li_redirect_to_leadin()';
|
73 |
+
|
74 |
+
$this->print_scripts($id, $opt_arr, 'Complete Setup', FALSE, '', $function2);
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* Prints the pointer script
|
79 |
+
*
|
80 |
+
* @param string $selector The CSS selector the pointer is attached to.
|
81 |
+
* @param array $options The options for the pointer.
|
82 |
+
* @param string $button1 Text for button 1
|
83 |
+
* @param string|bool $button2 Text for button 2 (or false to not show it, defaults to false)
|
84 |
+
* @param string $button2_function The JavaScript function to attach to button 2
|
85 |
+
* @param string $button1_function The JavaScript function to attach to button 1
|
86 |
+
*/
|
87 |
+
function print_scripts($selector, $options, $button1, $button2 = FALSE, $button2_function = '', $button1_function = '')
|
88 |
+
{
|
89 |
+
?>
|
90 |
+
<script type="text/javascript">
|
91 |
+
//<![CDATA[
|
92 |
+
(function ($) {
|
93 |
+
|
94 |
+
var li_pointer_options = <?php echo json_encode( $options ); ?>, setup;
|
95 |
+
|
96 |
+
function li_redirect_to_leadin() {
|
97 |
+
window.location.href = "<?php echo get_bloginfo('wpurl'); ?>/wp-admin/admin.php?page=leadin";
|
98 |
+
}
|
99 |
+
|
100 |
+
li_pointer_options = $.extend(li_pointer_options, {
|
101 |
+
buttons: function (event, t) {
|
102 |
+
button = jQuery('<a id="pointer-close" style="margin-left:5px" class="button-secondary">' + '<?php echo $button1; ?>' + '</a>');
|
103 |
+
button.bind('click.pointer', function () {
|
104 |
+
window.location.href = "<?php echo get_bloginfo('wpurl'); ?>/wp-admin/admin.php?page=leadin";
|
105 |
+
//t.element.pointer('close');
|
106 |
+
});
|
107 |
+
return button;
|
108 |
+
},
|
109 |
+
close: function () {
|
110 |
+
}
|
111 |
+
});
|
112 |
+
|
113 |
+
setup = function () {
|
114 |
+
$('<?php echo $selector; ?>').pointer(li_pointer_options).pointer('open');
|
115 |
+
};
|
116 |
+
|
117 |
+
if (li_pointer_options.position && li_pointer_options.position.defer_loading)
|
118 |
+
$(window).bind('load.wp-pointers', setup);
|
119 |
+
else
|
120 |
+
$(document).ready(setup);
|
121 |
+
})(jQuery);
|
122 |
+
//]]>
|
123 |
+
|
124 |
+
</script>
|
125 |
+
<?php
|
126 |
+
}
|
127 |
+
}
|
inc/class-leadin.php
ADDED
@@ -0,0 +1,134 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
//=============================================
|
4 |
+
// WPLeadIn Class
|
5 |
+
//=============================================
|
6 |
+
class WPLeadIn
|
7 |
+
{
|
8 |
+
/**
|
9 |
+
* Class constructor
|
10 |
+
*/
|
11 |
+
function __construct()
|
12 |
+
{
|
13 |
+
global $pagenow;
|
14 |
+
|
15 |
+
if (is_user_logged_in()) {
|
16 |
+
add_action('admin_bar_menu', array($this, 'add_leadin_link_to_admin_bar'), 999);
|
17 |
+
}
|
18 |
+
|
19 |
+
if (is_admin()) {
|
20 |
+
if (!defined('DOING_AJAX') || !DOING_AJAX)
|
21 |
+
$li_wp_admin = new WPLeadInAdmin();
|
22 |
+
} else {
|
23 |
+
// Adds the leadin-tracking script to wp-login.php page which doesnt hook into the enqueue logic
|
24 |
+
if ($this->leadin_is_login_or_register_page())
|
25 |
+
add_action('login_enqueue_scripts', array($this, 'add_leadin_frontend_scripts'));
|
26 |
+
else
|
27 |
+
add_action('wp_enqueue_scripts', array($this, 'add_leadin_frontend_scripts'));
|
28 |
+
}
|
29 |
+
}
|
30 |
+
|
31 |
+
//=============================================
|
32 |
+
// Scripts & Styles
|
33 |
+
//=============================================
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Adds front end javascript + initializes ajax object
|
37 |
+
*/
|
38 |
+
|
39 |
+
function add_leadin_frontend_scripts()
|
40 |
+
{
|
41 |
+
|
42 |
+
add_filter('script_loader_tag', array($this, 'leadin_add_embed_script_attributes'), 10, 2);
|
43 |
+
|
44 |
+
$embedDomain = constant('LEADIN_EMBED_DOMAIN');
|
45 |
+
$portalId = get_option('leadin_portalId');
|
46 |
+
$slumberMode = get_option('leadin_slumber_mode');
|
47 |
+
|
48 |
+
if (empty($portalId)) {
|
49 |
+
echo '<!-- Leadin embed JS disabled as a portalId has not yet been configured -->';
|
50 |
+
return;
|
51 |
+
}
|
52 |
+
|
53 |
+
$embedUrl = '//' . $embedDomain . '/js/v1/' . $portalId . '.js';
|
54 |
+
$embedId = 'leadin-embed-js';
|
55 |
+
|
56 |
+
if ($slumberMode && $portalId > 2463013) {
|
57 |
+
// Send new slumber-mode accounts to the new script loader service
|
58 |
+
$embedDomain = constant('LEADIN_SCRIPT_LOADER_DOMAIN');
|
59 |
+
$embedUrl = '//' . $embedDomain . '/' . $portalId . '.js';
|
60 |
+
$embedId = 'leadin-scriptloader-js';
|
61 |
+
}
|
62 |
+
|
63 |
+
|
64 |
+
if (is_single())
|
65 |
+
$page_type = 'post';
|
66 |
+
else if (is_front_page())
|
67 |
+
$page_type = 'home';
|
68 |
+
else if (is_archive())
|
69 |
+
$page_type = 'archive';
|
70 |
+
else if ($this->leadin_is_login_or_register_page())
|
71 |
+
$page_type = 'login';
|
72 |
+
else if (is_page())
|
73 |
+
$page_type = 'page';
|
74 |
+
else
|
75 |
+
$page_type = 'other';
|
76 |
+
|
77 |
+
$leadin_wordpress_info = array(
|
78 |
+
'userRole' => (is_user_logged_in()) ? leadin_get_user_role() : 'visitor',
|
79 |
+
'pageType' => $page_type,
|
80 |
+
'leadinPluginVersion' => LEADIN_PLUGIN_VERSION
|
81 |
+
);
|
82 |
+
|
83 |
+
wp_register_script($embedId, $embedUrl, array('jquery'), FALSE, TRUE);
|
84 |
+
wp_localize_script($embedId, 'leadin_wordpress', $leadin_wordpress_info);
|
85 |
+
wp_enqueue_script($embedId);
|
86 |
+
}
|
87 |
+
|
88 |
+
function leadin_add_embed_script_attributes($tag, $handle)
|
89 |
+
{
|
90 |
+
if ($handle == 'leadin-embed-js')
|
91 |
+
return str_replace(' src', ' async defer crossorigin="use-credentials" src', $tag);
|
92 |
+
else if ($handle == 'leadin-scriptloader-js')
|
93 |
+
return str_replace(' src', ' async defer src', $tag);
|
94 |
+
else
|
95 |
+
return $tag;
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Adds Leadin link to top-level admin bar
|
100 |
+
*/
|
101 |
+
function add_leadin_link_to_admin_bar($wp_admin_bar)
|
102 |
+
{
|
103 |
+
global $wp_version;
|
104 |
+
|
105 |
+
if (!current_user_can('activate_plugins')) {
|
106 |
+
if (!array_key_exists('li_grant_access_to_' . leadin_get_user_role(), get_option('leadin_options')))
|
107 |
+
return FALSE;
|
108 |
+
}
|
109 |
+
|
110 |
+
|
111 |
+
$leadin_icon = '<img src="' . LEADIN_PATH . '/images/leadin-icon-16x16-white.png' . '">';
|
112 |
+
|
113 |
+
$args = array(
|
114 |
+
'id' => 'leadin-admin-menu',
|
115 |
+
'title' => '<span class="ab-icon" ' . ($wp_version < 3.8 && !is_plugin_active('mp6/mp6.php') ? ' style="margin-top: 3px;"' : '') . '>' . $leadin_icon . '</span><span class="ab-label">Leadin</span>', // alter the title of existing node
|
116 |
+
'parent' => FALSE, // set parent to false to make it a top level (parent) node
|
117 |
+
'href' => get_bloginfo('wpurl') . '/wp-admin/admin.php?page=leadin',
|
118 |
+
'meta' => array('title' => 'Leadin')
|
119 |
+
);
|
120 |
+
|
121 |
+
$wp_admin_bar->add_node($args);
|
122 |
+
}
|
123 |
+
|
124 |
+
public static function leadin_is_login_or_register_page()
|
125 |
+
{
|
126 |
+
return in_array($GLOBALS['pagenow'], array('wp-login.php', 'wp-register.php'));
|
127 |
+
}
|
128 |
+
}
|
129 |
+
|
130 |
+
//=============================================
|
131 |
+
// Leadin Init
|
132 |
+
//=============================================
|
133 |
+
|
134 |
+
global $li_wp_admin;
|
inc/leadin-constants.php
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('LEADIN_UTM_SOURCE'))
|
4 |
+
define('LEADIN_UTM_SOURCE', 'leadin%20repo%20plugin');
|
5 |
+
|
6 |
+
if (!defined('LEADIN_UTM_MEDIUM'))
|
7 |
+
define('LEADIN_UTM_MEDIUM', 'referral');
|
8 |
+
|
9 |
+
if (!defined('LEADIN_UTM_CONTENT'))
|
10 |
+
define('LEADIN_UTM_CONTENT', 'e10');
|
11 |
+
|
12 |
+
if (!defined('LEADIN_UTM_CAMPAIGN'))
|
13 |
+
define('LEADIN_UTM_CAMPAIGN', 'one%20click%20updater');
|
14 |
+
|
15 |
+
?>
|
inc/leadin-disconnect.php
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if (!defined('LEADIN_PLUGIN_VERSION')) {
|
3 |
+
header('HTTP/1.0 403 Forbidden');
|
4 |
+
wp_die();
|
5 |
+
}
|
6 |
+
|
7 |
+
if (is_admin()) {
|
8 |
+
add_action('wp_ajax_leadin_disconnect_ajax', 'leadin_disconnect_ajax'); // Call when user in slumber mode would like to disconnect their account
|
9 |
+
}
|
10 |
+
|
11 |
+
function leadin_disconnect_ajax()
|
12 |
+
{
|
13 |
+
if (get_option('leadin_slumber_mode')) {
|
14 |
+
delete_option('leadin_portalId');
|
15 |
+
delete_option('leadin_slumber_mode');
|
16 |
+
|
17 |
+
wp_die('{"message": "Success!"}');
|
18 |
+
} else {
|
19 |
+
error_log("Disconnect error");
|
20 |
+
header('HTTP/1.0 400 Bad Request');
|
21 |
+
wp_die('{"error": "Leadin must be in slumber mode to disconnect"}');
|
22 |
+
}
|
23 |
+
|
24 |
+
}
|
25 |
+
|
26 |
+
?>
|
inc/leadin-functions.php
ADDED
@@ -0,0 +1,121 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if (!defined('LEADIN_PLUGIN_VERSION')) {
|
4 |
+
header('HTTP/1.0 403 Forbidden');
|
5 |
+
die;
|
6 |
+
}
|
7 |
+
|
8 |
+
if (!defined('LEADIN_PORTAL_ID')) {
|
9 |
+
DEFINE('LEADIN_PORTAL_ID', intval(get_option('leadin_portalId')));
|
10 |
+
}
|
11 |
+
|
12 |
+
if (!defined('LEADIN_HAPIKEY')) {
|
13 |
+
DEFINE('LEADIN_HAPIKEY', get_option('leadin_hapikey'));
|
14 |
+
}
|
15 |
+
|
16 |
+
|
17 |
+
function leadin_get_resource_url($path)
|
18 |
+
{
|
19 |
+
$resource_root = constant('LEADIN_ADMIN_ASSETS_BASE_URL');
|
20 |
+
|
21 |
+
return $resource_root . $path;
|
22 |
+
}
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Get Leadin user
|
26 |
+
*
|
27 |
+
* @return array
|
28 |
+
*/
|
29 |
+
function leadin_get_current_user()
|
30 |
+
{
|
31 |
+
global $wp_version;
|
32 |
+
|
33 |
+
$current_user = wp_get_current_user();
|
34 |
+
$li_user_id = md5(get_bloginfo('wpurl'));
|
35 |
+
|
36 |
+
$li_options = get_option('leadin_options');
|
37 |
+
$leadinPortalId = get_option('leadin_portalId');
|
38 |
+
|
39 |
+
if (isset($li_options['li_email'])) {
|
40 |
+
$li_user_email = $li_options['li_email'];
|
41 |
+
} else {
|
42 |
+
$li_user_email = $current_user->user_email;
|
43 |
+
}
|
44 |
+
|
45 |
+
$leadin_user = array(
|
46 |
+
'user_id' => $li_user_id,
|
47 |
+
'email' => $li_user_email,
|
48 |
+
'alias' => $current_user->display_name,
|
49 |
+
'wp_url' => get_bloginfo('wpurl'),
|
50 |
+
'li_version' => LEADIN_PLUGIN_VERSION,
|
51 |
+
'wp_version' => $wp_version,
|
52 |
+
'user_email' => $current_user->user_email
|
53 |
+
);
|
54 |
+
|
55 |
+
if (defined('LEADIN_REFERRAL_SOURCE'))
|
56 |
+
$leadin_user['referral_source'] = LEADIN_REFERRAL_SOURCE;
|
57 |
+
else
|
58 |
+
$leadin_user['referral_source'] = '';
|
59 |
+
|
60 |
+
if (defined('LEADIN_UTM_SOURCE'))
|
61 |
+
$leadin_user['utm_source'] = LEADIN_UTM_SOURCE;
|
62 |
+
else
|
63 |
+
$leadin_user['utm_source'] = '';
|
64 |
+
|
65 |
+
if (defined('LEADIN_UTM_MEDIUM'))
|
66 |
+
$leadin_user['utm_medium'] = LEADIN_UTM_MEDIUM;
|
67 |
+
else
|
68 |
+
$leadin_user['utm_medium'] = '';
|
69 |
+
|
70 |
+
if (defined('LEADIN_UTM_TERM'))
|
71 |
+
$leadin_user['utm_term'] = LEADIN_UTM_TERM;
|
72 |
+
else
|
73 |
+
$leadin_user['utm_term'] = '';
|
74 |
+
|
75 |
+
if (defined('LEADIN_UTM_CONTENT'))
|
76 |
+
$leadin_user['utm_content'] = LEADIN_UTM_CONTENT;
|
77 |
+
else
|
78 |
+
$leadin_user['utm_content'] = '';
|
79 |
+
|
80 |
+
if (defined('LEADIN_UTM_CAMPAIGN'))
|
81 |
+
$leadin_user['utm_campaign'] = LEADIN_UTM_CAMPAIGN;
|
82 |
+
else
|
83 |
+
$leadin_user['utm_campaign'] = '';
|
84 |
+
|
85 |
+
if (!empty($leadinPortalId)) {
|
86 |
+
$leadin_user['portal_id'] = $leadinPortalId;
|
87 |
+
}
|
88 |
+
|
89 |
+
return $leadin_user;
|
90 |
+
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
* Logs a debug statement to /wp-content/debug.log
|
94 |
+
*
|
95 |
+
* @param string
|
96 |
+
*/
|
97 |
+
function leadin_log_debug($message)
|
98 |
+
{
|
99 |
+
if (WP_DEBUG === TRUE) {
|
100 |
+
if (is_array($message) || is_object($message))
|
101 |
+
error_log(print_r($message, TRUE));
|
102 |
+
else
|
103 |
+
error_log($message);
|
104 |
+
}
|
105 |
+
}
|
106 |
+
|
107 |
+
/**
|
108 |
+
* Returns the user role for the current user
|
109 |
+
*
|
110 |
+
*/
|
111 |
+
function leadin_get_user_role()
|
112 |
+
{
|
113 |
+
global $current_user;
|
114 |
+
|
115 |
+
$user_roles = $current_user->roles;
|
116 |
+
$user_role = array_shift($user_roles);
|
117 |
+
|
118 |
+
return $user_role;
|
119 |
+
}
|
120 |
+
|
121 |
+
?>
|
inc/leadin-registration.php
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
if (!defined('LEADIN_PLUGIN_VERSION')) {
|
3 |
+
header('HTTP/1.0 403 Forbidden');
|
4 |
+
wp_die();
|
5 |
+
}
|
6 |
+
|
7 |
+
if (is_admin()) {
|
8 |
+
add_action('wp_ajax_leadin_registration_ajax', 'leadin_registration_ajax'); // Call when user logged in
|
9 |
+
}
|
10 |
+
|
11 |
+
function leadin_registration_ajax()
|
12 |
+
{
|
13 |
+
$existingPortalId = get_option('leadin_portalId');
|
14 |
+
$existingHapikey = get_option('leadin_hapikey');
|
15 |
+
|
16 |
+
if (!empty($existingPortalId) || !empty($existingHapikey)) {
|
17 |
+
header('HTTP/1.0 400 Bad Request');
|
18 |
+
wp_die('{"error": "Registration is already complete for this portal"}');
|
19 |
+
}
|
20 |
+
|
21 |
+
$data = json_decode(file_get_contents('php://input'), true);
|
22 |
+
|
23 |
+
$newPortalId = $data['portalId'];
|
24 |
+
$newHapiKey = $data['hapikey'];
|
25 |
+
$slumberMode = $data['slumberMode'];
|
26 |
+
|
27 |
+
error_log($data['hapikey']);
|
28 |
+
|
29 |
+
if (empty($newPortalId) OR (empty($newHapiKey) AND empty($slumberMode))) {
|
30 |
+
error_log("Registration error");
|
31 |
+
header('HTTP/1.0 400 Bad Request');
|
32 |
+
wp_die('{"error": "Registration missing required fields"}');
|
33 |
+
}
|
34 |
+
|
35 |
+
add_option('leadin_portalId', $newPortalId);
|
36 |
+
|
37 |
+
if (!empty($newHapiKey)) {
|
38 |
+
add_option('leadin_hapikey', $newHapiKey);
|
39 |
+
}
|
40 |
+
if (!empty($slumberMode)) {
|
41 |
+
add_option('leadin_slumber_mode', $slumberMode);
|
42 |
+
}
|
43 |
+
|
44 |
+
wp_die('{"message": "Success!"}');
|
45 |
+
}
|
46 |
+
|
47 |
+
?>
|
leadin.php
ADDED
@@ -0,0 +1,204 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Plugin Name: Leadin
|
4 |
+
Plugin URI: http://leadin.hubspot.com
|
5 |
+
Description: Leadin is an easy-to-use marketing automation and lead tracking plugin for WordPress that helps you better understand your web site visitors.
|
6 |
+
Version: 5.2.1
|
7 |
+
Author: Leadin
|
8 |
+
Author URI: http://leadin.hubspot.com
|
9 |
+
License: GPL2
|
10 |
+
*/
|
11 |
+
|
12 |
+
//=============================================
|
13 |
+
// Define Constants
|
14 |
+
//=============================================
|
15 |
+
|
16 |
+
if (!defined('LEADIN_PATH'))
|
17 |
+
define('LEADIN_PATH', untrailingslashit(plugins_url('', __FILE__)));
|
18 |
+
|
19 |
+
if (!defined('LEADIN_PLUGIN_DIR'))
|
20 |
+
define('LEADIN_PLUGIN_DIR', untrailingslashit(dirname(__FILE__)));
|
21 |
+
|
22 |
+
if (!defined('LEADIN_PLUGIN_SLUG'))
|
23 |
+
define('LEADIN_PLUGIN_SLUG', basename(dirname(__FILE__)));
|
24 |
+
|
25 |
+
if (file_exists(LEADIN_PLUGIN_DIR . '/inc/leadin-overrides.php'))
|
26 |
+
include_once(LEADIN_PLUGIN_DIR . '/inc/leadin-overrides.php');
|
27 |
+
|
28 |
+
if (!defined('LEADIN_DB_VERSION'))
|
29 |
+
define('LEADIN_DB_VERSION', '2.2.5');
|
30 |
+
|
31 |
+
if (!defined('LEADIN_PLUGIN_VERSION'))
|
32 |
+
define('LEADIN_PLUGIN_VERSION', '5.2.1');
|
33 |
+
|
34 |
+
if (!defined('LEADIN_SOURCE'))
|
35 |
+
define('LEADIN_SOURCE', 'leadin.com');
|
36 |
+
|
37 |
+
if (!defined('LEADIN_ADMIN_ASSETS_BASE_URL'))
|
38 |
+
define('LEADIN_ADMIN_ASSETS_BASE_URL', "https://app.hubspot.com/leadin_admin_static_live");
|
39 |
+
|
40 |
+
if (!defined('LEADIN_EMBED_DOMAIN'))
|
41 |
+
define('LEADIN_EMBED_DOMAIN', "js.leadin.com");
|
42 |
+
|
43 |
+
if (!defined('LEADIN_SCRIPT_LOADER_DOMAIN'))
|
44 |
+
define('LEADIN_SCRIPT_LOADER_DOMAIN', "js.hs-scripts.com");
|
45 |
+
|
46 |
+
if (!defined('LEADIN_ENV'))
|
47 |
+
define('LEADIN_ENV', "prod");
|
48 |
+
|
49 |
+
//=============================================
|
50 |
+
// Include Needed Files
|
51 |
+
//=============================================
|
52 |
+
|
53 |
+
if (file_exists(LEADIN_PLUGIN_DIR . '/inc/leadin-constants.php'))
|
54 |
+
include_once(LEADIN_PLUGIN_DIR . '/inc/leadin-constants.php');
|
55 |
+
|
56 |
+
require_once(LEADIN_PLUGIN_DIR . '/inc/leadin-functions.php');
|
57 |
+
require_once(LEADIN_PLUGIN_DIR . '/inc/leadin-registration.php');
|
58 |
+
require_once(LEADIN_PLUGIN_DIR . '/inc/leadin-disconnect.php');
|
59 |
+
require_once(LEADIN_PLUGIN_DIR . '/admin/leadin-admin.php');
|
60 |
+
|
61 |
+
require_once(LEADIN_PLUGIN_DIR . '/inc/class-leadin.php');
|
62 |
+
|
63 |
+
|
64 |
+
//=============================================
|
65 |
+
// Hooks & Filters
|
66 |
+
//=============================================
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Activate the plugin
|
70 |
+
*/
|
71 |
+
function activate_leadin($network_wide)
|
72 |
+
{
|
73 |
+
|
74 |
+
// Check activation on entire network or one blog
|
75 |
+
if (is_multisite() && $network_wide) {
|
76 |
+
global $wpdb;
|
77 |
+
|
78 |
+
// Get this so we can switch back to it later
|
79 |
+
$current_blog = $wpdb->blogid;
|
80 |
+
// For storing the list of activated blogs
|
81 |
+
$activated = array();
|
82 |
+
|
83 |
+
// Get all blogs in the network and activate plugin on each one
|
84 |
+
$q = "SELECT blog_id FROM $wpdb->blogs";
|
85 |
+
$blog_ids = $wpdb->get_col($q);
|
86 |
+
foreach ($blog_ids as $blog_id) {
|
87 |
+
switch_to_blog($blog_id);
|
88 |
+
add_leadin_defaults();
|
89 |
+
$activated[] = $blog_id;
|
90 |
+
}
|
91 |
+
|
92 |
+
// Switch back to the current blog
|
93 |
+
switch_to_blog($current_blog);
|
94 |
+
|
95 |
+
// Store the array for a later function
|
96 |
+
update_site_option('leadin_activated', $activated);
|
97 |
+
} else {
|
98 |
+
add_leadin_defaults();
|
99 |
+
}
|
100 |
+
}
|
101 |
+
|
102 |
+
/**
|
103 |
+
* Check Leadin installation and set options
|
104 |
+
*/
|
105 |
+
function add_leadin_defaults()
|
106 |
+
{
|
107 |
+
global $wpdb;
|
108 |
+
$options = get_option('leadin_options');
|
109 |
+
|
110 |
+
if (($options['li_installed'] != 1) || (!is_array($options))) {
|
111 |
+
$opt = array(
|
112 |
+
'li_installed' => 1,
|
113 |
+
'leadin_version' => LEADIN_PLUGIN_VERSION,
|
114 |
+
'li_email' => get_bloginfo('admin_email'),
|
115 |
+
'li_updates_subscription' => 1,
|
116 |
+
'onboarding_step' => 1,
|
117 |
+
'onboarding_complete' => 0,
|
118 |
+
'ignore_settings_popup' => 0,
|
119 |
+
'data_recovered' => 1,
|
120 |
+
'delete_flags_fixed' => 1,
|
121 |
+
'beta_tester' => 0,
|
122 |
+
'converted_to_tags' => 1,
|
123 |
+
'names_added_to_contacts' => 1
|
124 |
+
);
|
125 |
+
|
126 |
+
// Add the Pro flag if this is a pro installation
|
127 |
+
if ((defined('LEADIN_UTM_SOURCE') && LEADIN_UTM_SOURCE != 'leadin%20repo%20plugin') || !defined('LEADIN_UTM_SOURCE'))
|
128 |
+
$opt['pro'] = 1;
|
129 |
+
|
130 |
+
// this is a hack because multisite doesn't recognize local options using either update_option or update_site_option...
|
131 |
+
if (is_multisite()) {
|
132 |
+
$multisite_prefix = (is_multisite() ? $wpdb->prefix : '');
|
133 |
+
$q = $wpdb->prepare("
|
134 |
+
INSERT INTO " . $multisite_prefix . "options
|
135 |
+
( option_name, option_value )
|
136 |
+
VALUES ('leadin_options', %s)", serialize($opt));
|
137 |
+
$wpdb->query($q);
|
138 |
+
// TODO: Glob settings for multisite
|
139 |
+
} else
|
140 |
+
update_option('leadin_options', $opt);
|
141 |
+
|
142 |
+
}
|
143 |
+
|
144 |
+
setcookie("ignore_social_share", "1", 2592000, "/");
|
145 |
+
}
|
146 |
+
|
147 |
+
/**
|
148 |
+
* Deactivate Leadin plugin hook
|
149 |
+
*/
|
150 |
+
function deactivate_leadin($network_wide)
|
151 |
+
{
|
152 |
+
if (is_multisite() && $network_wide) {
|
153 |
+
global $wpdb;
|
154 |
+
|
155 |
+
// Get this so we can switch back to it later
|
156 |
+
$current_blog = $wpdb->blogid;
|
157 |
+
|
158 |
+
// Get all blogs in the network and activate plugin on each one
|
159 |
+
$q = "SELECT blog_id FROM $wpdb->blogs";
|
160 |
+
$blog_ids = $wpdb->get_col($q);
|
161 |
+
foreach ($blog_ids as $blog_id) {
|
162 |
+
switch_to_blog($blog_id);
|
163 |
+
}
|
164 |
+
|
165 |
+
// Switch back to the current blog
|
166 |
+
switch_to_blog($current_blog);
|
167 |
+
}
|
168 |
+
}
|
169 |
+
|
170 |
+
function activate_leadin_on_new_blog($blog_id, $user_id, $domain, $path, $site_id, $meta)
|
171 |
+
{
|
172 |
+
global $wpdb;
|
173 |
+
|
174 |
+
if (is_plugin_active_for_network('leadin/leadin.php')) {
|
175 |
+
$current_blog = $wpdb->blogid;
|
176 |
+
switch_to_blog($blog_id);
|
177 |
+
add_leadin_defaults();
|
178 |
+
switch_to_blog($current_blog);
|
179 |
+
}
|
180 |
+
}
|
181 |
+
|
182 |
+
/**
|
183 |
+
* Checks the stored database version against the current data version + updates if needed
|
184 |
+
*/
|
185 |
+
function leadin_init()
|
186 |
+
{
|
187 |
+
$leadin_wp = new WPLeadIn();
|
188 |
+
}
|
189 |
+
|
190 |
+
|
191 |
+
add_action('plugins_loaded', 'leadin_init', 14);
|
192 |
+
|
193 |
+
if (is_admin()) {
|
194 |
+
// Activate + install Leadin
|
195 |
+
register_activation_hook(__FILE__, 'activate_leadin');
|
196 |
+
|
197 |
+
// Deactivate Leadin
|
198 |
+
register_deactivation_hook(__FILE__, 'deactivate_leadin');
|
199 |
+
|
200 |
+
// Activate on newly created wpmu blog
|
201 |
+
add_action('wpmu_new_blog', 'activate_leadin_on_new_blog', 10, 6);
|
202 |
+
}
|
203 |
+
|
204 |
+
?>
|
package.json
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"name": "leadin",
|
3 |
+
"version": "1.0.0",
|
4 |
+
"devDependencies": {
|
5 |
+
"grunt": "^0.4.5",
|
6 |
+
"grunt-contrib-compass": "^1.0.1",
|
7 |
+
"grunt-contrib-clean": "^0.6.0",
|
8 |
+
"grunt-contrib-concat": "~0.4.0",
|
9 |
+
"grunt-contrib-uglify": "~0.4.0",
|
10 |
+
"grunt-contrib-watch": "~0.6.1"
|
11 |
+
},
|
12 |
+
"description": "=== LeadIn === Contributors: andygcook, nelsonjoyce Tags: lead tracking, visitor tracking, analytics, crm, marketing automation, inbound marketing, subscription, marketing, lead generation, mailchimp Requires at least: 3.7 Tested up to: 3.9.1 Stable tag: 1.0.0",
|
13 |
+
"main": "gruntfile.js",
|
14 |
+
"dependencies": {},
|
15 |
+
"scripts": {
|
16 |
+
"test": "echo \"Error: no test specified\" && exit 1"
|
17 |
+
},
|
18 |
+
"repository": {
|
19 |
+
"type": "git",
|
20 |
+
"url": "https://github.com/LeadIn/leadin.git"
|
21 |
+
},
|
22 |
+
"author": "",
|
23 |
+
"license": "ISC",
|
24 |
+
"bugs": {
|
25 |
+
"url": "https://github.com/LeadIn/leadin/issues"
|
26 |
+
},
|
27 |
+
"homepage": "https://github.com/LeadIn/leadin"
|
28 |
+
}
|
readme.txt
ADDED
@@ -0,0 +1,703 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== Contact Forms & Website Analytics by Leadin ===
|
2 |
+
Contributors: leadin, sredmond
|
3 |
+
Tags: crm, contacts, lead tracking, click tracking, visitor tracking, analytics, marketing automation, inbound marketing, subscription, marketing, lead generation, mailchimp, constant contact, newsletter, popup, popover, email list, email, contacts database, contact form, forms, form widget, popup form
|
4 |
+
Requires at least: 3.7
|
5 |
+
Tested up to: 4.5
|
6 |
+
Stable tag: 5.2.1
|
7 |
+
|
8 |
+
Leadin is an easy-to-use contact form and marketing analytics plugin for your website that helps you better understand your website visitors.
|
9 |
+
|
10 |
+
== Description ==
|
11 |
+
|
12 |
+
= Get to know your website visitors =
|
13 |
+
|
14 |
+
<a href="https://leadin.hubspot.com" alt="WordPress marketing automation and lead tracking plugin" target="_blank">Leadin</a> is an easy-to-use marketing automation and lead tracking plugin for WordPress that helps you better understand your web site visitors.
|
15 |
+
|
16 |
+
[youtube https://www.youtube.com/watch?v=tcMYv2r3ecg]
|
17 |
+
|
18 |
+
= Find out who's on your site and what they're doing =
|
19 |
+
When someone visits your site, you want to know more about them. What pages they've visited, when they return, and what social networks they’re on. Leadin gives you the details you need to make your next move.
|
20 |
+
|
21 |
+
= More context for your conversations =
|
22 |
+
Leadin automatically finds publicly available information about each of your contacts. Details such as location, work history, and company info can give you more context when you reach out.
|
23 |
+
|
24 |
+
= Convert more visitors to contacts =
|
25 |
+
Use the optional popup form to prevent people from slipping through the cracks. The popup also uses the contact data to intelligently know when to appear.
|
26 |
+
|
27 |
+
= Keep your contacts in sync with your email tool =
|
28 |
+
Leadin syncs your contacts to an email list of your choice without replacing any forms.
|
29 |
+
|
30 |
+
= Find out what content and traffic sources convert the best =
|
31 |
+
Our simple analytics show you what sources of traffic and content are driving the most contacts. No more complicated Google Analytics reports.
|
32 |
+
|
33 |
+
= How does it work? =
|
34 |
+
|
35 |
+
1. When you activate the WordPress plugin, Leadin will track each anonymous visitor to your site with a cookie.
|
36 |
+
2. Leadin automatically identifies and watches each existing form on your site for submissions.
|
37 |
+
3. Once someone fills out any other form on your site, Leadin will identify that person with their email address. and add them to your contact list.
|
38 |
+
4. You'll also receive an email with a link to the new contact record with all of their visit history. (check the screenshots sections to see it in action)
|
39 |
+
|
40 |
+
= Who's using Leadin? =
|
41 |
+
|
42 |
+
**<a href="http://www.extremeinbound.com/leadin-wordpress-crm-inbound-plugin/" target="_blank">Alan Perlman</a>**: *“I can use Leadin to get a sense of how engaged certain contacts are, and I can learn more about their behavior on my website to better drive the conversation and understand what they’re interested in or looking for.”*
|
43 |
+
|
44 |
+
**<a href="http://thewpvalet.com/wordpress-lead-tracking/" target="_blank">Adam W. Warner</a>**: *“…the Leadin plugin has been very useful so far in giving us an idea of the actual visitor paths to our contact forms vs. the paths we’ve intended.”*
|
45 |
+
|
46 |
+
|
47 |
+
Having trouble? Check out our <a href="https://leadin.hubspot.com/knowledge/">help documentation & support</a>
|
48 |
+
|
49 |
+
== Installation ==
|
50 |
+
|
51 |
+
1. Upload the 'leadin' folder to the '/wp-content/plugins/' directory
|
52 |
+
2. Activate the plugin through the 'Plugins' menu in WordPress
|
53 |
+
3. Add an email address under 'Leadin' in your settings panel
|
54 |
+
|
55 |
+
Having trouble? Check out our <a href="https://leadin.hubspot.com/knowledge/" target="_blank">help documentation & support</a>
|
56 |
+
|
57 |
+
== Frequently Asked Questions ==
|
58 |
+
= <a href="https://leadin.hubspot.com/knowledge/frequently-asked-questions" target="_blank">Full FAQ Here</a> =
|
59 |
+
|
60 |
+
== Screenshots ==
|
61 |
+
|
62 |
+
1. See the visit history of each contact.
|
63 |
+
2. Get an email notification for every new lead.
|
64 |
+
3. Leadin Dashboard shows you where your leads are coming from.
|
65 |
+
4. All your contacts stored safely in one place.
|
66 |
+
5. Collect more contacts with the pop-up subscribe widget.
|
67 |
+
|
68 |
+
== Changelog ==
|
69 |
+
|
70 |
+
- Current version: 5.2.1
|
71 |
+
- Current version release: 2016-08-04
|
72 |
+
|
73 |
+
= 5.2.1
|
74 |
+
- New "existing app" customers use the new unified script loader
|
75 |
+
|
76 |
+
= 5.1.1
|
77 |
+
- Rebranding "Flows" to "Lead Flows"
|
78 |
+
- Correcting the settings link in Plugins when Leadin is connected to an existing Leadin web app account
|
79 |
+
|
80 |
+
= 5.0.2
|
81 |
+
- Update deployment script
|
82 |
+
|
83 |
+
= 5.0.1
|
84 |
+
- The Leadin plugin can now be installed for an existing Leadin web app account
|
85 |
+
|
86 |
+
= 4.8.2 (2016.05.30) =
|
87 |
+
- Added 'Flows' to the WordPress navigation - all-in-one lead conversion widgets - http://leadin.hubspot.com/flows
|
88 |
+
|
89 |
+
= 4.7.1 (2016.04.14) =
|
90 |
+
- Stopped using get_currentuserinfo(), which was deprecated in WordPress 4.5 in favor of wp_get_current_user()
|
91 |
+
|
92 |
+
= 4.6.8 (2016.04.01) =
|
93 |
+
- Updated supported version of WordPress
|
94 |
+
|
95 |
+
= 4.6.6 (2016.03.23) =
|
96 |
+
- Changed URL where Leadin's JavaScript loads from. This should help with customers who were experiencing blank screens due to overzealous adblocking
|
97 |
+
- Updated readme
|
98 |
+
|
99 |
+
= 4.5.0 (2016.01.14) =
|
100 |
+
- Renamed "stats" to "dashboard" in the menu
|
101 |
+
- Fixed a bug where deactivating the plugin in multisite mode would cause a PHP error
|
102 |
+
- Removed old PHP that was used before Leadin was hosted in an iFrame, as it is now
|
103 |
+
- Updated screenshots
|
104 |
+
|
105 |
+
= 4.4.0 (2015.12.14) =
|
106 |
+
- Remove migration code
|
107 |
+
|
108 |
+
= 4.3.2 (2015.12.02) =
|
109 |
+
- Wordpress assets update
|
110 |
+
|
111 |
+
= 4.3.1 (2015.11.26) =
|
112 |
+
- Logo updates
|
113 |
+
|
114 |
+
= 4.3.0 (2015.09.30) =
|
115 |
+
- Load time improvements to the tracking script
|
116 |
+
|
117 |
+
= 4.2.3 (2015.08.20) =
|
118 |
+
- Support widget improvements
|
119 |
+
|
120 |
+
= 4.2.2 (2015.08.14) =
|
121 |
+
- Correctly set the version number in PHP
|
122 |
+
|
123 |
+
= 4.2.1 (2015.08.13) =
|
124 |
+
- Fix detection of front page for popup triggering
|
125 |
+
- Update screenshots
|
126 |
+
|
127 |
+
= 4.2.0 (2015.08.13) =
|
128 |
+
- Migration improvements
|
129 |
+
- Bug fix to stop showing the setup dialog when setup is in progress
|
130 |
+
- Preparatory work to send notification emails in the timezone WordPress is configured in
|
131 |
+
|
132 |
+
= 4.1.1 (2015.07.14) =
|
133 |
+
- Bug fix for upgraded installs from the plugin directory running through the migration process
|
134 |
+
|
135 |
+
= 4.1.0 (2015.07.10) =
|
136 |
+
- Migration script added to move data from MySQL to Leadin Cloud
|
137 |
+
|
138 |
+
= 4.0.2 (2015.07.09) =
|
139 |
+
|
140 |
+
- Bug fixes
|
141 |
+
|
142 |
+
- Current version: 4.0.1
|
143 |
+
- Current version release: 2015-06-24
|
144 |
+
|
145 |
+
= 4.0.1 (2015.06.24) =
|
146 |
+
|
147 |
+
- Bug fixes
|
148 |
+
- Added support for custom page types
|
149 |
+
- Stopped using SVG icons due to performance problems
|
150 |
+
- Fixed signup error in PHP < 5.4 on browsers that don't support CORS
|
151 |
+
|
152 |
+
= 4.0.0 (2015.05.20) =
|
153 |
+
|
154 |
+
- Leadin Cloud launched
|
155 |
+
|
156 |
+
= 3.1.8 (2015.05.15) =
|
157 |
+
|
158 |
+
- Added email connector sync to onboarding
|
159 |
+
- Sources now check the UTM tags on the first page view visit
|
160 |
+
- Privacy policy added to plugin
|
161 |
+
|
162 |
+
- Bug fixes
|
163 |
+
- Fixed dismiss button conflict on WordPress notifications
|
164 |
+
- Icon styles no longer conflict with other plugins
|
165 |
+
- Deleted contacts no longer show up in the dashboard
|
166 |
+
- Popup sync now looks at the actual inputs instead of the field names so it’ll work in other languages
|
167 |
+
- Popup labels now work in IE
|
168 |
+
- Fixed bug with SendGrid email delivery for Leadin Pro
|
169 |
+
|
170 |
+
= 3.1.7 (2015.04.15) =
|
171 |
+
= Enhancements =
|
172 |
+
- Added debug mode
|
173 |
+
- Default subscribe confirmation to off
|
174 |
+
|
175 |
+
- Bug fixes
|
176 |
+
- Fixed overly large Leadin icon in admin bar on front end for logged in users
|
177 |
+
|
178 |
+
= 3.1.6 (2015.03.31) =
|
179 |
+
= Enhancements =
|
180 |
+
- Show name on contact timeline instead of email address if available
|
181 |
+
- New contact timeline page styles
|
182 |
+
- Ability to change color in popup
|
183 |
+
- Popup now works on mobile
|
184 |
+
|
185 |
+
- Bug fixes
|
186 |
+
- Fixed dashicons not loading in < WP 3.7
|
187 |
+
- Completely fix all the default object warnings for the contact lookups
|
188 |
+
- Swap in non-svg logo if allow_url_fopen not toggled on in php.ini
|
189 |
+
- Fixed Pro email delivery bugs
|
190 |
+
|
191 |
+
= 3.1.5 (2015.03.20) =
|
192 |
+
- Bug fixes
|
193 |
+
- Changed out call to __DIR__ magic constant which wasn’t implemented until PHP 5.3 in favor of dirname(__FILE__)
|
194 |
+
|
195 |
+
= 3.1.4 (2015.03.17) =
|
196 |
+
= Enhancements =
|
197 |
+
- Intercom added to plugin for in-app support
|
198 |
+
- Onboarding improved for non-setup installs
|
199 |
+
- Contact notifications are now sent through email delivery service to improve deliverability
|
200 |
+
|
201 |
+
- Bug fixes
|
202 |
+
- Namespaced AWeber oauth libraries with LI_ prefix to avoid duplicate class warnings
|
203 |
+
- SVG icon permanently fixed for servers that don't natively support that file type
|
204 |
+
- Check if database options are set for subscribe preview button
|
205 |
+
- Added in check for default leadin_options in case they were deleted and recreate them if they are not there
|
206 |
+
- Add in checks for the contact lookups to account for default object warnings
|
207 |
+
-
|
208 |
+
|
209 |
+
= 3.1.3 (2015.02.19) =
|
210 |
+
= Enhancements =
|
211 |
+
- Don't show the "You should receive a confirmation email shortly" message in the popup thank you if the confirmation email setting is toggled off
|
212 |
+
|
213 |
+
- Bug fixes
|
214 |
+
- Fixed SVG icon
|
215 |
+
- Fixed the default object warnings in class-leadin-contact for the enrichment lookups
|
216 |
+
- Tested NinjaPopups and added to readme as unsupported form plugin
|
217 |
+
- "Namespace" AWeber with "LI_" prefix to avoid conflicts
|
218 |
+
|
219 |
+
= 3.1.2 (2015.01.26) =
|
220 |
+
= Enhancements =
|
221 |
+
- Tested JotForm + added compatibility to the ReadMe file
|
222 |
+
|
223 |
+
- Bug fixes
|
224 |
+
- Add in support for like_escape for < WordPress 4.0
|
225 |
+
- Add first + last names to bulk MailChimp connector
|
226 |
+
- Remove rogue WPDB prepare in tag list table
|
227 |
+
- Check for existence of ESP connector when pushing to an email list
|
228 |
+
- Bug fix for multisite installs with broken onboarding
|
229 |
+
|
230 |
+
= 3.1.1 (2014.01.20) =
|
231 |
+
= Enhancements =
|
232 |
+
- Added ability to toggle Leadin data access by user role
|
233 |
+
- Hide Leadin nav menu item for user roles without access to Leadin data
|
234 |
+
- Discontinued and disabled the beta program
|
235 |
+
|
236 |
+
- Bug fixes
|
237 |
+
- Fixed broken onboarding in WordPress Multisite after adding a new site to the network
|
238 |
+
- Contact totals in tag editor now link to tagged list
|
239 |
+
|
240 |
+
= 3.1.0 (2015.1.16) =
|
241 |
+
= Enhancements =
|
242 |
+
- GetResponse, Campaign Monitor and AWeber integrations launched
|
243 |
+
|
244 |
+
= 3.0.0 (2014.12.10) =
|
245 |
+
= Enhancements =
|
246 |
+
- Jumping to version 3.0.0 to indefinitely override repository version of Leadin
|
247 |
+
|
248 |
+
= Leadin 2.2.7 - 2.2.11 =
|
249 |
+
|
250 |
+
*Leadin was split into Leadin and <a href="http://leadin.com/pro-upgrade" target="_blank">Leadin Pro</a> after version 2.2.6 and later merged back together, so versions 2.2.7 - 2.2.11 and 3.0.0 - 3.1.3 share similar updates.*
|
251 |
+
|
252 |
+
= 2.2.11 (2015.02.18) =
|
253 |
+
|
254 |
+
= Enhancements =
|
255 |
+
- Don't show the "You should receive a confirmation email shortly" message in the popup thank you if the confirmation email setting is toggled off
|
256 |
+
|
257 |
+
- Bug fixes
|
258 |
+
- Fixed SVG icon
|
259 |
+
- Fixed the default object warnings in class-leadin-contact for the enrichment lookups
|
260 |
+
- Tested NinjaPopups and added to readme as unsupported form plugin
|
261 |
+
|
262 |
+
|
263 |
+
= 2.2.10 (2015.01.26) =
|
264 |
+
= Enhancements =
|
265 |
+
- Tested JotForm + added compatibility to the ReadMe file
|
266 |
+
|
267 |
+
- Bug fixes
|
268 |
+
- Add in support for like_escape for < WordPress 4.0
|
269 |
+
- Add first + last names to bulk MailChimp connector
|
270 |
+
- Remove rogue WPDB prepare in tag list table
|
271 |
+
- Check for existence of ESP connector when pushing to an email list
|
272 |
+
- Bug fix for multisite installs with broken onboarding
|
273 |
+
|
274 |
+
= 2.2.9 (2014.01.20) =
|
275 |
+
= Enhancements =
|
276 |
+
- Added ability to toggle Leadin data access by user role
|
277 |
+
- Hide Leadin nav menu item for user roles without access to Leadin data
|
278 |
+
- Discountinued and disabled the beta program
|
279 |
+
|
280 |
+
- Bug fixes
|
281 |
+
- Fixed broken onboarding in WordPress Multisite after adding a new site to the network
|
282 |
+
- Contact totals in tag editor now link to tagged list
|
283 |
+
|
284 |
+
= 2.2.8 (2014.12.15) =
|
285 |
+
= Enhancements =
|
286 |
+
- Added in CTAs for Leadin Pro
|
287 |
+
|
288 |
+
= 2.2.7 (2014.12.09) =
|
289 |
+
- Bug fixes
|
290 |
+
- Fixing upgrade process from 2.2.6
|
291 |
+
|
292 |
+
= 2.2.6 (2014.12.08) =
|
293 |
+
= Enhancements =
|
294 |
+
- Added names to contact export
|
295 |
+
- Added “tagged as” to contact notification email subject lines
|
296 |
+
|
297 |
+
- Bug fixes
|
298 |
+
- Fixed bug with non-tagged contacts being added to tagged lists
|
299 |
+
|
300 |
+
= 2.2.6 (2014.12.08) =
|
301 |
+
= Enhancements =
|
302 |
+
- Contact Lookup power-up
|
303 |
+
- Added names to contact exports
|
304 |
+
- Added “tagged as” to the email subject lines
|
305 |
+
|
306 |
+
- Bug fixes
|
307 |
+
- Fixed bug where Leadin would add non-tagged emails to ESP lists when it was not supposed to do those contacts
|
308 |
+
|
309 |
+
= 2.2.5 (2014.11.20) =
|
310 |
+
- Bug fixes
|
311 |
+
- Fixes to bulk action labels
|
312 |
+
- Fixed Add Tag button
|
313 |
+
|
314 |
+
= 2.2.4 (2014.10.31) =
|
315 |
+
- Bug fixes
|
316 |
+
- Patch for 2.2.3 database structure. We forgot to include the new form_hashkey field in the database upgrade
|
317 |
+
|
318 |
+
= 2.2.3 (2014.10.31) =
|
319 |
+
= Enhancements =
|
320 |
+
- Added "Tags" link to sidebar menu
|
321 |
+
- Added the applied tags on form submission timeline events
|
322 |
+
- Added the form selector on submission events in the timeline
|
323 |
+
- Added language in the subject of the contact notification emails to indicate returning vs. new visitors
|
324 |
+
- Leadin will now detect first names + last names and store them on the contact + push to ESP connectors
|
325 |
+
- Retroactively apply names to all contacts where possible
|
326 |
+
|
327 |
+
- Bug fixes
|
328 |
+
- If a contact changes their email, Leadin will now push the new email to the ESP connectors
|
329 |
+
- Added safeguards into all third party libraries to see if they are included already in the WordPress admin
|
330 |
+
- Added default Javascript values to the popup form if the get_footer function isn't being called
|
331 |
+
|
332 |
+
= 2.2.2 (2014.10.16) =
|
333 |
+
= Enhancements =
|
334 |
+
- Leadin now include the utm_ tags from the original first page view when parsing the sources
|
335 |
+
|
336 |
+
- Bug fixes
|
337 |
+
- Unchecking all the template checkboxes for the popup then saving no longer rechecks them all
|
338 |
+
- Added in current_time fix for older versions of WordPress
|
339 |
+
- Retooled tag editor to only pull down unique selectors
|
340 |
+
- Contact list now will go back to the previous page when clicking the back link
|
341 |
+
- Fixed mysterious bug where popup ignored new visitors
|
342 |
+
- NOW the subscription confirmation stays checked/unchecked on save (Thanks Kate!)
|
343 |
+
|
344 |
+
= 2.2.1 (2014.10.01) =
|
345 |
+
= Enhancements =
|
346 |
+
- Added video from WPApplied to readme file
|
347 |
+
|
348 |
+
- Bug fixes
|
349 |
+
- Page view filters now work in the all contacts list
|
350 |
+
- Subscription confirmation box didn't work in settings page if the "homepage" checkbox was unchecked
|
351 |
+
- Leadin menu link no longer shows up in the front-end menu bar for non-logged in users
|
352 |
+
- Stopped selecting duplicate tags on a contact in the timeline view
|
353 |
+
- Select inputs did not pull down the text and instead used the value. Fixed and use text now for selected option
|
354 |
+
- Timezones with a database offset on the contact timeline were not correctly fixed in last update
|
355 |
+
- Fix to ignore all cURL calls if script isn't present on the server
|
356 |
+
- Disable beta program is cURL does not exist on the server
|
357 |
+
- Fixed “<- All contacts” link showing up next to back link on a specific contact type in timeline view
|
358 |
+
|
359 |
+
= 2.2.0 (2014.09.25) =
|
360 |
+
= Enhancements =
|
361 |
+
- Added ability to ignore logged in user roles from tracking
|
362 |
+
- Popup can be previewed on the front end site before saving changes
|
363 |
+
- MailChimp Connect checks for faulty API keys and prompts the user to enter in one that works on the tag editor page
|
364 |
+
- Email headers for contact notificaitons come from the person who filled in the form
|
365 |
+
- Added traffic source URL parameters to contact notification emails
|
366 |
+
|
367 |
+
- Bug fixes
|
368 |
+
- Leadin now accounts for timezones discrepancy on some MySQL databases and offsets to local time
|
369 |
+
- Filters are now persistent when clicking the link back to the contact list from a contact timeline
|
370 |
+
- cURL dependency no longer prints the raw error to the screen on installation and gracefully disables cURL-dependant features
|
371 |
+
- Stats page and contact list totals didn't match up - fixed
|
372 |
+
|
373 |
+
= 2.1.0 (2014.09.19) =
|
374 |
+
= Enhancements =
|
375 |
+
- Improved onboarding
|
376 |
+
- Added setting include a short description to the popup under the form heading
|
377 |
+
- General style improvements to the popup form power-up
|
378 |
+
|
379 |
+
- Bug fixes
|
380 |
+
- Contact filters are now persistent when navigating back to the main contact list from the contact timeline
|
381 |
+
|
382 |
+
= 2.0.2 (2014.09.09) =
|
383 |
+
|
384 |
+
- Bug fixes
|
385 |
+
- Fix inconsistent sources on stats widgets and contact timeline widgets
|
386 |
+
- Onboarding tooltip popup for setting up settings now works correctly
|
387 |
+
- Parse out get vars for traffic sources in the contact timeline
|
388 |
+
|
389 |
+
= 2.0.1 (2014.09.01) =
|
390 |
+
= Enhancements =
|
391 |
+
- Removed "Who read my post" widget analytics from the post editor
|
392 |
+
- Separated backend from frontend code to speed up ajax calls on both sides
|
393 |
+
|
394 |
+
- Bug fixes
|
395 |
+
- Fixed bug when deleting specifically selected contacts looked like all the contacts were deleted on the page refresh
|
396 |
+
- Organic traffic and paid traffic sources are now parsing more accurately
|
397 |
+
- Credit card forms will add to the timeline now but will block all credit card information
|
398 |
+
- Bulk edited tags now push contacts to ESP lists when added
|
399 |
+
- Lists with existing contacts retroactively push email addresses to corresponding ESP list
|
400 |
+
- Renamed MailChimp Contact Sync + Constant Contact Sync to MailChimp Connect + Constant Contact Connect
|
401 |
+
- Fixed returning contacts vs. new contacts in dashboard widget
|
402 |
+
- Contact export works again
|
403 |
+
- Fixed insecure content warning on SSL
|
404 |
+
- Non-administrators no longer can see the Leadin menu links or pages
|
405 |
+
- Settings link missing from plugins list page
|
406 |
+
- Line break contact notifications previews
|
407 |
+
- Setup a mailto link on the contact notification email in the details header
|
408 |
+
|
409 |
+
= 2.0.0 (2014.08.11) =
|
410 |
+
= Enhancements =
|
411 |
+
- Create a custom tagged list based on form submission rules
|
412 |
+
- Ability to sync tagged contacts to a specific ESP list
|
413 |
+
- Filter lists by form selectors
|
414 |
+
|
415 |
+
- Bug fixes
|
416 |
+
- Fix contact export for selected contacts
|
417 |
+
- Text area line breaks in the contact notifications now show properly
|
418 |
+
- Contact numbers at top of list did not always match number in sidebar - fixed
|
419 |
+
|
420 |
+
= 1.3.0 (2014.07.14) =
|
421 |
+
= Enhancements =
|
422 |
+
- Multisite compatibility
|
423 |
+
|
424 |
+
= 1.2.0 (2014.06.25) =
|
425 |
+
- Bug fixes
|
426 |
+
- Contacts with default "contact status" were not showing up in the contact list
|
427 |
+
- WordPress admin backends secured with SSL can now be used with Leadin
|
428 |
+
- Namespaced the referrer parsing library for the Sources widget
|
429 |
+
|
430 |
+
= Enhancements =
|
431 |
+
- Leadin VIP program
|
432 |
+
|
433 |
+
= 1.1.1 (2014.06.20) =
|
434 |
+
- Bug fixes
|
435 |
+
- Emergency bug fix on activation caused by broken SVN merging
|
436 |
+
|
437 |
+
= 1.1.0 (2014.06.20) =
|
438 |
+
- Bug fixes
|
439 |
+
- Leadin subscriber email confirmations were not sending
|
440 |
+
- Removed smart contact segmenting for leads
|
441 |
+
|
442 |
+
= Enhancements =
|
443 |
+
- Added more contact status types for contacted + customer
|
444 |
+
- Setup collection for form IDs + classes
|
445 |
+
|
446 |
+
= 1.0.0 (2014.06.12) =
|
447 |
+
- Bug fixes
|
448 |
+
- Fixed sort by visits in the contacts list
|
449 |
+
|
450 |
+
= Enhancements =
|
451 |
+
- Contacts filtering
|
452 |
+
- Stats dashboard
|
453 |
+
- Sources
|
454 |
+
|
455 |
+
= 0.10.0 (2014.06.03) =
|
456 |
+
- Bug fixes
|
457 |
+
- Fixed original referrer in contact timeline
|
458 |
+
- Fixed unnecessary queries on contact timeline
|
459 |
+
- Only run the update check if the version number is different than the saved number
|
460 |
+
- Remove "fakepath" from file path text in uploaded file input types
|
461 |
+
|
462 |
+
= Enhancements =
|
463 |
+
- Expire the subscribe cookie after a few weeks
|
464 |
+
- Ability to disable a subscribe notification
|
465 |
+
- Added jQuery validation to the subscribe pop-up
|
466 |
+
- Multi-select input support
|
467 |
+
- Block forms with credit card fields from capturing contact information
|
468 |
+
- Updated contact timeline views
|
469 |
+
- Updated new contact notification emails
|
470 |
+
|
471 |
+
= 0.9.3 (2014.05.19) =
|
472 |
+
- Bug fixes
|
473 |
+
- Fix for duplicate values being stored in the active power-ups option
|
474 |
+
|
475 |
+
= 0.9.2 (2014.05.16) =
|
476 |
+
|
477 |
+
= Enhancements =
|
478 |
+
- Overhaul of settings page to make it easier to see which settings go with each power-up
|
479 |
+
- Launched Leadin Beta Program
|
480 |
+
|
481 |
+
= 0.9.1 (2014.05.14) =
|
482 |
+
- Bug fixes
|
483 |
+
- Fixed pop-up location dropdown not defaulting to saved options value
|
484 |
+
- Hooked subscribe widget into get_footer action instead of loop_end filter
|
485 |
+
|
486 |
+
= 0.9.0 (2014.05.12) =
|
487 |
+
- Bug fixes
|
488 |
+
- Remove leadin-css file enqueue call
|
489 |
+
|
490 |
+
= Enhancements =
|
491 |
+
- Show faces of people who viewed a post/page in the editor
|
492 |
+
- Add background color to avatars so they are easier to see
|
493 |
+
- Various UI fixes
|
494 |
+
|
495 |
+
= 0.8.5 (2014.05.08) =
|
496 |
+
- Bug fixes
|
497 |
+
- Fixed broken contact notification emails
|
498 |
+
|
499 |
+
= 0.8.4 (2014.05.07) =
|
500 |
+
- Bug fixes
|
501 |
+
- Fixed HTML encoding of apostrophes and special characters in the database for page titles
|
502 |
+
|
503 |
+
= Enhancements =
|
504 |
+
- Added ability to toggle subscribe widget on posts, pages, archives or the home page
|
505 |
+
- Sort contacts by last visit
|
506 |
+
|
507 |
+
= 0.8.3 (2014.05.06) =
|
508 |
+
- Bug fixes
|
509 |
+
- Merge duplicate contacts into one record
|
510 |
+
- Remove url parameters from source links in contact list
|
511 |
+
- Downgrade use of singletons so classes are compatible with PHP 5.2
|
512 |
+
|
513 |
+
= Enhancements =
|
514 |
+
- Swap out delete statements in favor of binary "deleted" flags to minimize data loss risk
|
515 |
+
- Sort contacts by last visit
|
516 |
+
|
517 |
+
= 0.8.2 (2014.05.02) =
|
518 |
+
- Bug fixes
|
519 |
+
- Removed namespace usage in favor or a low-tech work around to be compliant with PHP 5.2 and lower
|
520 |
+
|
521 |
+
= 0.8.1 (2014.04.30) =
|
522 |
+
- Bug fixes
|
523 |
+
- Namespaced duplicate classes
|
524 |
+
|
525 |
+
= 0.8.0 (2014.04.30) =
|
526 |
+
- Bug fixes
|
527 |
+
- Fix scrolling issue with subscribe pop-up
|
528 |
+
- Duplicate class bug fixes
|
529 |
+
|
530 |
+
= Enhancements =
|
531 |
+
- Add optional first name, last name and phone fields for subscribe pop-up
|
532 |
+
- Change out contact notification emails to be from settings email address
|
533 |
+
- Ability to disable contact notification emails
|
534 |
+
- Constant Contact list sync power-up
|
535 |
+
- Sync optional contact fields (name + phone) to email service provider power-ups
|
536 |
+
|
537 |
+
= 0.7.2 (2014.04.18) =
|
538 |
+
- Bug fixes
|
539 |
+
- Fix contact deletion bug
|
540 |
+
- Implement data recovery fix for contacts
|
541 |
+
- Bug fixes to contact merging
|
542 |
+
|
543 |
+
|
544 |
+
= 0.7.1 (2014.04.11) =
|
545 |
+
- Bug fixes
|
546 |
+
- SVN bug fix that did not add the MailChimp List sync power-up
|
547 |
+
|
548 |
+
= 0.7.0 (2014.04.10) =
|
549 |
+
|
550 |
+
= Enhancements =
|
551 |
+
- MailChimp List Sync power-up
|
552 |
+
- Added new themes (bottom right, bottom left, top and pop-up) to the WordPress Subscribe Widget power-up
|
553 |
+
|
554 |
+
= 0.6.2 (2014.04.07) =
|
555 |
+
- Bug fixes
|
556 |
+
- Fixed activation error for some installs by removing error output
|
557 |
+
- MySQL query optimizations
|
558 |
+
- Fixed bug with MySQL V5.0+ by adding default NULL values for insert statements on contacts table
|
559 |
+
- Changed title for returning lead email notifications
|
560 |
+
- Setting to change button label on
|
561 |
+
|
562 |
+
= Enhancements =
|
563 |
+
- Added ability to change button label on subscribe widget
|
564 |
+
|
565 |
+
= 0.6.1 (2014.03.12) =
|
566 |
+
- Bug fixes
|
567 |
+
- Updated read me.txt file
|
568 |
+
- Updated screenshots
|
569 |
+
|
570 |
+
= 0.6.0 (2014.03.07) =
|
571 |
+
- Bug fixes
|
572 |
+
- Remove in-house plugin updating functionality
|
573 |
+
- Original referrer is always the server url, not the HTTP referrer
|
574 |
+
- Strip slashes from title tags
|
575 |
+
- Number of contacts does not equal leads + commenters + subscribers
|
576 |
+
- Modals aren't bound to forms after page load
|
577 |
+
- Fix bug with activating + reactivating the plugin overwriting the saved settings
|
578 |
+
- Override button styles for Subscribe Pop-up widget
|
579 |
+
|
580 |
+
= Enhancements =
|
581 |
+
- Improved readability on new lead notification emails
|
582 |
+
- Confirmation email added for new subscribers to the Leadin Subscribe Pop-up
|
583 |
+
- Updated screenshots
|
584 |
+
- Improved onboarding flow
|
585 |
+
- Deleted unused and deprecated files
|
586 |
+
|
587 |
+
= 0.5.1 (2014.03.03) =
|
588 |
+
- Bug fixes
|
589 |
+
- Fixed Subscribe Pop-up automatically enabling itself
|
590 |
+
|
591 |
+
= 0.5.0 (2014.02.25) =
|
592 |
+
- Bug fixes
|
593 |
+
- Add (blank page title tag) to emails and contact timeline for blank page titles
|
594 |
+
- Fix link on admin nav menu bar to link to contact list
|
595 |
+
- Ignore lead notifications and subscribe popup on login page
|
596 |
+
- Saving an email no longer overwrites all the Leadin options
|
597 |
+
- Added live chat support
|
598 |
+
|
599 |
+
= Enhancements =
|
600 |
+
- New power-ups page
|
601 |
+
- Leadin Subscribe integrated into plugin as a power-up
|
602 |
+
- Improved contact history styling + interface
|
603 |
+
- Added visit, pageview and submission stats to the contact view
|
604 |
+
- Added Live Chat into the Leadin WordPress admin screens
|
605 |
+
- New Leadin icons for WordPress sidebar and admin nav menu
|
606 |
+
|
607 |
+
= 0.4.6 (2013.02.11) =
|
608 |
+
- Bug fixes
|
609 |
+
- Fix table sorting for integers
|
610 |
+
- Bug fixes to contact type headings
|
611 |
+
- Bug fix "Select All" export
|
612 |
+
- Bug fix for CSS "page views" hover triangle breaking to next line
|
613 |
+
- Backwards compatibility for < jQuery 1.7.0
|
614 |
+
- Add Leadin link to admin bar
|
615 |
+
|
616 |
+
= Enhancements =
|
617 |
+
- New onboarding flow
|
618 |
+
|
619 |
+
= 0.4.5 (2013.01.30) =
|
620 |
+
= Enhancements =
|
621 |
+
- Integration with Leadin Subscribe
|
622 |
+
|
623 |
+
= 0.4.4 (2013.01.24) =
|
624 |
+
- Bug fixes
|
625 |
+
- Bind submission tracking on buttons and images inside of forms instead of just submit input types
|
626 |
+
|
627 |
+
= Enhancements =
|
628 |
+
- Change out screenshots to obfiscate personal information
|
629 |
+
|
630 |
+
= 0.4.3 (2013.01.13) =
|
631 |
+
- Bug fixes
|
632 |
+
- Fixed Leadin form submission inserts for comments
|
633 |
+
- Resolved various silent PHP warnings in administrative dashboard
|
634 |
+
- Fixed Leadin updater class to be compatible with WP3.8
|
635 |
+
- Improved contact merging logic to be more reliable
|
636 |
+
|
637 |
+
= Enhancements =
|
638 |
+
- Improved onboarding flow
|
639 |
+
- Optimized form submission catching + improved performance
|
640 |
+
|
641 |
+
= 0.4.2 (2013.12.30) =
|
642 |
+
- Bug fixes
|
643 |
+
- Change 'contact' to 'lead' in the contacts table
|
644 |
+
- Fixed emails always sending to the admin_email
|
645 |
+
- Tie historical events to new lead when an email is submitted multiple times with different tracking codes
|
646 |
+
- Select leads, commenters and subscribers on distinct email addresses
|
647 |
+
- Fixed timeline order to show visit, then a form submission, then subsequent visits
|
648 |
+
|
649 |
+
= Enhancements =
|
650 |
+
- Added url for each page views in the contact timeline
|
651 |
+
- Added source for each visit event
|
652 |
+
- Tweak colors for contact timeline
|
653 |
+
- Default the Leadin menu to the contacts page
|
654 |
+
|
655 |
+
= 0.4.1 (2013.12.18) =
|
656 |
+
- Bug fixes
|
657 |
+
- Removed Leadin header from the contact timeline view
|
658 |
+
- Updated the wording on the menu view picker above contacts list
|
659 |
+
- Remove pre-mp6 styles if MP6 plugin is activated
|
660 |
+
- Default totals leads/comments = 0 when leads table is empty instead of printing blank integer
|
661 |
+
- Legacy visitors in table have 0 visits because session support did not exist. Default to 1
|
662 |
+
- Update ouput for the number of comments to be equal to total_comments, not total_leads
|
663 |
+
- Added border to pre-mp6 timeline events
|
664 |
+
|
665 |
+
= 0.4.0 (2013.12.16) =
|
666 |
+
- Bug fixes
|
667 |
+
- Block admin comment replies from creating a contact
|
668 |
+
- Fixed faulty sorting by Last visit + Created on dates in contacts list
|
669 |
+
|
670 |
+
= Enhancements =
|
671 |
+
- Timeline view of a contact history
|
672 |
+
- New CSS styles for contacts table
|
673 |
+
- Multiple email address support for new lead/comment emails
|
674 |
+
- Integration + testing for popular WordPress form builder plugins
|
675 |
+
- One click updates for manually hosted plugin
|
676 |
+
|
677 |
+
= 0.3.0 (2013.12.09) =
|
678 |
+
- Bug fixes
|
679 |
+
- HTML encoded page titles to fix broken HTML characters
|
680 |
+
- Strip slashes from page titles in emails
|
681 |
+
|
682 |
+
= Enhancements =
|
683 |
+
- Created separate Leadin menu in WordPress admin
|
684 |
+
- CRM list of all contacts
|
685 |
+
- Added ability to export list of contacts
|
686 |
+
- Leadin now distinguishes between a contact requests and comment submissions
|
687 |
+
- Added link to CRM list inside each contact/comment email
|
688 |
+
|
689 |
+
= 0.2.0 (2013.11.26) =
|
690 |
+
- Bug fixes
|
691 |
+
- Broke up page view history by session instead of days
|
692 |
+
- Fixed truncated form submission titles
|
693 |
+
- Updated email headers
|
694 |
+
|
695 |
+
= Enhancements =
|
696 |
+
- Plugin now updates upon activation and keeps record of version
|
697 |
+
- Added referral source to each session
|
698 |
+
- Added link to page for form submissions
|
699 |
+
- Updated email subject line
|
700 |
+
- Added social media avatars to emails
|
701 |
+
|
702 |
+
= 0.1.0 (2013.11.22) =
|
703 |
+
- Plugin released
|
screenshot-1.png
ADDED
Binary file
|
screenshot-2.png
ADDED
Binary file
|
screenshot-3.png
ADDED
Binary file
|
screenshot-4.png
ADDED
Binary file
|
screenshot-5.png
ADDED
Binary file
|