returns the activation code for the passed subscriber
public static getActCode ( $subscriber ) |
public static function replace(&$msg, &$s, &$personalizations) { $body = $msg; foreach ($personalizations as $p) { // lookup replace string switch (strtolower($p['field'])) { case 'email': $replace = $s['email']; break; case 'ip': $replace = $s['ip']; break; case 'registered': $replace = $s['registered']; break; case '!unsubscribe': $replace = Pommo::$_http . Pommo::$_baseUrl . 'update.php?email=' . $s['email'] . '&code=' . Pommo_Subscribers::getActCode($s); break; case '!weblink': $replace = Pommo::$_http . Pommo::$_baseUrl . 'mailings.php?mail_id=' . $_GET['id'] . '&email=' . $s['email'] . '&code=' . Pommo_Subscribers::getActCode($s); break; case '!subscriber_id': $replace = $s['id']; break; case '!mailing_id': $replace = $_GET['id']; break; default: $replace = $s['data'][$p['field_id']]; break; } // attempt to add default if replacement is empty if (empty($replace)) { $replace = $p['default']; } $body = str_replace($p['search'], $replace, $body); } return $body; }
SETUP TEMPLATE, PAGE *********************************/ require_once Pommo::$_baseDir . 'classes/Pommo_Template.php'; $smarty = new Pommo_Template(); // make sure email/login is valid $subscriber = current(Pommo_Subscribers::get(array('email' => empty($_REQUEST['email']) ? '0' : $_REQUEST['email'], 'status' => 1))); if (empty($subscriber)) { Pommo::redirect('login.php'); } // see if an anctivation email was sent to this subscriber in the last 2 minutes; $query = "\n\tSELECT \n\t\t*\n\tFROM \n\t\t" . $dbo->table['scratch'] . "\n\tWHERE\n\t\t`type`=1\n\t\tAND `int`=%i\n\t\tAND `time` > (NOW() - INTERVAL 2 MINUTE)\n\tLIMIT 1"; $query = $dbo->prepare($query, array($subscriber['id'])); $test = $dbo->query($query, 0); // attempt to send activation code if once has not recently been sent if (empty($test)) { $code = Pommo_Subscribers::getActCode($subscriber); if (Pommo_Helper_Messages::sendMessage(array('to' => $subscriber['email'], 'code' => $code, 'type' => 'activate'))) { $smarty->assign('sent', true); // timestamp this activation email $query = "\n\t\t\tINSERT INTO " . $dbo->table['scratch'] . "\n\t\t\tSET\n\t\t\t\t`type`=1,\n\t\t\t\t`int`=%i"; $query = $dbo->prepare($query, array($subscriber['id'])); $dbo->query($query); // remove ALL activation email timestamps older than 2 minutes $query = "\n\t\t\tDELETE FROM \n\t\t\t\t" . $dbo->table['scratch'] . "\n\t\t\tWHERE\n\t\t\t\t`type`=1\n\t\t\t\tAND `time` < (NOW() - INTERVAL 2 MINUTE)"; $query = $dbo->prepare($query, array()); $dbo->query($query); } } else { $smarty->assign('sent', false); } $smarty->assign('email', $subscriber['email']);
Pommo::init(array('authLevel' => 0, 'noSession' => true)); $logger =& Pommo::$_logger; $dbo =& Pommo::$_dbo; /********************************** SETUP TEMPLATE, PAGE *********************************/ require_once Pommo::$_baseDir . 'classes/Pommo_Template.php'; $view = new Pommo_Template(); // Prepare for subscriber form -- load in fields + POST/Saved Subscribe Form $view->prepareForSubscribeForm(); // fetch the subscriber, validate code $subscriber = current(Pommo_Subscribers::get(array('email' => empty($_REQUEST['email']) ? '0' : $_REQUEST['email'], 'status' => 1))); if (empty($subscriber)) { Pommo::redirect('login.php'); } if ($_REQUEST['code'] != Pommo_Subscribers::getActCode($subscriber)) { Pommo::kill(Pommo::_T('Invalid activation code.')); } // check if we have pending request if (Pommo_Pending::isPending($subscriber['id'])) { $input = urlencode(serialize(array('Email' => $_POST['Email']))); Pommo::redirect('pending.php?input=' . $input); } $config = Pommo_Api::configGet(array('notices')); $notices = unserialize($config['notices']); if (!isset($_POST['d'])) { $view->assign('d', $subscriber['data']); } // check for an update + validate new subscriber info (also converts dates to ints) if (!empty($_POST['update']) && Pommo_Validate::subscriberData($_POST['d'])) { $newsub = array('id' => $subscriber['id'], 'email' => $subscriber['email'], 'data' => $_POST['d']);
$logger =& Pommo::$_logger; $dbo =& Pommo::$_dbo; /** SET PAGE STATE * limit - # of mailings per page * sort - Sorting of Mailings [subject, started] * order - Order Type (ascending - ASC /descending - DESC) */ // Initialize page state with default values overriden by those held in $_REQUEST $state =& Pommo_Api::stateInit('mailings_history', array('limit' => 100, 'sort' => 'finished', 'order' => 'asc', 'page' => 1), $_REQUEST); // if mail_id is passed, display the mailing. if (isset($_GET['mail_id']) && is_numeric($_GET['mail_id'])) { $input = current(Pommo_Mailing::get(array('id' => $_GET['mail_id']))); // attempt personalizations if (isset($_GET['email']) && isset($_GET['code'])) { $subscriber = current(Pommo_Subscribers::get(array('email' => $_GET['email'], 'status' => 1))); if ($_GET['code'] == Pommo_Subscribers::getActCode($subscriber)) { require_once Pommo::$_baseDir . 'classes/Pommo_Helper_Personalize.php'; // require once here so that mailer can use $matches = array(); preg_match('/\\[\\[[^\\]]+]]/', $input['body'], $matches); if (!empty($matches)) { $pBody = Pommo_Helper_Personalize::search($input['body']); $input['body'] = Pommo_Helper_Personalize::replace($input['body'], $subscriber, $pBody); } preg_match('/\\[\\[[^\\]]+]]/', $input['altbody'], $matches); if (!empty($matches)) { $pAltBody = Pommo_Helper_Personalize::search($input['altbody']); $input['altbody'] = Pommo_Helper_Personalize::replace($input['altbody'], $subscriber, $pAltBody); } } }