Beispiel #1
0
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;
 }
Beispiel #3
0
 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
Beispiel #6
0
 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;
 }
Beispiel #7
0
$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;
/**********************************
Beispiel #8
0
    $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');
            }
        }