made a copy
[atutor.git] / admin / admin_delete.php
1 <?php
2 /****************************************************************/
3 /* ATutor                                                                                                               */
4 /****************************************************************/
5 /* Copyright (c) 2002-2008 by Greg Gay & Joel Kronenberg        */
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 /* linked from admin/users.php                                  */
14 /* deletes a user from the system.                              */
15 /****************************************************************/
16 // $Id$
17 define('AT_INCLUDE_PATH', '../include/');
18 require(AT_INCLUDE_PATH.'vitals.inc.php');
19 admin_authenticate(AT_ADMIN_PRIV_USERS);
20
21 function delete_user($id) {
22         global $db, $msg;
23
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');
30                 exit;*/
31                 return;
32         }
33
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);
37
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);
41
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);
45
46
47         /****/
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);
57                         
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);
62                 }
63
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);
73
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);
78                 }
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);
83
84         /* end delete forum threads block. */
85         /****/
86
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);
90
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);
94
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);
98
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);
102
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);
106
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);
110
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);
114
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);
118         
119         // delete personal files from file storage
120         require(AT_INCLUDE_PATH.'lib/file_storage.inc.php');
121         fs_delete_workspace(WORKSPACE_PERSONAL, $id);
122
123
124         return;
125 }
126
127 $ids = explode(',', $_REQUEST['id']);
128
129 if (isset($_POST['submit_yes'])) {
130         
131         foreach($ids as $id) {
132                 delete_user(intval($id));
133         }
134
135         $msg->addFeedback('ACTION_COMPLETED_SUCCESSFULLY');
136         if (isset($_POST['ml']) && $_REQUEST['ml']) {
137                 header('Location: '.AT_BASE_HREF.'admin/master_list.php');
138         } else {
139                 header('Location: '.AT_BASE_HREF.'admin/users.php');
140         }
141         exit;
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');
146         } else {
147                 header('Location: '.AT_BASE_HREF.'admin/users.php');
148         }
149         exit;
150 }
151
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']);
157
158 $confirm = array('DELETE_USER', $names_html);
159 $msg->addConfirm($confirm, $hidden_vars);
160 $msg->printConfirm();
161
162 require(AT_INCLUDE_PATH.'footer.inc.php');
163
164 ?>