root/trunk/gui/admin/circular.php

Revision 1330, 7.1 kB (checked in by scitech, 3 months ago)

Fixed #1461: Call-time pass-by-reference has been deprecated

Line 
1 <?php
2 /**
3  * ispCP ω (OMEGA) a Virtual Hosting Control System
4  *
5  * @copyright     2001-2006 by moleSoftware GmbH
6  * @copyright     2006-2008 by ispCP | http://isp-control.net
7  * @version     SVN: $Id$
8  * @link         http://isp-control.net
9  * @author         ispCP Team
10  *
11  * @license
12  *   This program is free software; you can redistribute it and/or modify it under
13  *   the terms of the MPL General Public License as published by the Free Software
14  *   Foundation; either version 1.1 of the License, or (at your option) any later
15  *   version.
16  *   You should have received a copy of the MPL Mozilla Public License along with
17  *   this program; if not, write to the Open Source Initiative (OSI)
18  *   http://opensource.org | osi@opensource.org
19  */
20
21 require '../include/ispcp-lib.php';
22
23 check_login(__FILE__);
24
25 $tpl = new pTemplate();
26 $tpl->define_dynamic('page', Config::get('ADMIN_TEMPLATE_PATH') . '/circular.tpl');
27 $tpl->define_dynamic('page_message', 'page');
28 $tpl->define_dynamic('hosting_plans', 'page');
29
30 $theme_color = Config::get('USER_INITIAL_THEME');
31
32 $tpl->assign(
33         array(
34             'TR_ADMIN_CIRCULAR_PAGE_TITLE' => tr('ispCP - Admin - Email Marketing'),
35             'THEME_COLOR_PATH' => "../themes/$theme_color",
36             'THEME_CHARSET' => tr('encoding'),
37             'ISP_LOGO' => get_logo($_SESSION['user_id'])
38             )
39         );
40
41 function gen_page_data (&$tpl, &$sql) {
42
43     if (isset($_POST['uaction']) && $_POST['uaction'] === 'send_circular') {
44         $tpl->assign(
45                 array(
46                     'MESSAGE_SUBJECT' => clean_input($_POST['msg_subject'], false),
47                     'MESSAGE_TEXT' => clean_input($_POST['msg_text'], false),
48                     'SENDER_EMAIL' => clean_input($_POST['sender_email'], false),
49                     'SENDER_NAME' => clean_input($_POST['sender_name'], false)
50                     )
51                 );
52     } else {
53         $user_id = $_SESSION['user_id'];
54
55         $query = <<<SQL_QUERY
56             select
57                 fname, lname, email
58             from
59                 admin
60             where
61                 admin_id = ?
62             group by
63                 email
64 SQL_QUERY;
65
66         $rs = exec_query($sql, $query, array($user_id));
67
68         if (isset($rs->fields['fname']) && isset($rs->fields['lname'])) {
69             $sender_name = $rs->fields['fname'] . " " . $rs->fields['lname'];
70         } elseif(isset($rs->fields['fname']) && !isset($rs->fields['lname'])) {
71             $sender_name = $rs->fields['fname'];
72         } elseif(!isset($rs->fields['fname']) && isset($rs->fields['lname'])) {
73             $sender_name = $rs->fields['lname'];
74         } else {
75             $sender_name = "";
76         }
77
78         $tpl->assign(
79                 array(
80                     'MESSAGE_SUBJECT' => '',
81                     'MESSAGE_TEXT' => '',
82                     'SENDER_EMAIL' => $rs->fields['email'],
83                     'SENDER_NAME' => $sender_name
84                     )
85                 );
86     }
87 }
88
89 function check_user_data (&$tpl) {
90     global $msg_subject, $msg_text, $sender_email, $sender_name;
91
92     $err_message = '';
93
94     $msg_subject = clean_input($_POST['msg_subject'], false);
95     $msg_text = clean_input($_POST['msg_text'], false);
96     $sender_email = clean_input($_POST['sender_email'], false);
97     $sender_name = clean_input($_POST['sender_name'], false);
98
99     if (empty($msg_subject)) {
100         $err_message .= tr('Please specify a message subject!') . '<br />';
101     }
102     if (empty($msg_text)) {
103         $err_message .= tr('Please specify a message content!') . '<br />';
104     }
105     if (empty($sender_name)) {
106         $err_message .= tr('Please specify a sender name!') . '<br />';
107     }
108     if (empty($sender_email)) {
109         $err_message .= tr('Please specify a sender email!') . '<br />';
110     } else if (!chk_email($sender_email)) {
111         $err_message .= tr("Incorrect email length or syntax!");
112     }
113
114     if (!empty($err_message)) {
115         set_page_message($err_message);
116
117         return false;
118     } else {
119         return true;
120     }
121 }
122
123 function send_reseller_message (&$sql) {
124
125     $user_id = $_SESSION['user_id'];
126
127     $msg_subject = clean_input($_POST['msg_subject'], false);
128     $msg_text = clean_input($_POST['msg_text'], false);
129     $sender_email = clean_input($_POST['sender_email'], false);
130     $sender_name = clean_input($_POST['sender_name'], false);
131
132     $query = <<<SQL_QUERY
133         select
134             admin_id, fname, lname, email
135         from
136             admin
137         where
138             admin_type = 'reseller' and created_by = ?
139         group by
140             email
141 SQL_QUERY;
142
143     $rs = exec_query($sql, $query, array($user_id));
144
145     while (!$rs->EOF) {
146         if ($_POST['rcpt_to'] == 'rslrs' || $_POST['rcpt_to'] == 'usrs_rslrs') {
147             $to = encode($rs->fields['fname'] . " " . $rs->fields['lname']) . " <" . $rs->fields['email'] . ">";
148             send_circular_email($to, encode($sender_name) . " <$sender_email>", stripslashes($msg_subject),
149                 stripslashes($msg_text));
150         }
151
152         if ($_POST['rcpt_to'] == 'usrs' || $_POST['rcpt_to'] == 'usrs_rslrs') {
153             send_reseller_users_message($sql, $rs->fields['admin_id']);
154         }
155
156         $rs->MoveNext();
157     }
158
159     set_page_message(tr('You send email to your users successfully!'));
160     write_log('Mass email was sent from ' . $sender_name . '<' . $sender_email . '>!');
161 }
162
163 function send_circular(&$tpl, &$sql) {
164     if (isset($_POST['uaction']) && $_POST['uaction'] === 'send_circular') {
165         if (check_user_data($tpl)) {
166             send_reseller_message($sql);
167             unset($_POST['uaction']);
168             gen_page_data($tpl, $sql);
169         }
170     }
171 }
172
173 function send_reseller_users_message (&$sql, $admin_id) {
174
175     $msg_subject = clean_input($_POST['msg_subject'], false);
176     $msg_text = clean_input($_POST['msg_text'], false);
177     $sender_email = clean_input($_POST['sender_email'], false);
178     $sender_name = clean_input($_POST['sender_name'], false);
179
180     $query = <<<SQL_QUERY
181         select
182             fname, lname, email
183         from
184             admin
185         where
186             admin_type = 'user' and created_by = ?
187         group by
188             email
189 SQL_QUERY;
190
191     $rs = exec_query($sql, $query, array($admin_id));
192
193     while (!$rs->EOF) {
194         $to = "\"" . encode($rs->fields['fname'] . " " . $rs->fields['lname']) . "\" <" . $rs->fields['email'] . ">";
195         send_circular_email($to, "\"" . encode($sender_name) . "\" <" . $sender_email . ">", stripslashes($msg_subject), stripslashes($msg_text));
196         $rs->MoveNext();
197     }
198 }
199
200 function send_circular_email ($to, $from, $subject, $message) {
201     $subject = encode($subject);
202
203     $headers  = "MIME-Version: 1.0\nContent-Type: text/plain; charset=utf-8\nContent-Transfer-Encoding: 8bit\n";
204     $headers .= "From: " . $from . "\n";
205     $headers .= "X-Mailer: ispCP marketing mailer";
206
207     mail($to, $subject, $message, $headers);
208 }
209
210 /*
211  *
212  * static page messages.
213  *
214  */
215 gen_admin_mainmenu($tpl, Config::get('ADMIN_TEMPLATE_PATH') . '/main_menu_users_manage.tpl');
216 gen_admin_menu($tpl, Config::get('ADMIN_TEMPLATE_PATH') . '/menu_users_manage.tpl');
217
218 $tpl->assign(
219         array(
220             'TR_CIRCULAR' => tr('Email marketing'),
221             'TR_CORE_DATA' => tr('Core data'),
222             'TR_SEND_TO' => tr('Send message to'),
223             'TR_ALL_USERS' => tr('All users'),
224             'TR_ALL_RESELLERS' => tr('All resellers'),
225             'TR_ALL_USERS_AND_RESELLERS' => tr('All users & resellers'),
226             'TR_MESSAGE_SUBJECT' => tr('Message subject'),
227             'TR_MESSAGE_TEXT' => tr('Message'),
228             'TR_ADDITIONAL_DATA' => tr('Additional data'),
229             'TR_SENDER_EMAIL' => tr('Senders email'),
230             'TR_SENDER_NAME' => tr('Senders name'),
231             'TR_SEND_MESSAGE' => tr('Send message'),
232             'TR_SENDER_NAME' => tr('Senders name'),
233             )
234         );
235
236 send_circular($tpl, $sql);
237
238 gen_page_data ($tpl, $sql);
239
240 gen_page_message($tpl);
241
242 $tpl->parse('PAGE', 'page');
243 $tpl->prnt();
244
245 if (Config::get('DUMP_GUI_DEBUG'))
246     dump_gui_debug();
247
248 unset_messages();
249
250 ?>
Note: See TracBrowser for help on using the browser.