1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307: 308: 309: 310: 311: 312: 313: 314: 315: 316: 317: 318: 319: 320: 321: 322: 323: 324: 325: 326: 327: 328: 329: 330: 331: 332: 333: 334: 335: 336: 337: 338: 339: 340: 341: 342: 343: 344: 345: 346: 347: 348: 349: 350: 351: 352: 353: 354: 355: 356: 357: 358: 359: 360: 361: 362: 363: 364: 365: 366: 367: 368: 369: 370: 371: 372: 373: 374: 375: 376: 377: 378: 379: 380: 381: 382: 383: 384: 385: 386: 387: 388: 389: 390: 391: 392: 393: 394: 395: 396: 397: 398: 399: 400: 401: 402: 403: 404: 405: 406: 407: 408: 409: 410: 411: 412: 413: 414: 415: 416: 417: 418: 419: 420: 421: 422: 423: 424: 425: 426: 427: 428: 429: 430: 431: 432: 433: 434: 435: 436: 437: 438: 439: 440: 441: 442: 443: 444: 445: 446: 447: 448: 449: 450: 451: 452: 453: 454: 455: 456: 457: 458: 459: 460: 461: 462: 463: 464: 465: 466: 467: 468: 469: 470: 471: 472: 473: 474: 475: 476: 477: 478: 479: 480: 481: 482: 483: 484: 485: 486: 487: 488: 489: 490: 491: 492: 493: 494: 495: 496: 497: 498: 499: 500: 501: 502: 503: 504: 505: 506: 507: 508: 509: 510: 511: 512: 513: 514: 515: 516: 517: 518: 519: 520: 521: 522: 523: 524: 525: 526: 527: 528: 529: 530: 531: 532: 533: 534: 535: 536: 537: 538: 539: 540: 541: 542: 543: 544: 545: 546: 547: 548: 549: 550: 551: 552: 553: 554: 555: 556: 557: 558: 559: 560: 561: 562: 563: 564: 565: 566: 567: 568: 569: 570: 571: 572: 573: 574: 575: 576: 577: 578: 579: 580: 581: 582: 583: 584: 585: 586: 587: 588: 589: 590: 591: 592: 593: 594: 595:
<?php
class Inbound_List_Double_Optin {
function __construct() {
self::add_hooks();
}
public static function add_hooks() {
add_action('admin_enqueue_scripts', array(__CLASS__, 'enqueue_scripts'));
add_action('wplead_list_category_edit_form_fields', array(__CLASS__, 'add_list_settings'));
add_action('add_lead_to_lead_list', array(__CLASS__, 'remove_from_double_optin_list'), 10, 2);
add_action('wplead_list_category_edit_form', array(__CLASS__, 'lead_list_save_settings'));
add_action('wp_ajax_lead_list_save_settings', array(__CLASS__, 'ajax_lead_list_save_settings'));
}
public static function enqueue_scripts() {
$screen = get_current_screen();
if (!isset($screen) || $screen->id != 'edit-wplead_list_category') {
return;
}
wp_enqueue_script('jquery');
wp_enqueue_script('thickbox');
wp_enqueue_style('thickbox');
wp_enqueue_script('media-upload');
}
public static function get_default_email_content($settings) {
if ($settings['logo']) {
$logo_html = '<tr style="margin: 0; padding: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; line-height: 22px;">
<td class="logo" style="margin: 0; padding: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; line-height: 22px; vertical-align: top; text-align: center;">
<img src="' . $settings['logo'] . '" width="" style="max-width:500px;padding: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; line-height: 22px; max-width: 100%; margin: 30px 0;">
</td>
</tr>';
} else {
$logo_html = "";
}
$html = '<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width" style="margin: 0; padding: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; line-height: 22px;">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" style="margin: 0; padding: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; line-height: 22px;">
<title style="margin: 0; padding: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; line-height: 22px;">
' . $settings['email_subject'] . '
</title>
</head>
<body style="margin: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; padding: 0; border-top: 2px solid #26334D; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; background-color: white; height: 100%; line-height: 1.6; width: 100%;">
<table class="body-wrap" style="margin: 0; padding: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; line-height: 22px; width: 100%; background-color: white;">
<tr style="margin: 0; padding: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; line-height: 22px;">
<td style="margin: 0; padding: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; line-height: 22px; vertical-align: top;"></td>
<td width="400" class="container" style="font-size: 14px; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; padding: 0; line-height: 22px; vertical-align: top; margin: 0 auto; display: block; max-width: 400px; clear: both;">
<div class="content" style="padding: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; line-height: 22px; margin: 0 auto; max-width: 400px; display: block;">
<table width="100%" cellpadding="0" cellspacing="0" class="main" style="margin: 0; padding: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; line-height: 22px;">
' . $logo_html . '
<tr style="margin: 0; padding: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; line-height: 22px;">
<td class="content-wrap" style="margin: 0; padding: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; line-height: 22px; vertical-align: top;">
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; padding: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; line-height: 22px;">
<tr style="margin: 0; padding: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; line-height: 22px;">
<td class="content-block" style="font-size: 14px; margin: 0; box-sizing: border-box; line-height: 22px; vertical-align: top; color: #8F9BB3; padding: 20px 0; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; background: #ffffff; border-radius: 3px; box-shadow: 0 0 0 1px #D8DDE2;">
<p style="margin: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; line-height: 22px; font-weight: normal; margin-bottom: 0; padding: 0 20px;">
' . $settings['message'] . '</p>
</td>
</tr>
<tr style="margin: 0; padding: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; line-height: 22px;">
<td class="action" style="margin: 0; padding: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; line-height: 22px; vertical-align: top; padding-top: 20px;">
<a href="[inbound-list-double-optin-link]" style="line-height: 22px; margin: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #ffffff; font-size: 18px; padding: 20px; display: block; font-weight: bold; background: #2980b9; border-radius: 3px; text-decoration: none; text-align: center;">' . $settings['button_text'] . '</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<div class="footer" style="margin: 0; padding: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; line-height: 22px; width: 100%; clear: both;">
<table width="100%" class="footer-table" style="margin: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; line-height: 22px; padding: 40px 20px; background: white;">
<tr style="margin: 0; padding: 0; box-sizing: border-box; font-family: \'Helvetica Neue\', \'Helvetica\', Helvetica, Arial, sans-serif; color: #8F9BB3; font-size: 14px; line-height: 22px;">
<td class="aligncenter content-block" style="margin: 0; box-sizing: border-box; line-height: 22px; vertical-align: top; padding: 20px 0; font-family: \'Helvetica Neue\', Helvetica, Arial, \'Lucida Grande\', sans-serif; color: #8F9BB3; text-align: center; font-size: 12px;">
' . html_entity_decode($settings['footer_text']) . '
</td>
</tr>
</table>
</div>
</body>
</html>
';
return $html;
}
public static function get_double_optin_waiting_list() {
if (!defined('INBOUND_PRO_CURRENT_VERSION')) {
$double_optin_list_id = get_option('list-double-optin-list-id', '');
} else {
$settings = Inbound_Options_API::get_option('inbound-pro', 'settings', array());
$double_optin_list_id = $settings['leads']['list-double-optin-list-id'];
}
return $double_optin_list_id;
}
public static function save_double_optin_waiting_list() {
if (!defined('INBOUND_PRO_CURRENT_VERSION')) {
update_option('list-double-optin-list-id', $term_id['term_id']);
} else {
$settings = Inbound_Options_API::get_option('inbound-pro', 'settings');
$settings['leads']['list-double-optin-list-id'] = $term_id['term_id'];
Inbound_Options_API::update_option('inbound-pro', 'settings', $settings);
}
}
public static function ajax_lead_list_save_settings() {
$data = stripslashes_deep($_POST['data']);
$cleaned = array();
foreach ($data as $key => $value) {
switch($key) {
case 'double_optin_email_confirmation_footer_text':
$cleaned[sanitize_text_field($key)] = $value;
break;
case 'double_optin_email_confirmation_message':
$cleaned[sanitize_text_field($key)] = $value;
break;
default:
$cleaned[sanitize_text_field($key)] = sanitize_text_field($value);
break;
}
}
$meta = get_term_meta((int)$_POST['id'], 'wplead_lead_list_meta_settings', true);
if (!empty($meta)) {
foreach ($cleaned as $setting_name => $setting_value) {
$meta[$setting_name] = $setting_value;
}
} else {
$meta = $cleaned;
}
update_term_meta((int)$_POST['id'], 'wplead_lead_list_meta_settings', $meta);
echo json_encode(__('Settings Updated!', 'inbound-pro'));
die();
}
public static function lead_list_save_settings($list) {
?>
<script>
jQuery(document).ready(function () {
jQuery('input#submit, .edit-tag-actions .button').on('click', function () {
var settingData = {};
var id = "<?php echo $list->term_id; ?>";
jQuery('.double-optin-setting').each(function () {
settingData[jQuery(this).attr("name")] = jQuery(this).val();
});
jQuery.ajax({
type: 'POST',
url: ajaxurl,
data: {
action: 'lead_list_save_settings',
id: id,
data: settingData,
},
success: function (response) {
console.log(JSON.parse(response));
},
});
});
});
</script>
<?php
}
public static function add_list_settings($list) {
$double_optin_list_id = self::get_double_optin_waiting_list();
if ($list->term_id == $double_optin_list_id) {
return;
}
$settings = get_term_meta($list->term_id, 'wplead_lead_list_meta_settings', true);
$settings = (is_array($settings)) ? $settings : array();
$settings['double_optin'] = (isset($settings['double_optin'])) ? $settings['double_optin'] : 0;
$settings['double_optin_email_template'] = (isset($settings['double_optin_email_template'])) ? $settings['double_optin_email_template'] : __('Please confirm your subscription', 'inbound-pro');
$settings['double_optin_email_confirmation_logo'] = (isset($settings['double_optin_email_confirmation_logo'])) ? $settings['double_optin_email_confirmation_logo'] : '';
$settings['double_optin_email_confirmation_subject'] = (isset($settings['double_optin_email_confirmation_subject'])) ? $settings['double_optin_email_confirmation_subject'] : __('Please confirm your subscription', 'inbound-pro');
$settings['double_optin_email_confirmation_message'] = (isset($settings['double_optin_email_confirmation_message'])) ? $settings['double_optin_email_confirmation_message'] : __('To activate your subscription, please confirm your email address. If you received this by mistake, please disregard this email.', 'inbound-pro');
$settings['double_optin_email_confirmation_button_text'] = (isset($settings['double_optin_email_confirmation_button_text'])) ? $settings['double_optin_email_confirmation_button_text'] : __('Confirm email address', 'inbound-pro');
$settings['double_optin_email_confirmation_footer_text'] = (isset($settings['double_optin_email_confirmation_footer_text'])) ? $settings['double_optin_email_confirmation_footer_text'] : sprintf(__('Powered by %sInbound Now%s', 'inbound-pro'), '<a href="http://www.inboundnow.com">', '</a>');
$emails = array();
if (defined('INBOUND_PRO_CURRENT_VERSION')) {
if (class_exists('Inbound_Mailer_Post_Type')) {
$emails = Inbound_Mailer_Post_Type::get_automation_emails_as('ARRAY');
}
$emails = ($emails) ? $emails : array(__('No Automation emails detected. ', 'inbound-pro'));
}
?>
<tr class="form-field">
<th valign="top" scope="row">
<label><?php _e('Double Opt-in', 'inbound-pro'); ?></label>
</th>
<td>
<select id="double_optin_toggle" class="double-optin-setting" name="double_optin" title="<?php _e('Enable list Double Opt In to send leads an email requesting consent to being added to a list.', 'inbound-pro'); ?>">
<option value="0" <?php selected($settings['double_optin'], 0); ?> ><?php _e('Off', 'inbound-pro'); ?></option>
<option value="1" <?php selected($settings['double_optin'], 1); ?> ><?php _e('On', 'inbound-pro'); ?></option>
</select>
</td>
</tr>
<tr class="form-field double-optin-enabled " id="double-optin-email-template">
<th valign="top" scope="row">
<label><?php _e('Select Email Template', 'inbound-pro'); ?></label>
</th>
<td>
<select name="double_optin_email_template" id="double_optin_email_template" class="double-optin-setting">
<option value='default-email-template' <?php selected($settings['double_optin_email_template'], 'default-email-template'); ?>>
<?php _e('Use the default email template', 'inbound-pro'); ?>
</option>
<?php
foreach ($emails as $id => $label) {
echo '<option value="' . $id . '" ' . selected($settings['double_optin_email_template'], $id) . '>' . $label . '</option>';
}
?>
</select>
</td>
</tr>
<tr class="form-field double-optin-enabled default-email-setting" id="">
<th valign="top" scope="row">
<label> <?php _e('Email Subject', 'inbound-pro'); ?></label>
</th>
<td>
<input type="text" name="double_optin_email_confirmation_subject" size="30" id="double_optin_email_confirmation_subject" class="double-optin-setting" autocomplete="off" value="<?php echo $settings['double_optin_email_confirmation_subject']; ?>">
</td>
</tr>
<tr class="form-field double-optin-enabled default-email-setting" id="">
<th valign="top" scope="row">
<label><?php _e('Email Logo', 'inbound-pro'); ?></label>
</th>
<td>
<input type="text" id="double_optin_email_confirmation_logo" name="double_optin_email_confirmation_logo" value="<?php echo esc_url($settings['double_optin_email_confirmation_logo']); ?>" class="double-optin-setting"/>
<input id="double_optin_email_confirmation_logo_button" type="button" class="button" value="<?php _e('Upload Logo', 'inbound-pro'); ?>"/>
</td>
</tr>
<tr class="form-field double-optin-enabled default-email-setting" id="">
<th valign="top" scope="row">
<label><?php _e('Email Message', 'inbound-pro'); ?></label>
</th>
<td>
<textarea name="double_optin_email_confirmation_message" class="double-optin-setting" style="width:100%"><?php echo $settings['double_optin_email_confirmation_message']; ?></textarea>
</td>
</tr>
<tr class="form-field double-optin-enabled default-email-setting" id="">
<th valign="top" scope="row">
<label><?php _e('Button Text', 'inbound-pro'); ?></label>
</th>
<td>
<input type="text" name="double_optin_email_confirmation_button_text" size="30" class="double-optin-setting" value="<?php echo $settings['double_optin_email_confirmation_button_text']; ?>">
</td>
</tr>
<tr class="form-field double-optin-enabled default-email-setting" id="">
<th valign="top" scope="row">
<label><?php _e('Footer Text', 'inbound-pro'); ?></label>
</th>
<td>
<input type="text" name="double_optin_email_confirmation_footer_text" size="30" class="double-optin-setting" value="<?php echo htmlentities($settings['double_optin_email_confirmation_footer_text']); ?>">
</td>
</tr>
<tr class="form-field double-optin-enabled confirmation-shortcode-notice" id="">
<th valign="top" scope="row">
<label><?php _e('Note', 'inbound-pro'); ?></label>
</th>
<td>
<p><?php _e('When using Inbound Pro\'s email component you should use the shortcode below to render your confirmation link. ', 'inbound-pro'); ?></p>
<pre>[inbound-list-double-optin-link]</pre>
</td>
</tr>
<style type="text/css">
position: initial;
}
.double-optin-enabled {
display: table-row;
}
</style>
<script>
jQuery(document).ready(function () {
jQuery('#double_optin_email_confirmation_logo_button').click(function () {
tb_show('', 'media-upload.php?referer=wptuts-settings&type=image&TB_iframe=true&post_id=0', false);
return false;
});
window.send_to_editor = function (html) {
var image_url = jQuery('img', html).attr('src');
jQuery('#double_optin_email_confirmation_logo').val(image_url);
tb_remove();
}
jQuery('#double_optin_toggle').on('change', function () {
if (jQuery('#double_optin_toggle').val() != '1') {
jQuery('.double-optin-enabled').css({'display': 'none'});
} else {
jQuery('.double-optin-enabled').css({'display': 'table-row'});
jQuery('#double_optin_email_template').trigger('change');
}
});
jQuery('#double_optin_email_template').on('change', function () {
if(jQuery('#double_optin_toggle').val() == '1'){
if (jQuery('#double_optin_email_template').val() == 'default-email-template') {
jQuery('.default-email-setting').css({'display': 'table-row'});
jQuery('.confirmation-shortcode-notice').css({'display': 'none'});
} else {
jQuery('.default-email-setting').css({'display': 'none'});
jQuery('.confirmation-shortcode-notice').css({'display': 'table-row'});
}
}
});
setTimeout(function () {
jQuery('#double_optin_toggle').trigger('change');
jQuery('#double_optin_email_template').trigger('change');
}, 240);
});
</script>
<?php
}
public static function send_double_optin_confirmation($lead) {
$lists = get_post_meta($lead['id'], 'double_optin_lists', true);
if (!isset($lists) || empty($lists)) {
return;
}
$email_contents = array();
foreach ($lists as $list_id) {
$list_settings = get_term_meta((int)$list_id, 'wplead_lead_list_meta_settings', true);
if (!empty($list_settings['double_optin_email_template']) && $list_settings['double_optin_email_template'] != 'default-email-template') {
$vid = Inbound_Mailer_Variations::get_next_variant_marker($list_settings['double_optin_email_template']);
$args = array(
'email_id' => $list_settings['double_optin_email_template'],
'vid' => $vid,
'email_address' => $lead['email'],
'lead_id' => $lead['id'],
'tags' => array('inbound-forms'),
'lead_lists' => $lists,
);
$response = Inbound_Mail_Daemon::send_solo_email($args);
} else if ($list_settings['double_optin_email_template'] == 'default-email-template' && !empty($list_settings['double_optin_email_confirmation_subject'])) {
$email_contents[$list_id]['logo'] = $list_settings['double_optin_email_confirmation_logo'];
$email_contents[$list_id]['email_subject'] = $list_settings['double_optin_email_confirmation_subject'];
$email_contents[$list_id]['message'] = $list_settings['double_optin_email_confirmation_message'];
$email_contents[$list_id]['button_text'] = $list_settings['double_optin_email_confirmation_button_text'];
$email_contents[$list_id]['footer_text'] = $list_settings['double_optin_email_confirmation_footer_text'];
}
}
$email_contents = array_filter($email_contents);
if (!$email_contents) {
return;
}
foreach ($email_contents as $list_id => $email_content) {
$content = self::get_default_email_content($email_content);
$confirm_subject = $email_content['email_subject'];
$args = array(
'lead_id' => $lead['id'],
'list_ids' => $lists,
'email_id' => $lead['email']
);
$content = self::add_confirm_link_shortcode_params($content, $args);
$content = do_shortcode($content, false);
$content = str_replace(']]>', ']]>', $content);
$from_name = get_option('blogname', '');
$from_email = get_option('admin_email');
$headers = "From: " . $from_name . " <" . $from_email . ">\n";
$headers .= 'Content-type: text/html';
$headers = apply_filters('list_double_optin_lead_conversion/headers', $headers);
wp_mail($lead['email'], $confirm_subject, $content, $headers);
return;
}
}
public static function add_confirm_link_shortcode_params($content, $args) {
$shortcode_regex = '/\['
. '(\\[?)'
. "(inbound-list-double-optin-link)"
. '(?![\\w-])'
. '('
. '[^\\]\\/]*'
. '(?:'
. '\\/(?!\\])'
. '[^\\]\\/]*'
. ')*?'
. ')'
. '(?:'
. '(\\/)'
. '\\]'
. '|'
. '\\]'
. '(?:'
. '('
. '[^\\[]*+'
. '(?:'
. '\\[(?!\\/\\2\\])'
. '[^\\[]*+'
. ')*+'
. ')'
. '\\[\\/\\2\\]'
. ')?'
. ')'
. '(\\]?)/';
preg_match_all($shortcode_regex, $content, $matches);
for ($i = 0; $i < count($matches[0]); $i++) {
if ($matches[2][$i] == 'inbound-list-double-optin-link') {
$replacement_shortcode = '[list-double-optin-link lead_id=' . (int)$args['lead_id'] . ' list_ids=' . implode(',', $args['list_ids']) . ' email_id=' . sanitize_email($args['email_id']) . ' ]';
$content = str_replace($matches[0][$i], $replacement_shortcode, $content);
}
}
return $content;
}
public static function remove_from_double_optin_list($lead_id, $list_ids) {
$double_optin_lists = get_post_meta($lead_id, 'double_optin_lists', true);
if (empty($double_optin_lists)) {
return;
}
if (!in_array($list_ids, $double_optin_lists)) {
return;
}
if (!is_array($list_ids)) {
$list_ids = array($list_ids);
}
foreach ($list_ids as $list_id) {
if (in_array($list_id, $double_optin_lists)) {
$index = array_search($list_id, $double_optin_lists);
unset($double_optin_lists[$index]);
}
}
if (!empty($double_optin_lists)) {
update_post_meta($lead_id, 'double_optin_lists', array_values($double_optin_lists));
} else {
if (!defined('INBOUND_PRO_CURRENT_VERSION')) {
$double_optin_list_id = get_option('list-double-optin-list-id', '');
} else {
$settings = Inbound_Options_API::get_option('inbound-pro', 'settings', array());
$double_optin_list_id = $settings['leads']['list-double-optin-list-id'];
}
delete_post_meta($lead_id, 'double_optin_lists');
wp_remove_object_terms($lead_id, (int)$double_optin_list_id, 'wplead_list_category');
update_post_meta($lead_id, 'wp_lead_status', 'read');
}
}
}
new Inbound_List_Double_Optin;