View Single Post
  #3  
Old 11-17-2011, 11:15 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I don't know how to do it in SQL, but you could use this script:

PHP Code:
<?php
    
    
require_once("global.php");
    
    
// remove this group from users who have this group as a membergroup (secondary group)
    
$usergroupid X// change to group id to remove
    
$casesqlm $casesqli '';
    
$updateusersm $updateusersi = array();

    echo (
"Removing users from secondary group id=" $usergroupid "<BR/><BR/>\r\n");
    
flush();
    
$users $db->query_read("
        SELECT userid, username, membergroupids, infractiongroupids
        FROM " 
TABLE_PREFIX "user
        WHERE FIND_IN_SET('" 
$usergroupid "', membergroupids)
    "
);
    
    if (
$db->num_rows($users))
    {
        while(
$user $db->fetch_array($users))
        {
            if (!empty(
$user['membergroupids']))
            {
                
$membergroups fetch_membergroupids_array($userfalse);
                foreach(
$membergroups AS $key => $val)
                {
                    if (
$val == $usergroupid)
                    {
                        unset(
$membergroups["$key"]);
                    }
                }
                
$user['membergroupids'] = implode(','$membergroups);
                
$casesqlm .= "WHEN $user[userid] THEN '$user[membergroupids]' ";
                
$updateusersm[] = $user['userid'];
            }
        }

        
// do big update to get rid of this usergroup from matched members' membergroupids
        
if (!empty($casesqlm))
        {
            
$db->query_write("
                UPDATE " 
TABLE_PREFIX "user SET
                membergroupids = CASE userid
                
$casesqlm
                ELSE '' END
                WHERE userid IN(" 
implode(','$updateusersm) . ")
            "
);
        }
}

die(
"Done.");
First you probably want to make a backup of your database, or at least the user table. And you might want to close your forum while you run this.

Next, create a new php file (like maybe removegroup.php) and put in the above code. Then change this line

PHP Code:
    $usergroupid X// change to group id to remove 

to change X to the group id your want to remove. Then run the script (go to it with your browser).

When you're done you'll probably want to remove it.

BTW, this code comes from admincp/usergroup.php where it's used to remove users from a group when the group is being deleted.
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01160 seconds
  • Memory Usage 1,793KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_php
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete