Tag for ATutor 1.6.
[atutor.git] / tools / course_email.php
1 <?php
2 /************************************************************************/
3 /* ATutor                                                                                                                               */
4 /************************************************************************/
5 /* Copyright (c) 2002-2008 by Greg Gay, Joel Kronenberg & Heidi Hazelton*/
6 /* Adaptive Technology Resource Centre / University of Toronto                  */
7 /* http://atutor.ca                                                                                                             */
8 /*                                                                                                                                              */
9 /* This program is free software. You can redistribute it and/or                */
10 /* modify it under the terms of the GNU General Public License                  */
11 /* as published by the Free Software Foundation.                                                */
12 /************************************************************************/
13 // $Id$
14
15 define('AT_INCLUDE_PATH', '../include/');
16 require (AT_INCLUDE_PATH.'vitals.inc.php');
17 authenticate(AT_PRIV_COURSE_EMAIL);
18
19 $course = intval($_GET['course']);
20
21 if ($course == 0) {
22         $course = $_SESSION['course_id'];
23 }
24
25 if (isset($_POST['cancel'])) {
26         $msg->addFeedback('CANCELLED');
27         header('Location: index.php');
28         exit;
29 } else if (isset($_POST['submit'])) {
30         $missing_fields = array();
31
32         $_POST['to_enrolled']   = trim($_POST['to_enrolled']);
33         $_POST['to_unenrolled'] = trim($_POST['to_unenrolled']);
34         $_POST['to_alumni']     = trim($_POST['to_alumni']);
35         $_POST['to_assistants'] = trim($_POST['to_assistants']);
36
37         $_POST['subject'] = trim($_POST['subject']);
38         $_POST['body'] = trim($_POST['body']);
39
40         if ( ($_POST['to_enrolled']   == '') &&
41                  ($_POST['to_unenrolled'] == '') &&
42                  ($_POST['to_alumni']     == '') &&
43                  ($_POST['to_assistants'] == '') &&
44                  ($_POST['groups']        == '')
45                 ) {
46                         $missing_fields[] = _AT('to');
47         }
48
49         if ($_POST['subject'] == '') {
50                 $missing_fields[] = _AT('subject');
51         }
52
53         if ($_POST['body'] == '') {
54                 $missing_fields[] = _AT('body');
55         }
56
57         if ($missing_fields) {
58                 $missing_fields = implode(', ', $missing_fields);
59                 $msg->addError(array('EMPTY_FIELDS', $missing_fields));
60         }
61
62         if (!$msg->containsErrors()) {
63                 $email_sql      = "SELECT email, first_name, last_name, login, password  FROM ".TABLE_PREFIX."course_enrollment C INNER JOIN ".TABLE_PREFIX."members M USING (member_id) WHERE C.course_id=$course AND (";
64                 
65                 if ($_POST['to_unenrolled']) {
66                         // choose all unenrolled
67                         $email_sql .= "C.approved='n' OR ";
68                 }
69                 
70                 if ($_POST['to_alumni']) {
71                         // choose all alumni
72                         $email_sql      .= "C.approved='a' OR ";
73                 }
74
75                 if ($_POST['to_assistants']){
76                         // choose all assistants
77                         $email_sql      .= "C.privileges<>0 OR ";
78                 }
79
80                 if ($_POST['groups']) {
81                         // specific groups
82                         $groups = implode(',', $_POST['groups']);
83
84                         $group_members = array();
85                         $sql = "SELECT member_id FROM ".TABLE_PREFIX."groups_members WHERE group_id IN ($groups)";
86                         $result = mysql_query($sql, $db);
87                         while ($row = mysql_fetch_assoc($result)) {
88                                 $group_members[] = $row['member_id'];
89                         }
90                         $group_members = implode(',', $group_members);
91
92                         $email_sql .= "M.member_id IN ($group_members) OR ";
93                 } else if ($_POST['to_enrolled']) {
94                         // includes instructor
95                         $email_sql      .= "C.approved='y' OR ";
96                 }
97
98                 $email_sql = substr_replace($email_sql, '', -4). ')'; // strip off the last ' OR '
99                 $result = mysql_query($email_sql,$db);
100
101                 require(AT_INCLUDE_PATH . 'classes/phpmailer/atutormailer.class.php');
102
103                 // generate email recipients
104                 $mail_list = array();
105                 while ($row = mysql_fetch_assoc($result)) {
106                         $mail_list[]=$row['email'];
107                         $fname_list[$row['email']] = $row['first_name'];
108                         $lname_list[$row['email']] = $row['last_name'];
109                         $pass_list[$row['email']] = $row['password'];
110                         $login_list[$row['email']] = $row['login'];
111                 }
112
113                 // Get instructor ID.
114                 $result = mysql_query("SELECT member_id FROM ".TABLE_PREFIX."courses WHERE course_id=$course",$db);
115                 $row = mysql_fetch_assoc($result);
116                 $instructor_id = $row['member_id'];
117
118                 // Add instructor to email list if he is not the one sending email.
119                 if ($instructor_id != $_SESSION['member_id']) {
120                         //$sql = "SELECT email FROM ".TABLE_PREFIX."members WHERE member_id=$instructor_id";
121                         $sql = "SELECT email FROM ".TABLE_PREFIX."members WHERE member_id=$instructor_id";
122                         $result = mysql_query($sql, $db);
123                         $row = mysql_fetch_assoc($result);
124                         $mail_list[]= $row['email'];
125                 }
126
127                 // Get the sender.              
128                 $result = mysql_query("SELECT email, first_name, last_name,login,password FROM ".TABLE_PREFIX."members WHERE member_id=$_SESSION[member_id]", $db);
129                 $row    = mysql_fetch_assoc($result);
130                 $mail_list[] = $row['email'];
131         // Prep the mailer.
132                 // set some user specific variables for the body (
133                 // Added by Thomas Taennier (ipool)
134                 foreach ($mail_list as $recip) {
135                         $subject = $_POST['subject'];
136                         $body = $_POST['body'];
137                         $mail = new ATutorMailer;
138                         $mail->From     = $row['email'];
139                         $mail->FromName = $row['first_name'] . ' ' . $row['last_name'];
140                         $subject = str_replace('{AT_FNAME}', $fname_list[$recip],$subject);
141                         $subject = str_replace('{AT_LNAME}', $lname_list[$recip],$subject);
142                         $body = str_replace('{AT_FNAME}', $fname_list[$recip],$body);
143                         $body = str_replace('{AT_LNAME}', $lname_list[$recip],$body);
144                         $body = str_replace('{AT_EMAIL}', $recip,$body);
145                         $body = str_replace('{AT_USER}', $login_list[$recip],$body);
146                         $body = str_replace('{AT_PASSWORD}', $pass_list[$recip],$body);
147
148
149                         $mail->Subject = $subject;
150                         $mail->AddAddress($recip);
151                         $mail->Body    = $body;
152                         if(!$mail->Send()) {
153                                 $msg->printErrors('SENDING_ERROR');
154                                  exit;
155                         }
156                         unset($mail);
157                 }
158
159                 
160
161
162                 $msg->addFeedback('ACTION_COMPLETED_SUCCESSFULLY');
163                 header('Location: index.php');
164                 require(AT_INCLUDE_PATH.'footer.inc.php');
165                 exit;
166         }
167 }
168
169 require(AT_INCLUDE_PATH.'header.inc.php');
170
171 $sql    = "SELECT COUNT(*) AS cnt FROM ".TABLE_PREFIX."course_enrollment C, ".TABLE_PREFIX."members M WHERE C.course_id=$course AND C.member_id=M.member_id AND M.member_id<>$_SESSION[member_id] ORDER BY C.approved, M.login";
172 $result = mysql_query($sql,$db);
173 $row    = mysql_fetch_array($result);
174 if ($row['cnt'] == 0) {
175         $msg->printInfos('NO_STUDENTS');
176         require(AT_INCLUDE_PATH.'footer.inc.php');
177         exit;
178 }
179
180 ?>
181 <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
182 <input type="hidden" name="course" value="<?php echo $course; ?>" />
183
184 <div class="input-form">
185         <div class="row">
186                 <div class="required" title="<?php echo _AT('required_field'); ?>">*</div>
187                 <?php echo  _AT('to'); ?><br />
188                 <input type="checkbox" name="to_assistants" value="1" id="assistants" <?php if ($_POST['to_assistants']=='1') { echo 'checked="checked"'; } ?> /><label for="assistants"><?php echo  _AT('assistants'); ?></label>
189                 <input type="checkbox" name="to_enrolled" value="1" id="enrolled" <?php if ($_POST['to_enrolled']=='1') { echo 'checked="checked"'; } else { echo 'checked="checked"'; } ?> /><label for="enrolled"><?php echo  _AT('enrolled'); ?></label>
190                 <input type="checkbox" name="to_unenrolled" value="1" id="unenrolled" <?php if ($_POST['to_unenrolled']=='1') { echo 'checked="checked"'; } ?> /><label for="unenrolled"><?php echo  _AT('unenrolled'); ?></label>
191                 <input type="checkbox" name="to_alumni" value="1" id="alumni" <?php if ($_POST['to_alumni']=='1') { echo 'checked="checked"'; } ?> /><label for="alumni"><?php echo  _AT('alumni'); ?></label>
192
193                 <?php
194                 $sql = "SELECT type_id, title FROM ".TABLE_PREFIX."groups_types WHERE course_id=$_SESSION[course_id] ORDER BY title";
195                 $result = mysql_query($sql, $db);
196                 ?>
197                 <?php if ($row = mysql_fetch_assoc($result)): ?>
198                         <br /><br />
199                         <?php echo _AT('or_groups'); ?>:<br />
200                         <select name="groups[]" multiple="multiple" size="10" style="padding-right: 5px">
201                                 <?php do { ?>
202                                         <optgroup label="<?php echo $row['title']; ?>">
203                                                 <?php 
204                                                         $sql = "SELECT group_id, title FROM ".TABLE_PREFIX."groups WHERE type_id=$row[type_id] ORDER BY title";
205                                                         $group_result = mysql_query($sql, $db);
206                                                 ?>
207                                                 <?php while ($group_row = mysql_fetch_assoc($group_result)): ?>
208                                                         <option value="<?php echo $group_row['group_id']; ?>"><?php echo $group_row['title']; ?></option>
209                                                 <?php endwhile; ?>
210                                         </optgroup>
211                                 <?php } while ($row = mysql_fetch_assoc($result)); ?>
212                         </select>
213                 <?php endif; ?>
214         </div>
215
216         <div class="row">
217                 <div class="required" title="<?php echo _AT('required_field'); ?>">*</div><label for="subject"><?php echo _AT('subject'); ?></label><br />
218                 <input type="text" name="subject" size="60" id="subject" value="<?php echo $_POST['subject']; ?>" />
219         </div>
220
221         <div class="row">
222                 <div class="required" title="<?php echo _AT('required_field'); ?>">*</div><label for="body"><?php echo _AT('body'); ?></label><br />
223                 <textarea cols="55" rows="18" name="body" id="body"><?php echo $_POST['body']; ?></textarea>
224         </div>
225
226         <div class="row buttons">
227                 <input type="submit" name="submit" value="<?php echo _AT('send'); ?>" accesskey="s" /> 
228                 <input type="submit" name="cancel" value="<?php echo _AT('cancel'); ?>" />
229         </div>
230 </div>
231 </form>
232
233 <?php require(AT_INCLUDE_PATH.'footer.inc.php'); ?>