function delete_user($user_id, $delete_posts = false)
{
    global $forum_db, $db_type, $forum_config;
    $return = ($hook = get_hook('fn_delete_user_start')) ? eval($hook) : null;
    if ($return != null) {
        return;
    }
    // First we need to get some data on the user
    $query = array('SELECT' => 'u.username, u.group_id, g.g_moderator', 'FROM' => 'users AS u', 'JOINS' => array(array('INNER JOIN' => 'groups AS g', 'ON' => 'g.g_id=u.group_id')), 'WHERE' => 'u.id=' . $user_id);
    ($hook = get_hook('fn_delete_user_qr_get_user_data')) ? eval($hook) : null;
    $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
    $user = $forum_db->fetch_assoc($result);
    // Delete any subscriptions
    $query = array('DELETE' => 'subscriptions', 'WHERE' => 'user_id=' . $user_id);
    ($hook = get_hook('fn_delete_user_qr_delete_subscriptions')) ? eval($hook) : null;
    $forum_db->query_build($query) or error(__FILE__, __LINE__);
    // Delete any subscriptions forum
    $query = array('DELETE' => 'forum_subscriptions', 'WHERE' => 'user_id=' . $user_id);
    ($hook = get_hook('fn_delete_user_qr_delete_forum_subscriptions')) ? eval($hook) : null;
    $forum_db->query_build($query) or error(__FILE__, __LINE__);
    // Remove him/her from the online list (if they happen to be logged in)
    $query = array('DELETE' => 'online', 'WHERE' => 'user_id=' . $user_id);
    ($hook = get_hook('fn_delete_user_qr_delete_online')) ? eval($hook) : null;
    $forum_db->query_build($query) or error(__FILE__, __LINE__);
    // Should we delete all posts made by this user?
    if ($delete_posts) {
        @set_time_limit(0);
        // Find all posts made by this user
        $query = array('SELECT' => 'p.id, p.topic_id, t.forum_id, t.first_post_id', 'FROM' => 'posts AS p', 'JOINS' => array(array('INNER JOIN' => 'topics AS t', 'ON' => 't.id=p.topic_id')), 'WHERE' => 'p.poster_id=' . $user_id);
        ($hook = get_hook('fn_delete_user_qr_get_user_posts')) ? eval($hook) : null;
        $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
        while ($cur_post = $forum_db->fetch_assoc($result)) {
            if ($cur_post['first_post_id'] == $cur_post['id']) {
                delete_topic($cur_post['topic_id'], $cur_post['forum_id']);
            } else {
                delete_post($cur_post['id'], $cur_post['topic_id'], $cur_post['forum_id']);
            }
        }
    } else {
        // Set all his/her posts to guest
        $query = array('UPDATE' => 'posts', 'SET' => 'poster_id=1', 'WHERE' => 'poster_id=' . $user_id);
        ($hook = get_hook('fn_delete_user_qr_reset_user_posts')) ? eval($hook) : null;
        $forum_db->query_build($query) or error(__FILE__, __LINE__);
    }
    // Delete the user
    $query = array('DELETE' => 'users', 'WHERE' => 'id=' . $user_id);
    ($hook = get_hook('fn_delete_user_qr_delete_user')) ? eval($hook) : null;
    $forum_db->query_build($query) or error(__FILE__, __LINE__);
    // Delete user avatar
    delete_avatar($user_id);
    // If the user is a moderator or an administrator, we remove him/her from the moderator list in all forums
    // and regenerate the bans cache (in case he/she created any bans)
    if ($user['group_id'] == FORUM_ADMIN || $user['g_moderator'] == '1') {
        clean_forum_moderators();
        // Regenerate the bans cache
        if (!defined('FORUM_CACHE_FUNCTIONS_LOADED')) {
            require FORUM_ROOT . 'include/cache.php';
        }
        generate_bans_cache();
    }
    ($hook = get_hook('fn_delete_user_end')) ? eval($hook) : null;
}
示例#2
0
 // If the group doesn't have any members or if we've already selected a group to move the members to
 if (!$forum_db->num_rows($result) || isset($_POST['del_group'])) {
     ($hook = get_hook('agr_del_group_form_submitted')) ? eval($hook) : null;
     if (isset($_POST['del_group'])) {
         $query = array('UPDATE' => 'users', 'SET' => 'group_id=' . intval($_POST['move_to_group']), 'WHERE' => 'group_id=' . $group_id);
         ($hook = get_hook('agr_del_group_qr_move_users')) ? eval($hook) : null;
         $forum_db->query_build($query) or error(__FILE__, __LINE__);
     }
     // Delete the group and any forum specific permissions
     $query = array('DELETE' => 'groups', 'WHERE' => 'g_id=' . $group_id);
     ($hook = get_hook('agr_del_group_qr_delete_group')) ? eval($hook) : null;
     $forum_db->query_build($query) or error(__FILE__, __LINE__);
     $query = array('DELETE' => 'forum_perms', 'WHERE' => 'group_id=' . $group_id);
     ($hook = get_hook('agr_del_group_qr_delete_group_forum_perms')) ? eval($hook) : null;
     $forum_db->query_build($query) or error(__FILE__, __LINE__);
     clean_forum_moderators();
     // Regenerate the quickjump cache
     if (!defined('FORUM_CACHE_FUNCTIONS_LOADED')) {
         require FORUM_ROOT . 'include/cache.php';
     }
     generate_quickjump_cache();
     ($hook = get_hook('agr_del_group_pre_redirect')) ? eval($hook) : null;
     redirect(forum_link($forum_url['admin_groups']), $lang_admin_groups['Group removed'] . ' ' . $lang_admin_common['Redirect']);
 }
 list($group_title, $num_members) = $forum_db->fetch_row($result);
 // Setup the form
 $forum_page['group_count'] = $forum_page['item_count'] = $forum_page['fld_count'] = 0;
 // Setup breadcrumbs
 $forum_page['crumbs'] = array(array($forum_config['o_board_title'], forum_link($forum_url['index'])), array($lang_admin_common['Forum administration'], forum_link($forum_url['admin_index'])), array($lang_admin_common['Users'], forum_link($forum_url['admin_users'])), array($lang_admin_common['Groups'], forum_link($forum_url['admin_groups'])), $lang_admin_groups['Remove group']);
 ($hook = get_hook('agr_del_group_pre_header_load')) ? eval($hook) : null;
 define('FORUM_PAGE_SECTION', 'users');