diff --git a/upload/ajax.php b/upload/ajax.php index fed3291e6..e51d5b065 100644 --- a/upload/ajax.php +++ b/upload/ajax.php @@ -42,6 +42,10 @@ switch ($ajax->action) case 'user_register': require(INC_DIR .'functions_validate.php'); break; + + case 'manage_user': + require(INC_DIR .'functions_admin.php'); + break; } // position in $ajax->valid_actions['xxx'] @@ -63,13 +67,13 @@ class ajax_common 'edit_user_profile' => array('admin'), 'change_user_rank' => array('admin'), 'change_user_opt' => array('admin'), - 'delete_userdata' => array('admin'), 'change_tor_status' => array('mod'), 'mod_action' => array('mod'), 'gen_passkey' => array('user'), 'change_torrent' => array('user'), + 'manage_user' => array('user'), 'view_post' => array('guest'), 'view_torrent' => array('guest'), @@ -412,17 +416,17 @@ class ajax_common $this->response['html'] = $html; $this->response['mode'] = $mode; } - + function get_forum_mods() { global $lang, $datastore; - + $forum_id = (int) $this->request['forum_id']; - + $datastore->enqueue(array( 'moderators', )); - + $moderators = array(); $mod = $datastore->get('moderators'); @@ -433,7 +437,7 @@ class ajax_common $moderators[] = ''. $mod['name_users'][$user_id] .''; } } - + if (isset($mod['mod_groups'][$forum_id])) { foreach ($mod['mod_groups'][$forum_id] as $group_id) @@ -441,10 +445,10 @@ class ajax_common $moderators[] = ''. $mod['name_groups'][$group_id] .''; } } - + $html = ': '; $html .= ($moderators) ? join(', ', $moderators) : $lang['NONE']; - + $this->response['html'] = ''.$html.''; unset($moderators, $mod); $datastore->rm('moderators'); @@ -484,10 +488,10 @@ class ajax_common { require(AJAX_DIR .'posts.php'); } - - function delete_userdata() + + function manage_user() { - require(AJAX_DIR .'delete_userdata.php'); + require(AJAX_DIR .'manage_user.php'); } } diff --git a/upload/ajax/delete_userdata.php b/upload/ajax/manage_user.php similarity index 67% rename from upload/ajax/delete_userdata.php rename to upload/ajax/manage_user.php index be18b4a34..3049a6d3a 100644 --- a/upload/ajax/delete_userdata.php +++ b/upload/ajax/manage_user.php @@ -6,55 +6,66 @@ global $userdata, $lang; $mode = (string) $this->request['mode']; $user_id = $this->request['user_id']; - + switch($mode) { case 'delete_profile': if ($userdata['user_id'] == $user_id) $this->ajax_die($lang['USER_DELETE_ME']); if (empty($this->request['confirmed'])) $this->prompt_for_confirm($lang['USER_DELETE_CONFIRM']); - - if ($user_id != 2 && $user_id != BOT_UID) - { - require(INC_DIR .'functions_admin.php'); + if ($user_id != BOT_UID) + { user_delete($user_id); delete_user_sessions($user_id); - + $this->response['info'] = $lang['USER_DELETED']; } else $this->ajax_die($lang['USER_DELETE_CSV']); break; - - case 'delete_message': + + case 'delete_topics': if (empty($this->request['confirmed']) && $userdata['user_id'] == $user_id) $this->prompt_for_confirm($lang['DELETE_USER_POSTS_ME']); - if (empty($this->request['confirmed'])) $this->prompt_for_confirm($lang['DELETE_USER_POSTS_CONFIRM']); - + if (empty($this->request['confirmed'])) $this->prompt_for_confirm('Удалить все сообщения и все начатые юзером топики целиком?'); + if (IS_ADMIN) { - require(INC_DIR .'functions_admin.php'); - - post_delete('user', $user_id); - + $user_topics = DB()->fetch_rowset("SELECT topic_id FROM ". BB_TOPICS ." WHERE topic_poster = $user_id", 'topic_id'); + $deleted_topics = topic_delete($user_topics); + $deleted_posts = post_delete('user', $user_id); + $this->response['info'] = $lang['USER_DELETED_POSTS']; } else $this->ajax_die($lang['NOT_ADMIN']); break; - + + case 'delete_message': + if (empty($this->request['confirmed']) && $userdata['user_id'] == $user_id) $this->prompt_for_confirm($lang['DELETE_USER_POSTS_ME']); + if (empty($this->request['confirmed'])) $this->prompt_for_confirm('Удалить все сообщения, кроме заглавных?'); + + if (IS_ADMIN) + { + post_delete('user', $user_id); + + $this->response['info'] = $lang['USER_DELETED_POSTS']; + } + else $this->ajax_die($lang['NOT_ADMIN']); + break; + case 'user_activate': if (empty($this->request['confirmed'])) $this->prompt_for_confirm($lang['DEACTIVATE_CONFIRM']); - + DB()->query("UPDATE ". BB_USERS ." SET user_active = '1' WHERE user_id = ". $user_id); - + $this->response['info'] = $lang['USER_ACTIVATE_ON']; break; - + case 'user_deactivate': - if ($userdata['user_id'] == $user_id) $this->ajax_die($lang['USER_DEACTIVATE_ME']); + if ($userdata['user_id'] == $user_id) $this->ajax_die($lang['USER_DEACTIVATE_ME']); if (empty($this->request['confirmed'])) $this->prompt_for_confirm($lang['ACTIVATE_CONFIRM']); - + DB()->query("UPDATE ". BB_USERS ." SET user_active = '0' WHERE user_id = ". $user_id); delete_user_sessions($user_id); - + $this->response['info'] = $lang['USER_ACTIVATE_OFF']; break; } diff --git a/upload/templates/default/usercp_viewprofile.tpl b/upload/templates/default/usercp_viewprofile.tpl index 6830ec335..e0ed064f7 100644 --- a/upload/templates/default/usercp_viewprofile.tpl +++ b/upload/templates/default/usercp_viewprofile.tpl @@ -92,9 +92,13 @@ $(document).ready(function(){ {action: "edit_user_profile", id: "u_up_release"} {action: "edit_user_profile", id: "u_up_bonus"} - - +