move code up one directory
[atutor.git] / mods / _standard / course_email / course_email.php
1 <?php
2 /************************************************************************/
3 /* ATutor                                                                                                                               */
4 /************************************************************************/
5 /* Copyright (c) 2002-2010                                              */
6 /* Inclusive Design Institute                                           */
7 /* http://atutor.ca                                                     */
8 /* This program is free software. You can redistribute it and/or        */
9 /* modify it under the terms of the GNU General Public License          */
10 /* as published by the Free Software Foundation.                        */
11 /************************************************************************/
12 // $Id$
13
14 define('AT_INCLUDE_PATH', '../../../include/');
15 require (AT_INCLUDE_PATH.'vitals.inc.php');
16 authenticate(AT_PRIV_COURSE_EMAIL);
17
18 $course = intval($_GET['course']);
19
20 if ($course == 0) {
21         $course = $_SESSION['course_id'];
22 }
23
24 if (isset($_POST['cancel'])) {
25         $msg->addFeedback('CANCELLED');
26         header('Location: '.$_base_href.'tools/index.php');
27         exit;
28 } else if (isset($_POST['submit'])) {
29         $missing_fields = array();
30
31         $_POST['to_enrolled']   = trim($_POST['to_enrolled']);
32         $_POST['to_unenrolled'] = trim($_POST['to_unenrolled']);
33         $_POST['to_alumni']     = trim($_POST['to_alumni']);
34         $_POST['to_assistants'] = trim($_POST['to_assistants']);
35
36         $_POST['subject'] = trim($_POST['subject']);
37         $_POST['body'] = trim($_POST['body']);
38
39         if ( ($_POST['to_enrolled']   == '') &&
40                  ($_POST['to_unenrolled'] == '') &&
41                  ($_POST['to_alumni']     == '') &&
42                  ($_POST['to_assistants'] == '') &&
43                  ($_POST['groups']        == '')
44                 ) {
45                         $missing_fields[] = _AT('to');
46         }
47
48         if ($_POST['subject'] == '') {
49                 $missing_fields[] = _AT('subject');
50         }
51
52         if ($_POST['body'] == '') {
53                 $missing_fields[] = _AT('body');
54         }
55
56         if ($missing_fields) {
57                 $missing_fields = implode(', ', $missing_fields);
58                 $msg->addError(array('EMPTY_FIELDS', $missing_fields));
59         }
60
61         if (!$msg->containsErrors()) {
62                 $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 (";
63                 
64                 if ($_POST['to_unenrolled']) {
65                         // choose all unenrolled
66                         $email_sql .= "C.approved='n' OR ";
67                 }
68                 
69                 if ($_POST['to_alumni']) {
70                         // choose all alumni
71                         $email_sql      .= "C.approved='a' OR ";
72                 }
73
74                 if ($_POST['to_assistants']){
75                         // choose all assistants
76                         $email_sql      .= "C.privileges<>0 OR ";
77                 }
78
79                 if ($_POST['groups']) {
80                         // specific groups
81                         $groups = implode(',', $_POST['groups']);
82
83                         $group_members = array();
84                         $sql = "SELECT member_id FROM ".TABLE_PREFIX."groups_members WHERE group_id IN ($groups)";
85                         $result = mysql_query($sql, $db);
86                         while ($row = mysql_fetch_assoc($result)) {
87                                 $group_members[] = $row['member_id'];
88                         }
89                         $group_members = implode(',', $group_members);
90                         if (!empty($group_members)){
91                                 $email_sql .= "M.member_id IN ($group_members) OR ";
92                         } else {
93                                 $email_sql .= "M.member_id IN (-1) OR ";
94                         }
95                 } else if ($_POST['to_enrolled']) {
96                         // includes instructor
97                         $email_sql      .= "(C.approved='y' AND C.privileges=0) OR ";
98                 }
99
100                 $email_sql = substr_replace($email_sql, '', -4). ')'; // strip off the last ' OR '
101                 $result = mysql_query($email_sql,$db);
102
103                 require(AT_INCLUDE_PATH . 'classes/phpmailer/atutormailer.class.php');
104
105                 // generate email recipients
106                 $mail_list = array();
107                 while ($row = mysql_fetch_assoc($result)) {
108                         $mail_list[]=$row['email'];
109                         $fname_list[$row['email']] = $row['first_name'];
110                         $lname_list[$row['email']] = $row['last_name'];
111                         $login_list[$row['email']] = $row['login'];
112                 }
113
114                 // Get instructor ID.
115                 $result = mysql_query("SELECT member_id FROM ".TABLE_PREFIX."courses WHERE course_id=$course",$db);
116                 $row = mysql_fetch_assoc($result);
117                 $instructor_id = $row['member_id'];
118
119                 // Add instructor to email list if he is not the one sending email.
120                 if ($instructor_id != $_SESSION['member_id']) {
121                         //$sql = "SELECT email FROM ".TABLE_PREFIX."members WHERE member_id=$instructor_id";
122                         $sql = "SELECT email FROM ".TABLE_PREFIX."members WHERE member_id=$instructor_id";
123                         $result = mysql_query($sql, $db);
124                         $row = mysql_fetch_assoc($result);
125                         $mail_list[]= $row['email'];
126                 }
127
128                 // Get the sender.              
129                 $result = mysql_query("SELECT email, first_name, last_name,login,password FROM ".TABLE_PREFIX."members WHERE member_id=$_SESSION[member_id]", $db);
130                 $row    = mysql_fetch_assoc($result);
131                 $mail_list[] = $row['email'];
132         // Prep the mailer.
133                 // set some user specific variables for the body (
134                 // Added by Thomas Taennier (ipool)
135                 foreach ($mail_list as $recip) {
136                         $subject = $_POST['subject'];
137                         $body = $_POST['body'];
138                         $mail = new ATutorMailer;
139                         $mail->From     = $row['email'];
140                         $mail->FromName = $row['first_name'] . ' ' . $row['last_name'];
141                         $subject = str_replace('{AT_FNAME}', $fname_list[$recip],$subject);
142                         $subject = str_replace('{AT_LNAME}', $lname_list[$recip],$subject);
143                         $body = str_replace('{AT_FNAME}', $fname_list[$recip],$body);
144                         $body = str_replace('{AT_LNAME}', $lname_list[$recip],$body);
145                         $body = str_replace('{AT_EMAIL}', $recip,$body);
146                         $body = str_replace('{AT_USER}', $login_list[$recip],$body);
147
148                         $mail->Subject = $subject;
149                         $mail->AddAddress($recip);
150                         $mail->Body    = $body;
151                         if(!$mail->Send()) {
152                                 $msg->addError('SENDING_ERROR');
153                                 header('Location: '.$_SERVER['PHP_SELF']);
154                                 exit;
155                         }
156                         unset($mail);
157                 }
158
159                 $msg->addFeedback('ACTION_COMPLETED_SUCCESSFULLY');
160                 header('Location: '.$_base_href.'tools/index.php');
161                 exit;
162         }
163 }
164
165 require(AT_INCLUDE_PATH.'header.inc.php');
166
167 $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";
168 $result = mysql_query($sql,$db);
169 $row    = mysql_fetch_array($result);
170 if ($row['cnt'] == 0) {
171         $msg->printInfos('NO_STUDENTS');
172         require(AT_INCLUDE_PATH.'footer.inc.php');
173         exit;
174 }
175
176 //fetch groups names, same as first out of loop query. 
177 $sql = "SELECT type_id, title FROM ".TABLE_PREFIX."groups_types WHERE course_id=$_SESSION[course_id] ORDER BY title";
178 $result = mysql_query($sql, $db);
179
180
181 $group_type_rows = array(); 
182
183 while ($row = mysql_fetch_assoc($result)) {  
184         //While a row of data exists, put the fields "title" and "type_id", into $row as an associative array. 
185
186     $group_type_rows[$row['type_id']] = $row; 
187     //save the first SQL result set ($row) into $group_type_rows. Use type_id as the key to map each row
188      
189     
190     $sql = "SELECT group_id, title FROM ".TABLE_PREFIX."groups WHERE type_id=$row[type_id] ORDER BY title";
191     $group_result = mysql_query($sql, $db);
192     //second loop adds a child array to our $group_type_rows created above to store the data
193     while($group_rows = mysql_fetch_assoc($group_result)) {
194         $group_type_rows[$row['type_id']]['group_type_row'][] = $group_rows;
195     }
196
197 }
198
199 $savant->assign('group_type_rows', $group_type_rows);
200 $savant->display('instructor/course_email/course_email.tmpl.php');
201 ?>
202
203 <?php require(AT_INCLUDE_PATH.'footer.inc.php'); ?>