function check_notifyMails($value, $empty, &$params, &$formvars) { $mails = PommoHelper::trimArray(explode(',', $value)); $ret = true; foreach ($mails as $mail) { if (!empty($mail) && !PommoHelper::isEmail($mail)) { $ret = false; } } return $ret; }
function validate(&$in) { global $pommo; $logger =& $pommo->_logger; $invalid = array(); if (!PommoHelper::isEmail($in['email'])) { $invalid[] = 'email'; } if (!is_numeric($in['registered'])) { $invalid[] = 'registered'; } if (!empty($in['flag']) && !is_numeric($in['flag'])) { $invalid[] = 'flag'; } if (!is_array($in['data'])) { $invalid[] = 'data'; } switch ($in['status']) { case 0: case 1: case 2: break; default: $invalid[] = 'status'; } if ($in['status'] == 2) { if (empty($in['pending_code'])) { $invalid[] = 'pending_code'; } switch ($in['pending_type']) { case 'add': case 'del': case 'change': case 'password': break; default: $invalid[] = 'pending_type'; } } if (!empty($invalid)) { $logger->addErr("Subscriber failed validation on; " . implode(',', $invalid), 1); return false; } return true; }
function validate() { if (empty($this->_fromname)) { $this->logger->addMsg("Name cannot be blank."); return false; } if (!PommoHelper::isEmail($this->_fromemail)) { $this->logger->addMsg("From email must be a valid email address."); return false; } if (!PommoHelper::isEmail($this->_frombounce)) { $this->logger->addMsg("Bounce email must be a valid email address."); return false; } if (empty($this->_subject)) { $this->logger->addMsg("Subject cannot be blank."); return false; } if (empty($this->_body)) { $this->logger->addMsg("Message content cannot be blank."); return false; } return true; }
Pommo::requireOnce($pommo->_baseDir . 'inc/helpers/import.php'); Pommo::requireOnce($pommo->_baseDir . 'inc/helpers/subscribers.php'); Pommo::requireOnce($pommo->_baseDir . 'inc/helpers/validate.php'); $pommo->init(array('keep' => TRUE)); $logger =& $pommo->_logger; $dbo =& $pommo->_dbo; $dupes = $tally = $flagged = 0; $fp = fopen($pommo->_workDir . '/import.csv', 'r') or die('Unable to open CSV file'); $includeUnsubscribed = isset($_REQUEST['excludeUnsubscribed']) ? false : true; while (($row = fgetcsv($fp, 2048, ',', '"')) !== FALSE) { $subscriber = array('email' => false, 'registered' => time(), 'ip' => $_SERVER['REMOTE_ADDR'], 'status' => 1, 'data' => array()); foreach ($row as $key => $col) { $fid =& $_POST['f'][$key]; if (is_numeric($fid)) { $subscriber['data'][$fid] = $col; } 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
$fp =& fopen($_FILES[$fname]['tmp_name'], "r"); } elseif (!empty($_POST['box'])) { $str =& $_POST['box']; // wrap $c as a file stream -- requires PHP 4.3.2 // for early versions investigate using tmpfile() -- efficient? stream_wrapper_register("pommoCSV", "PommoCSVStream") or Pommo::kill('Failed to register pommoCSV'); $fp = fopen("pommoCSV://str", "r+"); $box = true; } if (is_resource($fp)) { if ($_POST['type'] == 'txt') { // list of emails $a = array(); while (($data = fgetcsv($fp, 2048, ',', '"')) !== FALSE) { foreach ($data as $email) { if (PommoHelper::isEmail($email)) { array_push($a, $email); } } } // remove dupes $includeUnsubscribed = isset($_REQUEST['excludeUnsubscribed']) ? false : true; $dupes =& PommoHelper::isDupe($a, $includeUnsubscribed); if (!$dupes) { $dupes = array(); } $emails = array_diff($a, $dupes); $pommo->set(array('emails' => $emails, 'dupes' => count($dupes))); Pommo::redirect('import_txt.php'); } elseif ($_POST['type'] == 'csv') { // csv of subscriber data, store first 10 for preview
function validate(&$in) { global $pommo; $logger =& $pommo->_logger; $invalid = array(); if (empty($in['fromemail']) || !PommoHelper::isEmail($in['fromemail'])) { $invalid[] = 'fromemail'; } if (empty($in['frombounce']) || !PommoHelper::isEmail($in['frombounce'])) { $invalid[] = 'frombounce'; } if (empty($in['subject'])) { $invalid[] = 'subject'; } if (empty($in['body'])) { $invalid[] = 'body'; } if (!is_numeric($in['tally']) || $in['tally'] < 1) { $invalid[] = 'subscriberCount'; } if (!empty($in['start']) && !is_numeric($in['start'])) { $invalid[] = 'started'; } if (!empty($in['end']) && !is_numeric($in['end'])) { $invalid[] = 'finished'; } if (!empty($in['sent']) && !is_numeric($in['sent'])) { $invalid[] = 'sent'; } switch ($in['status']) { case 0: case 1: case 2: break; default: $invalid[] = 'status'; } if ($in['status'] == 1) { switch ($in['command']) { case 'none': case 'restart': case 'stop': break; default: $invalid[] = 'command'; } if (!empty($in['serial']) && !is_numeric($in['serial'])) { $invalid[] = 'serial'; } switch ($in['current_status']) { case 'started': case 'stopped': break; default: $invalid[] = 'current_status'; } } if (!empty($invalid)) { $logger->addErr("Mailing failed validation on; " . implode(',', $invalid), 1); return false; } return true; }
$smarty = new PommoTemplate(); // attempt to detect if referer was set // TODO; enable HTTP_REFERER after stripping out ?input= tags. These will continually repeat //$referer = (!empty($_POST['bmReferer'])) ? $_POST['bmReferer'] : $_SERVER['HTTP_REFERER']; $referer = !empty($_POST['bmReferer']) ? $_POST['bmReferer'] : $pommo->_http . $pommo->_baseUrl . 'user/subscribe.php'; // append stored input $smarty->assign('referer', $referer . '?input=' . urlencode(serialize($_POST))); /********************************** VALIDATE INPUT *********************************/ 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; /**********************************
$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'); } Pommo::requireOnce($pommo->_baseDir . 'inc/helpers/messages.php'); PommoHelperMessages::sendMessage(array('to' => $newsub['email'], 'code' => $code, 'type' => 'update')); if (isset($notices['update']) && $notices['update'] == 'on') { PommoHelperMessages::notify($notices, $newsub, 'update'); } }