2 /****************************************************************/
4 /****************************************************************/
5 /* Copyright (c) 2002-2008 by Greg Gay & Joel Kronenberg */
6 /* Adaptive Technology Resource Centre / University of Toronto */
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 /* linked from admin/users.php */
14 /* deletes a user from the system. */
15 /****************************************************************/
17 define('AT_INCLUDE_PATH', '../include/');
18 require(AT_INCLUDE_PATH.'vitals.inc.php');
19 admin_authenticate(AT_ADMIN_PRIV_USERS);
21 function delete_user($id) {
24 //make sure not instructor of a course
25 $sql = "SELECT course_id FROM ".TABLE_PREFIX."courses WHERE member_id=$id";
26 $result = mysql_query($sql, $db);
27 if (($row = mysql_fetch_assoc($result))) {
28 /*$msg->addError('NODELETE_USER');
29 header('Location: '.AT_BASE_HREF.'users.php');
34 $sql = "DELETE FROM ".TABLE_PREFIX."course_enrollment WHERE member_id=$id";
35 mysql_query($sql, $db);
36 write_to_log(AT_ADMIN_LOG_DELETE, 'course_enrollment', mysql_affected_rows($db), $sql);
38 $sql = "DELETE FROM ".TABLE_PREFIX."forums_accessed WHERE member_id=$id";
39 mysql_query($sql, $db);
40 write_to_log(AT_ADMIN_LOG_DELETE, 'forums_accessed', mysql_affected_rows($db), $sql);
42 $sql = "DELETE FROM ".TABLE_PREFIX."forums_subscriptions WHERE member_id=$id";
43 mysql_query($sql, $db);
44 write_to_log(AT_ADMIN_LOG_DELETE, 'forums_subscriptions', mysql_affected_rows($db), $sql);
48 /* delete forum threads block: */
49 /* delete the thread replies: */
50 $sql = "SELECT COUNT(*) AS cnt, parent_id, forum_id FROM ".TABLE_PREFIX."forums_threads WHERE member_id=$id AND parent_id<>0 GROUP BY parent_id";
51 $result = mysql_query($sql, $db);
52 while ($row = mysql_fetch_assoc($result)) {
53 /* update the forum posts counter */
54 $sql = "UPDATE ".TABLE_PREFIX."forums SET num_posts=num_posts - $row[cnt], last_post=last_post WHERE forum_id=$row[forum_id]";
55 mysql_query($sql, $db);
56 write_to_log(AT_ADMIN_LOG_UPDATE, 'forums', mysql_affected_rows($db), $sql);
58 /* update the topics reply counter */
59 $sql = "UPDATE ".TABLE_PREFIX."forums_threads SET num_comments=num_comments-$row[cnt], last_comment=last_comment, date=date WHERE post_id=$row[parent_id]";
60 mysql_query($sql, $db);
61 write_to_log(AT_ADMIN_LOG_UPDATE, 'forums_threads', mysql_affected_rows($db), $sql);
64 /* delete threads this member started: */
65 $sql = "SELECT post_id, forum_id, num_comments FROM ".TABLE_PREFIX."forums_threads WHERE member_id=$id AND parent_id=0";
66 $result = mysql_query($sql, $db);
67 while ($row = mysql_fetch_assoc($result)) {
68 /* update the forum posts and topics counters */
69 $num_posts = $row['num_comments'] + 1;
70 $sql = "UPDATE ".TABLE_PREFIX."forums SET num_topics=num_topics-1, num_posts=num_posts - $num_posts, last_post=last_post WHERE forum_id=$row[forum_id]";
71 mysql_query($sql, $db);
72 write_to_log(AT_ADMIN_LOG_UPDATE, 'forums', mysql_affected_rows($db), $sql);
74 /* delete the replies */
75 $sql = "DELETE FROM ".TABLE_PREFIX."forums_threads WHERE parent_id=$row[post_id]";
76 mysql_query($sql, $db);
77 write_to_log(AT_ADMIN_LOG_DELETE, 'forums_threads', mysql_affected_rows($db), $sql);
79 /* delete the actual threads */
80 $sql = "DELETE FROM ".TABLE_PREFIX."forums_threads WHERE member_id=$id";
81 mysql_query($sql, $db);
82 write_to_log(AT_ADMIN_LOG_DELETE, 'forums_threads', mysql_affected_rows($db), $sql);
84 /* end delete forum threads block. */
87 $sql = "DELETE FROM ".TABLE_PREFIX."instructor_approvals WHERE member_id=$id";
88 mysql_query($sql, $db);
89 write_to_log(AT_ADMIN_LOG_DELETE, 'instructor_approvals', mysql_affected_rows($db), $sql);
91 $sql = "DELETE FROM ".TABLE_PREFIX."messages WHERE from_member_id=$id OR to_member_id=$id";
92 mysql_query($sql, $db);
93 write_to_log(AT_ADMIN_LOG_DELETE, 'messages', mysql_affected_rows($db), $sql);
95 $sql = "DELETE FROM ".TABLE_PREFIX."polls_members WHERE member_id=$id";
96 mysql_query($sql, $db);
97 write_to_log(AT_ADMIN_LOG_DELETE, 'polls_members', mysql_affected_rows($db), $sql);
99 $sql = "DELETE FROM ".TABLE_PREFIX."tests_answers WHERE member_id=$id";
100 mysql_query($sql, $db);
101 write_to_log(AT_ADMIN_LOG_DELETE, 'tests_answers', mysql_affected_rows($db), $sql);
103 $sql = "DELETE FROM ".TABLE_PREFIX."tests_results WHERE member_id='$id'";
104 mysql_query($sql, $db);
105 write_to_log(AT_ADMIN_LOG_DELETE, 'tests_results', mysql_affected_rows($db), $sql);
107 $sql = "DELETE FROM ".TABLE_PREFIX."users_online WHERE member_id=$id";
108 mysql_query($sql, $db);
109 write_to_log(AT_ADMIN_LOG_DELETE, 'users_online', mysql_affected_rows($db), $sql);
111 $sql = "DELETE FROM ".TABLE_PREFIX."members WHERE member_id=$id";
112 mysql_query($sql, $db);
113 write_to_log(AT_ADMIN_LOG_DELETE, 'members', mysql_affected_rows($db), $sql);
115 $sql = "DELETE FROM ".TABLE_PREFIX."member_track WHERE member_id=$id";
116 mysql_query($sql, $db);
117 write_to_log(AT_ADMIN_LOG_DELETE, 'member_track', mysql_affected_rows($db), $sql);
119 // delete personal files from file storage
120 require(AT_INCLUDE_PATH.'lib/file_storage.inc.php');
121 fs_delete_workspace(WORKSPACE_PERSONAL, $id);
127 $ids = explode(',', $_REQUEST['id']);
129 if (isset($_POST['submit_yes'])) {
131 foreach($ids as $id) {
132 delete_user(intval($id));
135 $msg->addFeedback('ACTION_COMPLETED_SUCCESSFULLY');
136 if (isset($_POST['ml']) && $_REQUEST['ml']) {
137 header('Location: '.AT_BASE_HREF.'admin/master_list.php');
139 header('Location: '.AT_BASE_HREF.'admin/users.php');
142 } else if (isset($_POST['submit_no'])) {
143 $msg->addFeedback('CANCELLED');
144 if (isset($_POST['ml']) && $_REQUEST['ml']) {
145 header('Location: '.AT_BASE_HREF.'admin/master_list.php');
147 header('Location: '.AT_BASE_HREF.'admin/users.php');
152 require(AT_INCLUDE_PATH.'header.inc.php');
153 $names = get_login($ids);
154 $names_html = '<ul>'.html_get_list($names).'</ul>';
155 $hidden_vars['id'] = implode(',', array_keys($names));
156 $hidden_vars['ml'] = intval($_REQUEST['ml']);
158 $confirm = array('DELETE_USER', $names_html);
159 $msg->addConfirm($confirm, $hidden_vars);
160 $msg->printConfirm();
162 require(AT_INCLUDE_PATH.'footer.inc.php');