60c22da1ac7598d15a883e7ce139017341a6202b
[atutor.git] / docs / mods / _core / enrolment / lib / enroll.inc.php
1 <?php\r
2 /************************************************************************/\r
3 /* ATutor                                                                                                                               */\r
4 /************************************************************************/\r
5 /* Copyright (c) 2002-2010                                              */\r
6 /* Inclusive Design Institute                                           */\r
7 /* http://atutor.ca                                                                                                             */\r
8 /*                                                                                                                                              */\r
9 /* This program is free software. You can redistribute it and/or        */\r
10 /* modify it under the terms of the GNU General Public License          */\r
11 /* as published by the Free Software Foundation.                        */\r
12 /************************************************************************/\r
13 // $Id$\r
14 \r
15 function checkUserInfo($record) {\r
16         global $db, $addslashes;\r
17         static $email_list;\r
18 \r
19         if (empty($record['remove'])) {\r
20                 $record['remove'] = FALSE;                      \r
21         }\r
22 \r
23         //error flags for this record\r
24         $record['err_email'] = FALSE;\r
25         $record['err_uname'] = FALSE;\r
26         $record['exists']    = FALSE;\r
27 \r
28         $record['email'] = trim($record['email']);\r
29 \r
30         /* email check */\r
31         if ($record['email'] == '') {\r
32                 $record['err_email'] = _AT('import_err_email_missing');\r
33         } else if (!preg_match("/^[a-z0-9\._-]+@+[a-z0-9\._-]+\.+[a-z]{2,6}$/i", $record['email'])) {\r
34                 $record['err_email'] = _AT('import_err_email_invalid');\r
35         } else if (isset($email_list[$record['email']])) {\r
36                 $record['err_email'] = _AT('import_err_email_exists');\r
37         } else {\r
38                 $record['email'] = $addslashes($record['email']);\r
39 \r
40                 $sql="SELECT * FROM ".TABLE_PREFIX."members WHERE email LIKE '$record[email]'";\r
41                 $result = mysql_query($sql,$db);\r
42                 if (mysql_num_rows($result) != 0) {\r
43                         $row = mysql_fetch_assoc($result);\r
44                         $record['exists'] = _AT('import_err_email_exists');\r
45                         $record['fname']  = $row['first_name']; \r
46                         $record['lname']  = $row['last_name'];\r
47                         $record['email']  = $row['email'];\r
48                         $record['uname']  = $row['login'];\r
49                         $record['status'] = $row['status'];\r
50                 } else {\r
51                         // it's good, add it to the list\r
52                         $email_list[$record['email']] = true;\r
53                 }\r
54         }\r
55 \r
56         /* username check */\r
57         if (empty($record['uname'])) {\r
58                 $record['uname'] = stripslashes (strtolower (substr ($record['fname'], 0, 1).$_POST['sep_choice'].$record['lname']));\r
59         }               \r
60 \r
61         $record['uname'] = preg_replace("{[^a-zA-Z0-9._-]}","", trim($record['uname']));\r
62 \r
63         if (!(preg_match("/^[a-zA-Z0-9._-]([a-zA-Z0-9._-])*$/i", $record['uname']))) {\r
64                 $record['err_uname'] = _AT('import_err_username_invalid');\r
65         } \r
66 \r
67         if (isset($record['status']) && $record['status'] == AT_STATUS_DISABLED) {\r
68                 $record['err_disabled'] = true;\r
69         } else {\r
70                 $record['err_disabled'] = false;\r
71         }\r
72 \r
73         $record['uname'] = $addslashes($record['uname']);\r
74         $record['fname'] = $addslashes($record['fname']);\r
75         $record['lname'] = $addslashes($record['lname']);\r
76 \r
77         $sql = "SELECT member_id FROM ".TABLE_PREFIX."members WHERE login='$record[uname]'";\r
78         $result = mysql_query($sql,$db);\r
79         if ((mysql_num_rows($result) != 0) && !$record['exists']) {\r
80                 $record['err_uname'] = _AT('import_err_username_exists');\r
81         } else {\r
82                 $result = mysql_query("SELECT * FROM ".TABLE_PREFIX."admins WHERE login='$record[uname]'",$db);\r
83                 if (mysql_num_rows($result) != 0) {\r
84                         $record['err_uname'] = _AT('import_err_username_exists');\r
85                 }\r
86         }       \r
87 \r
88         $sql = "SELECT member_id FROM ".TABLE_PREFIX."members WHERE first_name='$record[fname]' AND last_name='$record[lname]' LIMIT 1";\r
89         $result = mysql_query($sql,$db);\r
90         if ((mysql_num_rows($result) != 0) && !$record['exists']) {\r
91                 $record['err_uname'] = _AT('import_err_full_name_exists');\r
92         }\r
93 \r
94         /* removed record? */\r
95         if ($record['remove']) {\r
96                 //unset errors \r
97                 $record['err_email'] = '';\r
98                 $record['err_uname'] = '';\r
99                 $record['err_disabled'] = '';\r
100         }\r
101 \r
102         $record['fname'] = htmlspecialchars(stripslashes(trim($record['fname'])));\r
103         $record['lname'] = htmlspecialchars(stripslashes(trim($record['lname'])));\r
104         $record['email'] = htmlspecialchars(stripslashes(trim($record['email'])));\r
105         $record['uname'] = htmlspecialchars(stripslashes(trim($record['uname'])));\r
106 \r
107         return $record;\r
108 }\r
109 \r
110 function add_users($user_list, $enroll, $course) {\r
111         global $db;\r
112         global $msg;\r
113         global $_config;\r
114         global $addslashes;\r
115 \r
116         require_once(AT_INCLUDE_PATH.'classes/phpmailer/atutormailer.class.php');\r
117 \r
118         if (defined('AT_EMAIL_CONFIRMATION') && AT_EMAIL_CONFIRMATION) {\r
119                 $status = AT_STATUS_UNCONFIRMED;\r
120         } else {\r
121                 $status = AT_STATUS_STUDENT;\r
122         }\r
123 \r
124 \r
125         foreach ($user_list as $student) {\r
126                 if (!$student['remove'])  {\r
127                                 $student['uname'] = $addslashes($student['uname']);\r
128                                 $student['email'] = $addslashes($student['email']);\r
129                                 $student['fname'] = $addslashes($student['fname']);\r
130                                 $student['lname'] = $addslashes($student['lname']);\r
131 \r
132                         if (!$student['exists']) {\r
133                                 $sql = "INSERT INTO ".TABLE_PREFIX."members \r
134                                               (login,\r
135                                                password,\r
136                                                email,\r
137                                                first_name,\r
138                                                last_name,\r
139                                                gender,\r
140                                                status,\r
141                                                preferences,\r
142                                                creation_date,\r
143                                                language,\r
144                                                inbox_notify,\r
145                                                private_email)\r
146                                               VALUES \r
147                                               ('$student[uname]',\r
148                                                '". sha1($student[uname]). "',\r
149                                                '$student[email]',\r
150                                                '$student[fname]',\r
151                                                '$student[lname]',\r
152                                                'n', \r
153                                                $status, \r
154                                                '$_config[pref_defaults]', \r
155                                                NOW(),\r
156                                                '$_config[default_language]', \r
157                                                $_config[pref_inbox_notify], \r
158                                                1)";\r
159 \r
160                                 $result = mysql_query($sql, $db);\r
161                                 if (mysql_affected_rows($db) == 1) {\r
162                                         $m_id = mysql_insert_id($db);\r
163 \r
164                                         $student['exists'] = _AT('import_err_email_exists');\r
165 \r
166                                         $sql = "INSERT INTO ".TABLE_PREFIX."course_enrollment (member_id, course_id, approved, last_cid) VALUES ($m_id, $course, '$enroll', 0)";\r
167 \r
168                                         if ($result = mysql_query($sql,$db)) {\r
169                                                 $enrolled_list .= '<li>' . $student['uname'] . '</li>';\r
170 \r
171                                                 if (defined('AT_EMAIL_CONFIRMATION') && AT_EMAIL_CONFIRMATION) {\r
172 \r
173                                                         $sql    = "SELECT email, creation_date FROM ".TABLE_PREFIX."members WHERE member_id=$m_id";\r
174                                                         $result = mysql_query($sql, $db);\r
175                                                         $row    = mysql_fetch_assoc($result);\r
176                                                         $code   = substr(md5($row['email'] . $row['creation_date'] . $m_id), 0, 10);\r
177 \r
178                                                         // send email here.\r
179                                                         $confirmation_link = AT_BASE_HREF . 'confirm.php?id='.$m_id.SEP.'m='.$code;\r
180                         \r
181                                                         $subject = $_config['site_name'].': '._AT('email_confirmation_subject');\r
182                                                         $body = _AT(array('new_account_enroll_confirm', $_SESSION['course_title'], $confirmation_link))."\n\n";\r
183                                                 } else {\r
184                                                         $subject = $_config['site_name'].': '._AT('account_information');\r
185                                                         $body = _AT(array('new_account_enroll',AT_BASE_HREF, $_SESSION['course_title']))."\n\n";\r
186                                                 }\r
187                                                 \r
188                                                 //$body .= SITE_NAME.': '._AT('account_information')."\n";\r
189                                                 $body .= _AT('web_site') .' : '.AT_BASE_HREF."\n";\r
190                                                 $body .= _AT('login_name') .' : '.$student['uname'] . "\n";\r
191                                                 $body .= _AT('password') .' : '.$student['uname'] . "\n";\r
192 \r
193                                                 $mail = new ATutorMailer;\r
194                                                 $mail->From     = $_config['contact_email'];\r
195                                                 $mail->AddAddress($student['email']);\r
196                                                 $mail->Subject = $subject;\r
197                                                 $mail->Body    = $body;\r
198                                                 $mail->Send();\r
199 \r
200                                                 unset($mail);\r
201                                         } else {\r
202                                                 $already_enrolled .= '<li>' . $student['uname'] . '</li>';\r
203                                         }\r
204                                 } else {\r
205                                         //$msg->addError('LIST_IMPORT_FAILED'); \r
206                                 }\r
207                         } else if (! $student['err_disabled']) {\r
208                                 $sql = "SELECT member_id FROM ".TABLE_PREFIX."members WHERE email='$student[email]'";\r
209                                 $result = mysql_query($sql, $db);\r
210                                 if ($row = mysql_fetch_assoc($result)) {\r
211                                 \r
212                                         $m_id = $row['member_id'];\r
213 \r
214                                         $sql = "INSERT INTO ".TABLE_PREFIX."course_enrollment (member_id, course_id, approved, last_cid, role) VALUES ($m_id, $course, '$enroll', 0, '$role')";\r
215 \r
216                                         if($result = mysql_query($sql,$db)) {\r
217                                                 $enrolled_list .= '<li>' . $student['uname'] . '</li>';\r
218                                         } else {\r
219                                                 $sql = "REPLACE INTO ".TABLE_PREFIX."course_enrollment (member_id, course_id, approved, last_cid, role) VALUES ($m_id, $course, '$enroll', 0, '$role')";\r
220                                                 $result = mysql_query($sql,$db);\r
221                                                 $enrolled_list .= '<li>' . $student['uname'] . '</li>';\r
222                                         }\r
223                                 $subject = $_config['site_name'].': '._AT('email_confirmation_subject');\r
224                                 $body = _AT(array('enrol_message_approved',$_SESSION['course_title'],AT_BASE_HREF))."\n\n";\r
225                                 $body .= _AT('web_site') .' : '.AT_BASE_HREF."\n";\r
226                                 $body .= _AT('login_name') .' : '.$student['uname'] . "\n";\r
227                                 $mail = new ATutorMailer;\r
228                                 $mail->From     = $_config['contact_email'];\r
229                                 $mail->AddAddress($student['email']);\r
230                                 $mail->Subject = $subject;\r
231                                 $mail->Body    = $body;\r
232                                 $mail->Send();\r
233 \r
234                                 unset($mail);\r
235 \r
236 \r
237                                 }\r
238 \r
239 \r
240 \r
241 \r
242                         } else if ($student['err_disabled']) {\r
243                                 $not_enrolled_list .= '<li>' . $student['uname'] . '</li>';\r
244                         }\r
245                 }\r
246         }\r
247         if ($already_enrolled) {\r
248                 $feedback = array('ALREADY_ENROLLED', $already_enrolled);\r
249                 $msg->addFeedback($feedback);\r
250         }\r
251         if ($enrolled_list) {\r
252                 $feedback = array('ENROLLED', $enrolled_list);\r
253                 $msg->addFeedback($feedback);\r
254         }\r
255         if ($not_enrolled_list) {\r
256                 $feedback = array('NOT_ENROLLED', $not_enrolled_list);\r
257                 $msg->addFeedback($feedback);\r
258         }\r
259 }\r
260 \r
261 ?>