kwrosenzweig:
When a customer that is a newsletter only subscriber tries to create an account, we get an error like this...
1062 Duplicate entry 'stefanie.pr######################' for key 2
in:
[INSERT INTO zen_subscribers (customers_id, email_address, email_format, confirmed, subscribed_date) VALUES ( 34, 'xxx######################', 'HTML', '1', now())]
In includes/modules/your_template/create_account.php, find the code between // BEGIN newsletter_subscribe mod 1/1 and // END newsletter_subscribe mod 1/1 and try replacing it with:
// BEGIN newsletter_subscribe mod 1/1
// If a newsletter only account exists we update the info,
// but keep the subscription active, and give them a message that to
// change they should do so on their account page (after creation).
if(defined('NEWSONLY_SUBSCRIPTION_ENABLED') && (NEWSONLY_SUBSCRIPTION_ENABLED=='true')) {
$check_subscribers_query = "select count(*) as total from " . TABLE_SUBSCRIBERS . "
where email_address = '" . zen_db_input($email_address) . "' ";
$check_subscribers = $db->Execute($check_subscribers_query);
if ($check_subscribers->fields['total'] > 0) {
$sql = "UPDATE " . TABLE_SUBSCRIBERS . " SET
customers_id = '" . (int)$_SESSION['customer_id'] . "',
email_format = '" . zen_db_input($email_format) . "',
confirmed = '1'
WHERE email_address = '" . zen_db_input($email_address) . "' ";
$db->Execute($sql);
$messageStack->add_session('login', SUBSCRIBE_MERGED_NEWSONLY_ACCT);
} else {
if (!empty($newsletter)) {
$sql = "INSERT INTO " . TABLE_SUBSCRIBERS . "
(customers_id, email_address, email_format, confirmed, subscribed_date)
VALUES ('" . (int)$_SESSION['customer_id'] . "', '" . zen_db_input($email_address) . "', '" . zen_db_input($email_format) . "', '1', now())";
$db->Execute($sql);
}
}
}
// END newsletter_subscribe mod 1/1