Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 Programming Discussions
  #1  
Old 01-08-2011, 06:37 PM
Adan0s Adan0s is offline
 
Join Date: May 2008
Location: Germany
Posts: 45
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Batch deleting Users: How to?

Hey,

I recently scanned my userdatabase for mailadresses known used by spammers. I ended up with like 500 accounts.
Now I want to delete those accs, but I certainly don't want to do it for each one of them via the adminpanel.
I could of course just delete those users from the users-table but there is a huge load if information split over dozens of tables of an user (see class_dm_user.php function delete).

Unfortunately I don't really know how to build the object which is then passed to that function. So, if someone please could point me how to build the array and use that function, so I can delete those 500 datazombies?

thank you.
Reply With Quote
  #2  
Old 01-18-2011, 05:36 PM
Retal Retal is offline
 
Join Date: Nov 2006
Posts: 58
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hey there,
if you haven't solved it yet, I took this out of the admincp/user.php, section "kill", so this is the official process

PHP Code:
$info fetch_userinfo($vbulletin->GPC['userid']);
if (!
$info)
{
    
print_stop_message('invalid_user_specified');
}

if (
$vbulletin->GPC['transfer_groups'])
{
    
// fetch groupmember info for groups that the deleted user has ownership of
    
$sgmember_query $vbulletin->db->query("
        SELECT socialgroup.groupid AS sgroupid, sgmember.*
        FROM " 
TABLE_PREFIX "socialgroup AS socialgroup
        LEFT JOIN " 
TABLE_PREFIX "socialgroupmember AS sgmember
        ON sgmember.groupid = socialgroup.groupid
        AND sgmember.userid = " 
$vbulletin->userinfo['userid'] . "
        WHERE creatoruserid = " 
$vbulletin->GPC['userid'] . "
    "
);

    if (
$vbulletin->db->num_rows($sgmember_query))
    {
        while (
$sgmember $vbulletin->db->fetch_array($sgmember_query))
        {
            
// ensure the current user is a full member of the group
            
if ($sgmember['type'] != 'member')
            {
                
$socialgroupmemberdm datamanager_init('SocialGroupMember'$vbulletin);

                if (
$sgmember['userid'])
                {
                    
$socialgroupmemberdm->set_existing($sgmember);
                }

                
$socialgroupmemberdm->set('userid'$vbulletin->userinfo['userid']);
                
$socialgroupmemberdm->set('groupid'$sgmember['sgroupid']);
                
$socialgroupmemberdm->set('dateline'TIMENOW);
                
$socialgroupmemberdm->set('type''member');

                
$socialgroupmemberdm->save();
            }
        }
        
$vbulletin->db->free_result($sgmember_query);

        
// transfer all of the groups to the current user
        
$vbulletin->db->query_write("
            UPDATE " 
TABLE_PREFIX "socialgroup
            SET creatoruserid = " 
$vbulletin->userinfo['userid'] . ",
                transferowner = 0
            WHERE creatoruserid = " 
$vbulletin->GPC['userid'] . "
        "
);
    }
}

$userdm =& datamanager_init('User'$vbulletinERRTYPE_CP);
$userdm->set_existing($info);
$userdm->delete();
unset(
$userdm); 
Reply With Quote
  #3  
Old 01-19-2011, 01:58 PM
Adan0s Adan0s is offline
 
Join Date: May 2008
Location: Germany
Posts: 45
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks, but I already solved it.

For the people who are interested in it:

PHP Code:
<?php
error_reporting
(E_ALL & ~E_NOTICE);

require_once(
'./global.php');
require_once(
'/includes/adminfunctions_profilefield.php');
require_once(
'/includes/adminfunctions_user.php');

        
$ids = array(1234,1235); 
foreach(
$ids as $id)
{
    
$info fetch_userinfo($id);
    if (!
$info)
    {
        echo 
$id.'fail<br />';
    }
    else
    {
        
$userdm =& datamanager_init('User'$vbulletinERRTYPE_CP);
        
$userdm->set_existing($info);
        
$userdm->delete();
        unset(
$userdm); 
        echo 
$id.'okay<br />';
    }
    unset(
$info);
}
?>
This deletes the member and all information connected to it. The posts and threads are still there, but those are simple to delete by two sql statements.
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 11:21 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.06403 seconds
  • Memory Usage 2,200KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (2)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (3)post_thanks_box
  • (3)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (3)post_thanks_postbit_info
  • (3)postbit
  • (3)postbit_onlinestatus
  • (3)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • 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
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete