Esempio n. 1
0
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!');
    }
}
Esempio n. 3
0
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");
    }
}
Esempio n. 4
0
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);
}
Esempio n. 5
0
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");
}