function add_guest() { global $db, $config, $t; settype($vars, 'array'); $errors = array(); $vars = get_input_vars(); //check member if (!$vars['e'] && $vars['s']) { $member_code = split(":", $vars['s']); $member_code = intval($member_code[0]); $q = $db->query($s = "\n SELECT guest_email\n FROM {$db->config[prefix]}newsletter_guest\n WHERE guest_id='" . $member_code . "'\n "); $row = mysql_fetch_assoc($q); if ($row['guest_email']) { $vars['e'] = $row['guest_email']; } } $is_member = $db->users_find_by_string($vars['e'], 'email', 1) ? true : false; if ($vars['e'] && $is_member) { $t->display('add_guest_failed_email.html'); exit; } else { $security_code = ''; $securitycode_expire = ''; if (!$config['dont_confirm_guests'] && $vars['s'] == '') { //generate a security code $acceptedChars = 'azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN0123456789'; $max = strlen($acceptedChars) - 1; $security_code = ""; for ($i = 0; $i < 16; $i++) { $security_code .= $acceptedChars[mt_rand(0, $max)]; } $security_code = $security_code . time(); $security_code = md5($security_code); $security_code = substr($security_code, 0, 16); $hours = 48; $securitycode_expire = date("Y-m-d H:i:s", time() + $hours * 60 * 60); } if (!$config['dont_confirm_guests'] && $vars['s'] != '') { //check security_code $security_code = $vars['s']; $member_code = split(":", $security_code); $security_code = $member_code[1]; $member_code = intval($member_code[0]); $unix_timestamp = time(); $q = $db->query($s = "\n SELECT guest_id, security_code, UNIX_TIMESTAMP(securitycode_expire)\n FROM {$db->config[prefix]}newsletter_guest\n WHERE guest_id='" . $member_code . "'\n "); list($guest_id, $guest_code, $guest_expire) = mysql_fetch_row($q); if (!$guest_id || $guest_code != '' && $guest_code != $security_code || $guest_expire > 0 && $guest_expire - $unix_timestamp < 0) { //if wrong security code $t->assign('guest_page', 'newsletter.php'); $t->display('add_guest_failed.html'); exit; } else { $q = $db->query("\n UPDATE {$db->config[prefix]}newsletter_guest\n SET security_code='', securitycode_expire=''\n WHERE guest_id='" . $guest_id . "'\n "); } $q = $db->query("\n SELECT COUNT(*)\n FROM {$db->config[prefix]}newsletter_guest_subscriptions\n WHERE guest_id='" . $member_code . "'\n AND security_code='" . $db->escape($security_code) . "'\n AND (UNIX_TIMESTAMP(securitycode_expire) - {$unix_timestamp}) > 0\n "); $r = mysql_fetch_row($q); if ($r[0] > 0) { //delete old (confirmed) subscriptions $q = $db->query("\n DELETE FROM {$db->config[prefix]}newsletter_guest_subscriptions\n WHERE guest_id='" . $member_code . "'\n AND (security_code='' OR security_code IS NULL)\n "); //activate new subscriptions $q = $db->query("\n UPDATE {$db->config[prefix]}newsletter_guest_subscriptions\n SET security_code='', securitycode_expire=''\n WHERE guest_id='" . $member_code . "'\n AND security_code='" . $db->escape($security_code) . "'\n AND (UNIX_TIMESTAMP(securitycode_expire) - {$unix_timestamp}) > 0\n "); } $t->display('add_guest_complete.html'); //html_redirect("newsletter.php", false, _TPL_NEWSLETTER_INFO_SAVED, _TPL_NEWSLETTER_INFO_UPDATED); exit; } //check guest $guest = $db->get_guest_by_email($vars['e']); if (count($guest) == 0 || !$guest['guest_id']) { //check required input vars if (count($vars['tr']) == 0) { $errors[] = _TPL_NEWSLETTER_REQUIRED_THREAD; } if (!strlen($vars['n'])) { $errors[] = _TPL_NEWSLETTER_REQUIRED_NAME; } if (!strlen($vars['e']) || !check_email($vars['e'])) { $errors[] = _TPL_NEWSLETTER_REQUIRED_EMAIL; } if ($errors) { $t->assign('error', $errors); show_guest_form($vars); return; } //add guest $q = $db->query($s = "\n INSERT INTO {$db->config['prefix']}newsletter_guest\n (guest_id,guest_name,guest_email,security_code,securitycode_expire)\n VALUES (null, '" . $db->escape($vars['n']) . "', '" . $db->escape($vars['e']) . "', '" . $db->escape($security_code) . "', '{$securitycode_expire}')\n "); $guest_id = mysql_insert_id($db->conn); } else { $guest_id = $guest['guest_id']; if ($security_code) { $db->query($s = "\n UPDATE {$db->config['prefix']}newsletter_guest\n set guest_name='" . $db->escape($vars['n']) . "',security_code='" . $db->escape($security_code) . "',securitycode_expire='{$securitycode_expire}'\n WHERE\n guest_id='{$guest_id}'"); } } if (count($vars['tr']) > 0) { if ($config['dont_confirm_guests']) { $db->delete_guest_threads($guest_id); } $db->add_guest_threads($guest_id, $vars['tr'], $security_code, $securitycode_expire); } if (!$config['dont_confirm_guests'] && $vars['s'] == '') { //send a confirmation email $t->assign('name', htmlentities($vars['n'])); $t->assign('link', "{$config['root_url']}/newsletter.php?a=add_guest&s=" . $guest_id . ":" . $security_code); $et =& new aMemberEmailTemplate(); $et->name = "verify_guest"; $t->assign('config', $config); $et->lang = guess_language(); // load and find templated if (!$et->find_applicable()) { trigger_error("Cannot find applicable e-mail template for [{$et->name},{$et->lang},{$et->product_id},{$et->day}]", E_USER_WARNING); exit; } global $_AMEMBER_TEMPLATE; $_AMEMBER_TEMPLATE['text'] = $et->get_smarty_template(); $parsed_mail = $t->fetch('memory:text'); unset($_AMEMBER_TEMPLATE['text']); mail_customer($vars['e'], $parsed_mail, null, null, null, false, $vars['n']); $t->display('add_guest_ok.html'); exit; } } $t->display('add_guest_complete.html'); //html_redirect("newsletter.php", false, _TPL_NEWSLETTER_INFO_SAVED, _TPL_NEWSLETTER_INFO_UPDATED); exit; }
function amail_aweber_unsubscribe($listname, $member, $whyunsubscribe, $nocc = false, $force = false) { global $db, $plugin_config, $config; // // The Input // if (empty($listname)) { return; } // cannot unsubscribe from an empty list if (empty($member)) { return; } // cannot subscribe a non-existant member if (empty($member['member_id'])) { return; } // ditto if (empty($member['email'])) { return; } // cannot unsubscribe nobody $isactive = amail_aweber_still_active($listname, $member); // still supposed to be active on this list? if ($isactive && !$force) { $db->log_error('aMail for AWeber: Cannot unsubscribe because member should still be active on ' . $listname); return; } $memberemail = trim(strtolower($member['email'])); // make sure it is lowercase // // The Plugin... // $this_config = $plugin_config['protect']['amail_aweber']; if (empty($this_config)) { return; } // no need to go on if this has not got data if (!empty($this_config['debug'])) { $db->log_error('aMail for AWeber: amail_aweber_unsubscribe:' . $listname . ':' . $memberemail . ':' . $whyunsubscribe); } if (empty($this_config['listname'])) { return; } // plugin must not be fully configured yet if (!empty($this_config['noremove'])) { return; } // if we are not removing subscribers then we are done $ccadmin = trim($this_config['ccadmin']); // send a copy of the email to the admin? $ccguest = trim($this_config['ccguest']); // send a copy of the email to a guest $debug = trim($this_config['debug']); // print debug statements $donotsend = trim($this_config['donotsend']); // do we want to prevent emails going to AWeber? $aweber_default_listname = trim($this_config['listname']); // do no make this into an array // // Mail to AWeber... // $email = $listname . '@aweber.com'; $message = "amember unsubscribe request"; $subject = "REMOVE#" . $memberemail . "#" . $whyunsubscribe . "#" . $listname; $bcc = array(); if (empty($nocc) && (!empty($ccadmin) || !empty($donotsend))) { mail_customer($config['admin_email'], $message, $subject); $bcc[] = $config['admin_email']; } if (!empty($ccguest)) { // mail_customer($ccguest, $message, $subject); $bcc[] = $ccguest; } if (empty($donosend)) { $db->log_error('aMail for AWeber: Unsubscribing:' . $listname . ': ' . $memberemail . ': ' . $whyunsubscribe); // mail_customer($email, $message, $subject, 0, '', 0, "", '0', '0', $bcc); } else { $db->log_error('aMail for AWeber: NOT Unsubscribing:' . $listname . ': ' . $memberemail . ': ' . $whyunsubscribe . ' because the plugin says not to!'); } }
function send_mails() { global $t, $config, $db, $vars; $sess_vars = $_SESSION['amember_send_mails']; if ($vars['to_archive'] == '1') { //add a message to archive $threads = ""; if (count($sess_vars['newsletter_thread']) > 0) { $threads = "," . implode(",", $sess_vars['newsletter_thread']) . ","; } $q = $db->query($s = "\n INSERT INTO {$db->config['prefix']}newsletter_archive\n (archive_id,threads,subject,message,add_date,is_html)\n VALUES\n (null, '{$threads}', '" . $db->escape(get_email_subject($vars, $user)) . "', '" . $db->escape(get_email_message($vars, $user)) . "', NOW(), '" . $db->escape($vars['is_html']) . "')\n "); } if ($vars['to_send'] == '1') { //send a messages $start = intval($vars['start']); $count = 50; // 50 emails per page call //////////////////////////////////////////// $vars = $sess_vars; $users = get_target_users($start, $count, $total); if ($start == 0) { admin_log("Broadcast E-Mail Message [{$vars[subj]}] sent to {$total} users"); } // send emails to all users $attachments = $vars['files']; foreach ($users as $user) { $preview = array('text' => get_email_message($vars, $user), 'subj' => get_email_subject($vars, $user), 'to' => get_email_to($vars, $user), 'is_html' => $vars['is_html']); if (isset($user['is_guest']) && $user['is_guest'] == '1') { $is_guest = '1'; } else { $is_guest = '0'; } if (count($sess_vars['newsletter_thread']) > 0) { $is_newsletter = '1'; } else { $is_newsletter = '0'; } mail_customer($preview['to'], $preview['text'], $preview['subj'], $preview['is_html'], $attachments, $add_unsubscribe = 1, '', $is_guest, $is_newsletter); } $newstart = $start + $count; $left = $total - $newstart; if (!$users || $left <= 0) { $x = $start + count($users); clean_attachments(); unset($_SESSION['amember_send_mails']); admin_html_redirect("email.php?count={$x}&action=sent", "Sending emails (finished)", "Sending emails to users ... cleanup operations"); } else { admin_html_redirect("email.php?start={$newstart}&action=send&to_send=1", "Sending emails (please don't close browser window)", "Sending emails to users " . ($start + 1) . "-{$newstart} ({$total} total, {$left} e-mails left)"); } } else { unset($_SESSION['amember_send_mails']); admin_html_redirect("email.php", "Sending emails (finished)", "Sending emails to users ... cleanup operations"); } }
function mail_admin($text, $subject = '') { global $config; $email = $config['admin_email']; if ($config['copy_admin_email']) { $bcc = preg_split("/[,;]/", $config['copy_admin_email']); } else { $bcc = ""; } mail_customer($email, $text, $subject, 0, '', 0, $config['site_title'] . " Admin", 0, 0, $bcc); }
function email_to_user_from_admin() { global $db, $config, $t, $_AMEMBER_TEMPLATE; check_demo(); $vars = get_input_vars(); $u = $db->get_user($vars['member_id']); $tmp =& new_smarty(); $tmp->assign('user', $u); $_AMEMBER_TEMPLATE['text'] = $vars['text']; $vars['text'] = $tmp->fetch('memory:text'); $_AMEMBER_TEMPLATE['text'] = $vars['subject']; $vars['subject'] = $tmp->fetch('memory:text'); mail_customer($u['email'], $vars['text'], $vars['subject'], 0, '', 0, $u['name_f'] . ' ' . $u['name_l']); $t->assign('member_id', $vars['member_id']); $t->assign('msg', "EMail Sent to customer"); $t->assign('link', "users.php?action=actions&member_id={$vars['member_id']}"); $t->display("admin/user_saved.html"); }