$vMsg['email'] = Pommo::_T('Invalid email address'); $smarty->assign('vMsg', $vMsg); } else { // ___ USER HAS SENT FORM ___ SmartyValidate::connect($smarty); if (SmartyValidate::is_valid($_POST) && !$current) { // __ FORM IS VALID Pommo::requireOnce($pommo->_baseDir . 'inc/classes/mailctl.php'); Pommo::requireOnce($pommo->_baseDir . 'inc/helpers/subscribers.php'); Pommo::requireOnce($pommo->_baseDir . 'inc/helpers/validate.php'); // get a copy of the message state // composition is valid (via preview.php) $state = $pommo->_session['state']['mailing']; // create temp subscriber $subscriber = array('email' => $_POST['email'], 'registered' => time(), 'ip' => $_SERVER['REMOTE_ADDR'], 'status' => 0, 'data' => $_POST['d']); PommoValidate::subscriberData($subscriber['data'], array('active' => FALSE, 'ignore' => TRUE, 'log' => false)); $key = PommoSubscriber::add($subscriber); if (!$key) { $logger->addErr('Unable to Add Subscriber'); } else { // temp subscriber created $state['tally'] = 1; $state['group'] = Pommo::_T('Test Mailing'); if ($state['ishtml'] == 'off') { $state['body'] = $state['altbody']; $state['altbody'] = ''; } // create mailing $mailing = PommoMailing::make(array(), TRUE); $state['status'] = 1; $state['current_status'] = 'stopped';
} elseif ($fid == 'email' && PommoHelper::isEmail($col)) { $subscriber['email'] = $col; } elseif ($fid == 'registered') { $subscriber['registered'] = PommoHelper::timeFromStr($col); } elseif ($fid == 'ip') { $subscriber['ip'] = $col; } } if ($subscriber['email']) { // check for dupe // TODO -- DO THIS IN BATCH ?? if (PommoHelper::isDupe($subscriber['email'], $includeUnsubscribed)) { $dupes++; continue; } // validate/fix data if (!PommoValidate::subscriberData($subscriber['data'], array('log' => false, 'ignore' => true, 'active' => false))) { $subscriber['flag'] = 9; } // add subscriber if (PommoSubscriber::add($subscriber)) { $tally++; if (isset($subscriber['flag'])) { $flagged++; } } } } unlink($pommo->_workDir . '/import.csv'); echo '<div class="warn"><p>' . sprintf(Pommo::_T('%s subscribers imported! Of these, %s were flagged to update their records.'), $tally, $flagged) . '<p>' . sprintf(Pommo::_T('%s duplicates encountered.'), $dupes) . '</p></div>'; die(Pommo::_T('Complete!') . ' <a href="subscribers_import.php">' . Pommo::_T('Return to') . ' ' . Pommo::_T('Import') . '</a>');
case 'editSubscriber': if (!is_numeric($_REQUEST['id']) || $_REQUEST['id'] == 0) { $json->fail('ERROR; Bad Subscriber ID Received'); } $subscriber = array('id' => $_REQUEST['id'], 'email' => $_REQUEST['email'], 'data' => $_REQUEST['d']); $validateOptions = array('skipReq' => TRUE, 'active' => FALSE); // check if email is valid if (!PommoHelper::isEmail($subscriber['email'])) { $json->fail(Pommo::_T('Invalid email.')); } // check for dupe $lookupID = current(PommoSubscriber::getIDByEmail($subscriber['email'], array(1, 2))); if ($lookupID && $lookupID != $subscriber['id']) { $json->fail(Pommo::_T('Email address already exists. Duplicates are not allowed.')); } if (!PommoValidate::subscriberData($subscriber['data'], $validateOptions) && !isset($_REQUEST['force'])) { $json->addErr(Pommo::_T('Fields failed validation') . " >>> "); $json->addErr($logger->getAll()); $json->fail(Pommo::_T('Error updating subscriber.')); } if (!PommoSubscriber::update($subscriber, 'REPLACE_ALL')) { $json->fail(Pommo::_T('Error updating subscriber.')); } // subscriber updated successfully, build output $out = array('email' => $subscriber['email'], 'id' => $subscriber['id']); // return human readable date formatting Pommo::requireOnce($pommo->_baseDir . 'inc/helpers/fields.php'); $dateFields = PommoField::getByType('date'); foreach ($subscriber['data'] as $k => $val) { $out['d' . $k] = in_array($k, $dateFields) ? PommoHelper::timeToStr($val) : htmlspecialchars($val); }
*********************************/ if (empty($_POST['pommo_signup'])) { Pommo::redirect('login.php'); } $subscriber = array('email' => $_POST['Email'], 'registered' => time(), 'ip' => $_SERVER['REMOTE_ADDR'], 'status' => 1, 'data' => @$_POST['d']); // ** check for correct email syntax if (!PommoHelper::isEmail($subscriber['email'])) { $logger->addErr(Pommo::_T('Invalid Email Address')); } // ** check if email already exists in DB ("duplicates are bad..") if (PommoHelper::isDupe($subscriber['email'])) { $logger->addErr(Pommo::_T('Email address already exists. Duplicates are not allowed.')); $smarty->assign('dupe', TRUE); } // check if errors exist with data, if so print results and die. if ($logger->isErr() || !PommoValidate::subscriberData($subscriber['data'], array('active' => FALSE))) { $smarty->assign('back', TRUE); $smarty->display('user/process.tpl'); Pommo::kill(); } $comments = isset($_POST['comments']) ? substr($_POST['comments'], 0, 255) : false; /********************************** ADD SUBSCRIBER *********************************/ $config = PommoAPI::configGet(array('site_success', 'site_confirm', 'list_confirm', 'notices')); $notices = unserialize($config['notices']); Pommo::requireOnce($pommo->_baseDir . 'inc/helpers/messages.php'); if ($config['list_confirm'] == 'on') { // email confirmation required. // add user as "pending" $subscriber['pending_code'] = PommoHelper::makeCode();
} if ($_REQUEST['code'] != PommoSubscriber::getActCode($subscriber)) { Pommo::kill(Pommo::_T('Invalid activation code.')); } // check if we have pending request if (PommoPending::isPending($subscriber['id'])) { $input = urlencode(serialize(array('Email' => $_POST['Email']))); Pommo::redirect('pending.php?input=' . $input); } $config = PommoAPI::configGet(array('notices')); $notices = unserialize($config['notices']); if (!isset($_POST['d'])) { $smarty->assign('d', $subscriber['data']); } // check for an update + validate new subscriber info (also converts dates to ints) if (!empty($_POST['update']) && PommoValidate::subscriberData($_POST['d'])) { $newsub = array('id' => $subscriber['id'], 'email' => $subscriber['email'], 'data' => $_POST['d']); if (!empty($_POST['newemail'])) { // if change in email, validate and send confirmation of update if ($_POST['newemail'] != $_POST['newemail2']) { $logger->addErr(Pommo::_T('Emails must match.')); } elseif (!PommoHelper::isEmail($_POST['newemail'])) { $logger->addErr(Pommo::_T('Invalid Email Address')); } elseif (PommoHelper::isDupe($_POST['newemail'])) { $logger->addMsg(Pommo::_T('Email address already exists. Duplicates are not allowed.')); } else { $newsub['email'] = $_POST['newemail']; $code = PommoPending::add($newsub, 'change'); if (!$code) { die('Failed to Generate Pending Subscriber Code'); }