I found a bug in ZenCart. In includes/modules/create_account.php
Basically, the newsletter option will be true if the newsletter is enabled by default, but a new user unchecks the newsletter box.
This is because of these lines:
if (isset($_POST['newsletter'])) {
$newsletter = zen_db_prepare_input($_POST['newsletter']);
}
The newsletter option is a checkbox. If it gets unchecked, it doesn't get passed up to the server as part of the POST parameters. So newsletter doesn't get set to what the user specified.
You need to add these lines to make it set it to 0 if they uncheck the box.
else {
$newsletter = '0';
}



