Просмотр файла admin/admin_users_delete.php

Размер файла: 9.01Kb
  1. <?php
  2. /***************************************************************************
  3. * mides.ru
  4. * -------------------
  5. ***************************************************************************/
  6. define('IN_PHPBB', true);
  7.  
  8. if( !empty($setmodules) )
  9. {
  10. $filename = basename(__FILE__);
  11. $module['Users']['Массовое удаление'] = $filename;
  12. return;
  13. }
  14.  
  15. $phpbb_root_path = '../';
  16. require($phpbb_root_path . 'extension.inc');
  17. require('./pagestart.' . $phpEx);
  18.  
  19. if (!isset($HTTP_GET_VARS['delete']))
  20. {
  21. $users_per_page = 25;
  22.  
  23. if ( isset($HTTP_POST_VARS['start1']) )
  24. {
  25. $start1 = intval($HTTP_POST_VARS['start1']);
  26. $start = (($start1 - 1) * $board_config['topics_per_page']);
  27. } else {
  28. $start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0;
  29. $start = ($start < 0) ? 0 : $start;
  30. }
  31.  
  32. if( isset($HTTP_POST_VARS['sort']) )
  33. {
  34. $sort_method = $HTTP_POST_VARS['sort'];
  35. }
  36. else if( isset($HTTP_GET_VARS['sort']) )
  37. {
  38. $sort_method = $HTTP_GET_VARS['sort'];
  39. }
  40. else
  41. {
  42. $sort_method = 'user_posts';
  43. }
  44.  
  45. if( isset($HTTP_POST_VARS['order']) )
  46. {
  47. $sort_order = $HTTP_POST_VARS['order'];
  48. }
  49. else if( isset($HTTP_GET_VARS['order']) )
  50. {
  51. $sort_order = $HTTP_GET_VARS['order'];
  52. }
  53. else
  54. {
  55. $sort_order = 'DESC';
  56. }
  57.  
  58.  
  59. $template->set_filenames(array(
  60. 'body' => 'admin/admin_users_delete_body.tpl')
  61. );
  62.  
  63. $sql = "SELECT count(user_id) as total FROM ".USERS_TABLE." WHERE user_id > 0";
  64. if(!$result = $db->sql_query($sql))
  65. {
  66. message_die(GENERAL_ERROR, "Could not count users", "", __LINE__, __FILE__, $sql);
  67. }
  68. $row = $db->sql_fetchrow($result);
  69. $total_users = $row['total'];
  70.  
  71. $template->assign_vars(array(
  72. 'L_SELECT_SORT_METHOD' => $lang['Select_sort_method'],
  73. 'U_LIST_ACTION' => append_sid("admin_users_delete.$phpEx"),
  74. 'U_DELETE_ACTION' => append_sid("admin_users_delete.$phpEx?delete"),
  75. 'L_SORT' => $lang['Sort'],
  76. 'L_ORDER' => $lang['Order'],
  77. 'L_SORT_DESCENDING' => $lang['Sort_Descending'],
  78. 'L_SORT_ASCENDING' => $lang['Sort_Ascending'],
  79. 'ID_SELECTED' => ($sort_method == 'user_id') ? 'selected="selected"' : '',
  80. 'USERNAME_SELECTED' => ($sort_method == 'username') ? 'selected="selected"' : '',
  81. 'POSTS_SELECTED' => ($sort_method == 'user_posts') ? 'selected="selected"' : '',
  82. 'LASTVISIT_SELECTED' => ($sort_method == 'user_lastvisit') ? 'selected="selected"' : '',
  83. 'ASC_SELECTED' => ($sort_order != 'DESC') ? 'selected="selected"' : '',
  84. 'DESC_SELECTED' => ($sort_order == 'DESC') ? 'selected="selected"' : '',
  85. 'TOTAL_USERS' => $total_users)
  86. );
  87.  
  88. $sql = "SELECT user_id, username, user_regdate, user_lastvisit, user_posts, user_active
  89. FROM ".USERS_TABLE."
  90. WHERE user_id > 0
  91. ORDER BY " . $sort_method . " " . $sort_order . "
  92. LIMIT ".$start.",".$users_per_page;
  93. if(!$result = $db->sql_query($sql))
  94. {
  95. message_die(GENERAL_ERROR, "Could not query Users information", "", __LINE__, __FILE__, $sql);
  96. }
  97.  
  98. while( $row = $db->sql_fetchrow($result) )
  99. {
  100. $userrow[] = $row;
  101. }
  102.  
  103. for ($i = 0; $i < $users_per_page; $i++)
  104. {
  105. if (empty($userrow[$i]))
  106. {
  107. break;
  108. }
  109.  
  110. $row_color = (($i % 2) == 0) ? "row_easy" : "row_hard";
  111. $template->assign_block_vars('userrow', array(
  112. 'COLOR' => $row_color,
  113. 'NUMBER' => $userrow[$i]['user_id'],
  114. 'USERNAME' => ( $userrow[$i]['user_active'] ) ? '<b>' . $userrow[$i]['username'] . '</b>' : $userrow[$i]['username'],
  115. 'U_ADMIN_USER' => append_sid("admin_users.$phpEx?mode=edit&amp;" . POST_USERS_URL . "=" . $userrow[$i]['user_id']),
  116. 'JOINED' => create_date($lang['DATE_FORMAT'], $userrow[$i]['user_regdate'], $board_config['board_timezone']),
  117. 'LAST_VISIT' => (!$userrow[$i]['user_lastvisit']) ? '' : create_date($lang['DATE_FORMAT'], $userrow[$i]['user_lastvisit'], $board_config['board_timezone']),
  118. 'POSTS' => $userrow[$i]['user_posts'])
  119. );
  120. }
  121.  
  122. $template->assign_vars(array(
  123. 'PAGINATION' => generate_pagination(append_sid("admin_users_delete.$phpEx?sort=$sort_method&amp;order=$sort_order"), $total_users, $users_per_page, $start))
  124. );
  125.  
  126. $template->pparse('body');
  127.  
  128. include('./page_footer_admin.'.$phpEx);
  129.  
  130. } else {
  131. if ( isset($HTTP_POST_VARS['user_id_list']) )
  132. {
  133. $users = $HTTP_POST_VARS['user_id_list'];
  134. } else {
  135. message_die(GENERAL_MESSAGE, 'Ни один юзер не выбран. Шутим?');
  136. }
  137.  
  138. for($i = 0; $i < count($users); $i++)
  139. {
  140. $user_id = intval($users[$i]);
  141. if( $userdata['user_id'] == $user_id )
  142. {
  143. message_die(GENERAL_MESSAGE, 'Ты больной? Зачем тебе удалять самого себя??? о_0');
  144. }
  145. $this_userdata = get_userdata($user_id);
  146.  
  147. $sql = "SELECT g.group_id
  148. FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g
  149. WHERE ug.user_id = $user_id
  150. AND g.group_id = ug.group_id
  151. AND g.group_single_user = 1";
  152. if( !($result = $db->sql_query($sql)) )
  153. {
  154. message_die(GENERAL_ERROR, 'Could not obtain group information for this user', '', __LINE__, __FILE__, $sql);
  155. }
  156.  
  157. $row = $db->sql_fetchrow($result);
  158.  
  159. $sql = "UPDATE " . POSTS_TABLE . "
  160. SET poster_id = " . DELETED . ", post_username = '" . str_replace("\\'", "''", addslashes($this_userdata['username'])) . "'
  161. WHERE poster_id = $user_id";
  162. if( !$db->sql_query($sql) )
  163. {
  164. message_die(GENERAL_ERROR, 'Could not update posts for this user', '', __LINE__, __FILE__, $sql);
  165. }
  166.  
  167. $sql = "UPDATE " . TOPICS_TABLE . "
  168. SET topic_poster = " . DELETED . "
  169. WHERE topic_poster = $user_id";
  170. if( !$db->sql_query($sql) )
  171. {
  172. message_die(GENERAL_ERROR, 'Could not update topics for this user', '', __LINE__, __FILE__, $sql);
  173. }
  174.  
  175. $sql = "UPDATE " . VOTE_USERS_TABLE . "
  176. SET vote_user_id = " . DELETED . "
  177. WHERE vote_user_id = $user_id";
  178. if( !$db->sql_query($sql) )
  179. {
  180. message_die(GENERAL_ERROR, 'Could not update votes for this user', '', __LINE__, __FILE__, $sql);
  181. }
  182.  
  183. $sql = "UPDATE " . GROUPS_TABLE . "
  184. SET group_moderator = " . $userdata['user_id'] . "
  185. WHERE group_moderator = $user_id";
  186. if( !$db->sql_query($sql) )
  187. {
  188. message_die(GENERAL_ERROR, 'Could not update group moderators', '', __LINE__, __FILE__, $sql);
  189. }
  190.  
  191. $sql = "DELETE FROM " . USERS_TABLE . "
  192. WHERE user_id = $user_id";
  193. if( !$db->sql_query($sql) )
  194. {
  195. message_die(GENERAL_ERROR, 'Could not delete user', '', __LINE__, __FILE__, $sql);
  196. }
  197.  
  198. $sql = "DELETE FROM " . USER_GROUP_TABLE . "
  199. WHERE user_id = $user_id";
  200. if( !$db->sql_query($sql) )
  201. {
  202. message_die(GENERAL_ERROR, 'Could not delete user from user_group table', '', __LINE__, __FILE__, $sql);
  203. }
  204.  
  205. $sql = "DELETE FROM " . GROUPS_TABLE . "
  206. WHERE group_id = " . $row['group_id'];
  207. if( !$db->sql_query($sql) )
  208. {
  209. message_die(GENERAL_ERROR, 'Could not delete group for this user', '', __LINE__, __FILE__, $sql);
  210. }
  211.  
  212. $sql = "DELETE FROM " . AUTH_ACCESS_TABLE . "
  213. WHERE group_id = " . $row['group_id'];
  214. if( !$db->sql_query($sql) )
  215. {
  216. message_die(GENERAL_ERROR, 'Could not delete group for this user', '', __LINE__, __FILE__, $sql);
  217. }
  218.  
  219. $sql = "DELETE FROM " . TOPICS_WATCH_TABLE . "
  220. WHERE user_id = $user_id";
  221. if ( !$db->sql_query($sql) )
  222. {
  223. message_die(GENERAL_ERROR, 'Could not delete user from topic watch table', '', __LINE__, __FILE__, $sql);
  224. }
  225. $sql = "DELETE FROM " . BANLIST_TABLE . "
  226. WHERE ban_userid = $user_id";
  227. if ( !$db->sql_query($sql) )
  228. {
  229. message_die(GENERAL_ERROR, 'Could not delete user from banlist table', '', __LINE__, __FILE__, $sql);
  230. }
  231.  
  232. $sql = "DELETE FROM " . SESSIONS_TABLE . "
  233. WHERE session_user_id = $user_id";
  234. if ( !$db->sql_query($sql) )
  235. {
  236. message_die(GENERAL_ERROR, 'Could not delete sessions for this user', '', __LINE__, __FILE__, $sql);
  237. }
  238.  
  239. $sql = "DELETE FROM " . SESSIONS_KEYS_TABLE . "
  240. WHERE user_id = $user_id";
  241. if ( !$db->sql_query($sql) )
  242. {
  243. message_die(GENERAL_ERROR, 'Could not delete auto-login keys for this user', '', __LINE__, __FILE__, $sql);
  244. }
  245.  
  246. $sql = "SELECT privmsgs_id
  247. FROM " . PRIVMSGS_TABLE . "
  248. WHERE privmsgs_from_userid = $user_id
  249. OR privmsgs_to_userid = $user_id";
  250. if ( !($result = $db->sql_query($sql)) )
  251. {
  252. message_die(GENERAL_ERROR, 'Could not select all users private messages', '', __LINE__, __FILE__, $sql);
  253. }
  254.  
  255. while ( $row_privmsgs = $db->sql_fetchrow($result) )
  256. {
  257. $mark_list[] = $row_privmsgs['privmsgs_id'];
  258. }
  259. if ( count($mark_list) )
  260. {
  261. $delete_sql_id = implode(', ', $mark_list);
  262.  
  263. $delete_text_sql = "DELETE FROM " . PRIVMSGS_TEXT_TABLE . "
  264. WHERE privmsgs_text_id IN ($delete_sql_id)";
  265. $delete_sql = "DELETE FROM " . PRIVMSGS_TABLE . "
  266. WHERE privmsgs_id IN ($delete_sql_id)";
  267. if ( !$db->sql_query($delete_sql) )
  268. {
  269. message_die(GENERAL_ERROR, 'Could not delete private message info', '', __LINE__, __FILE__, $delete_sql);
  270. }
  271. if ( !$db->sql_query($delete_text_sql) )
  272. {
  273. message_die(GENERAL_ERROR, 'Could not delete private message text', '', __LINE__, __FILE__, $delete_text_sql);
  274. }
  275. }
  276. }
  277. message_die(GENERAL_MESSAGE, 'Юзеры отправились фтопку');
  278. }
  279.  
  280. ?>