示例#1
0
 /**
  * Generate box output
  * Assign box_poll_all template with poll and answers
  * Sets local language
  *
  * @param	array			$params
  */
 function generate_output($params = '')
 {
     $this->set_configuration();
     $this->newsletter_list_all = new newsletter_list();
     $this->newsletter = $this->newsletter_list_all->get_all_newsletter();
     $this->set_template($params);
     //$this->set_lang();
     $this->_template->assign('newsletter_list', $this->newsletter);
 }
 function _list_output($assign_list = true)
 {
     $sm = vivvo_lite_site::get_instance();
     $um = $sm->get_url_manager();
     $list_output = $this->load_template($this->_template_root . 'newsletter.xml');
     $user_manager = $sm->get_user_manager();
     $gl = $user_manager->get_group_list();
     $groups = $gl->get_all_groups();
     $list_output->assign('group_list', $groups);
     if ($um->isset_param('action') && $sm->action_status == false) {
         require_once dirname(__FILE__) . '/newsletter.class.php';
         $in_newsletter = $um->get_param_regexp('/^PLUGIN_NEWSLETTER_/');
         $current_newsletter = new newsletter(null, $in_newsletter);
         $list_output->assign('newsletter', $current_newsletter);
     } elseif ($um->isset_param('search_id')) {
         require_once dirname(__FILE__) . '/newsletter.class.php';
         $nl = new newsletter_list();
         $newsletter = $nl->get_newsletter_by_id($um->get_param('search_id'));
         if ($newsletter) {
             $list_output->assign('newsletter', $newsletter);
         }
     }
     return $list_output;
 }
    function send_newsletter($newsletter_id)
    {
        $sm = vivvo_lite_site::get_instance();
        $db = $sm->get_db();
        if ($sm->user) {
            if ($sm->user->is_admin()) {
                $newsletter_list = new newsletter_list();
                $newsletter = $newsletter_list->get_newsletter_by_id($newsletter_id);
                if ($newsletter !== false) {
                    if ($newsletter->test == 1) {
                        $to = $newsletter->test_email;
                        if ($newsletter->vte_template == '1') {
                            $body_template = new template();
                            $template_sting = xml_template_node::xmlentities_decode($newsletter->body);
                            $body_template->set_string_template($template_sting);
                            $body = $body_template->get_output() . "\n\n";
                        } else {
                            $body = xml_template_node::xmlentities_decode($newsletter->body);
                        }
                        $unsubscribe_url = VIVVO_PROXY_URL . 'newsletter/index.html?&action=newsletter&cmd=subscriberUnSubscribe&dack=' . md5('test');
                        if (!preg_match('/^[^:]+:/', $unsubscribe_url)) {
                            $unsubscribe_url = VIVVO_URL . $unsubscribe_url;
                        }
                        $body = $body . "\n\n\n" . VIVVO_PLUGIN_NEWSLETTER_UNSUBSCRIBE_TEXT . "\n" . $unsubscribe_url;
                        $from = VIVVO_ADMINISTRATORS_EMAIL;
                        $search = array('(', ')', '<', '>', '@', ';', ':', '\\', '"', '.', '[', ']');
                        $replace = array(' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ');
                        $from_name = str_replace($search, $replace, VIVVO_WEBSITE_TITLE);
                        $from_name = "=?UTF-8?B?" . base64_encode($from_name) . "?=";
                        $from_params = !empty($from_name) ? '"' . $from_name . '" <' . $from . '>' : '<' . $from . '>';
                        $headers['From'] = $from_params;
                        $recipients = array();
                        $recipients[] = $to;
                        $subject = "=?UTF-8?B?" . base64_encode($newsletter->subject) . "?=";
                        $headers['Subject'] = $subject;
                        $headers['Content-Type'] = "text/plain; charset=UTF-8;";
                        if (VIVVO_EMAIL_SMTP_PHP == 1) {
                            $mail_object = new Mail();
                            $mail_object->send($to, $headers, $body);
                        } else {
                            $mail_options['driver'] = 'smtp';
                            $mail_options['host'] = VIVVO_EMAIL_SMTP_HOST;
                            $mail_options['port'] = VIVVO_EMAIL_SMTP_PORT;
                            $mail_options['localhost'] = 'localhost';
                            if (VIVVO_EMAIL_SMTP_PASSWORD != '' && VIVVO_EMAIL_SMTP_USERNAME != '') {
                                $mail_options['auth'] = true;
                                $mail_options['username'] = VIVVO_EMAIL_SMTP_USERNAME;
                                $mail_options['password'] = VIVVO_EMAIL_SMTP_PASSWORD;
                            } else {
                                $mail_options['auth'] = false;
                                $mail_options['username'] = '';
                                $mail_options['password'] = '';
                            }
                            $mail_object =& Mail::factory('smtp', $mail_options);
                            $mail_object->send($to, $headers, $body);
                        }
                    } else {
                        $container_options = array('type' => 'mdb2', 'dsn' => VIVVO_DB_TYPE . '://' . VIVVO_DB_USER . ':' . VIVVO_DB_PASSWORD . '@' . VIVVO_DB_HOST . '/' . VIVVO_DB_DATABASE, 'mail_table' => VIVVO_DB_PREFIX . 'mail_queue');
                        $mail_options['driver'] = 'smtp';
                        $mail_options['host'] = VIVVO_EMAIL_SMTP_HOST;
                        $mail_options['port'] = VIVVO_EMAIL_SMTP_PORT;
                        $mail_options['localhost'] = 'localhost';
                        if (VIVVO_EMAIL_SMTP_PASSWORD != '' && VIVVO_EMAIL_SMTP_USERNAME != '') {
                            $mail_options['auth'] = true;
                            $mail_options['username'] = VIVVO_EMAIL_SMTP_USERNAME;
                            $mail_options['password'] = VIVVO_EMAIL_SMTP_PASSWORD;
                        } else {
                            $mail_options['auth'] = false;
                            $mail_options['username'] = '';
                            $mail_options['password'] = '';
                        }
                        $mail_queue = new Mail_Queue($container_options, $mail_options);
                        $from = VIVVO_ADMINISTRATORS_EMAIL;
                        $search = array('(', ')', '<', '>', '@', ';', ':', '\\', '"', '.', '[', ']');
                        $replace = array(' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ');
                        $from_name = str_replace($search, $replace, VIVVO_WEBSITE_TITLE);
                        $from_name = "=?UTF-8?B?" . base64_encode($from_name) . "?=";
                        $from_params = !empty($from_name) ? '"' . $from_name . '" <' . $from . '>' : '<' . $from . '>';
                        if ($newsletter->vte_template == '1') {
                            $body_template = new template();
                            $template_sting = xml_template_node::xmlentities_decode($newsletter->body);
                            $body_template->set_string_template($template_sting);
                            $body = $body_template->get_output() . "\n\n";
                        } else {
                            $body = xml_template_node::xmlentities_decode($newsletter->body);
                        }
                        $groups = explode(',', $newsletter->groups);
                        foreach ($groups as $key) {
                            if ($key == -1) {
                                $res =& $db->query('SELECT email, ip, time FROM ' . VIVVO_DB_PREFIX . 'maillist WHERE `confirm` = \'1\'');
                                if (!is_a($res, 'mdb2_error')) {
                                    while ($row = $res->fetchRow(MDB2_FETCHMODE_ASSOC)) {
                                        $subject = "=?UTF-8?B?" . base64_encode($newsletter->subject) . "?=";
                                        $recipient = $row['email'];
                                        $hdrs = array('From' => $from_params, 'To' => $recipient, 'Subject' => $subject, 'Content-Type' => "text/plain; charset=UTF-8;");
                                        $body_all = $body . "\n\n\n" . VIVVO_PLUGIN_NEWSLETTER_UNSUBSCRIBE_TEXT . "\n" . VIVVO_URL . 'newsletter/index.html?action=newsletter&cmd=subscriberUnSubscribe&dack=' . md5($row['ip'] . $row['time'] . $row['email']);
                                        $mail_queue->put($from, $recipient, $hdrs, $body_all);
                                    }
                                }
                            } elseif ($key >= 0) {
                                $res = $db->query('SELECT email_address, userid, created FROM ' . VIVVO_DB_PREFIX . 'users as u
														INNER JOIN ' . VIVVO_DB_PREFIX . 'group_user  as gu
														ON gu.user_id=u.userid
														WHERE gu.group_id = \'' . $key . '\' and `subscriber` = \'1\'');
                                if (!is_a($res, 'mdb2_error')) {
                                    while ($row = $res->fetchRow(MDB2_FETCHMODE_ASSOC)) {
                                        $recipient = $row['email_address'];
                                        $subject = "=?UTF-8?B?" . base64_encode($newsletter->subject) . "?=";
                                        $hdrs = array('From' => $from_params, 'To' => $recipient, 'Subject' => $subject, 'Content-Type' => "text/plain; charset=UTF-8;");
                                        $unsubscribe_url = VIVVO_PROXY_URL . 'newsletter/index.html?action=newsletter&cmd=userUnSubscribe&dack=' . md5($row['email_address'] . $row['userid'] . $row['created']);
                                        if (!preg_match('/^[^:]+:/', $unsubscribe_url)) {
                                            $unsubscribe_url = VIVVO_URL . $unsubscribe_url;
                                        }
                                        $body_all = $body . "\n\n\n" . VIVVO_PLUGIN_NEWSLETTER_UNSUBSCRIBE_TEXT . "\n" . $unsubscribe_url;
                                        $mail_queue->put($from, $recipient, $hdrs, $body_all);
                                    }
                                }
                            }
                        }
                    }
                    return true;
                } else {
                    $this->set_error_code(10225);
                    return false;
                }
            } else {
                $this->set_error_code(10226);
                return false;
            }
        } else {
            $this->set_error_code(10227);
            return false;
        }
    }