Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
  #1  
Old 04-12-2009, 09:34 AM
dstruct2k's Avatar
dstruct2k dstruct2k is offline
 
Join Date: Dec 2002
Location: Winnipeg
Posts: 318
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Addon not quite working...

I've done a few mods back before the plugin system... I'm trying my hand at updating a couple hacks but it appears I've made a couple mistakes.

Nothing breaks, but it doesn't work either. I might've picked the wrong hook location, or have some of the code wrong for the new version... Either way, I'd appreciate some help.

This addon is supposed to allow admins to set a list of usergroupids which are randomly picked from when a user registers. So far, all I've had happen is everyone that registers with the addon enabled still goes to usergroup 2. (This doesn't work with email verification, not sure how to tackle that one yet...)

Any pointers? Thanks!


--ATTACHMENT REMOVED, ADDON RELEASED! See this thread.--
Reply With Quote
  #2  
Old 04-13-2009, 06:39 AM
TigerC10's Avatar
TigerC10 TigerC10 is offline
 
Join Date: Apr 2006
Location: Austin, TX
Posts: 616
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I love it when people actually have the code for a mod they're developing. It makes things so much more fun and interesting.

That said, check this out for your Assign Random Usergroup From List plugin at hook register_addmember_process:
PHP Code:
if ($vbulletin->options['fpx_rndm_usrgrp_list'] AND !$vbulletin->options['verifyemail']) {
    
$rndgroups preg_split("/[\s,]+/"$vbulletin->options['fpx_rndm_usrgrp_list']);
    
    
$newusergroupid $rndgroupsrand0count($rndgroups)-) ];
    
    
$userdata->set('usergroupid'$newusergroupid);

Much simpler than your plugin code, should work great for the non-mail verfication boards.

Next, for the mail verification boards...

Hook: register_activate_process
PHP Code:
if ($vbulletin->options['fpx_rndm_usrgrp_list']) {
    
$rndgroups preg_split("/[\s,]+/"$vbulletin->options['fpx_rndm_usrgrp_list']);
    
    
$userinfo['usergroupid'] = $rndgroupsrand0count($rndgroups)-) ];
}
$vbulletin->userinfo['usergroupid'] = $user['usergroupid'] = $userinfo['usergroupid'];
$userdata->set('usergroupid'$user['usergroupid']);

/*//reset some usergroup/usertitle caches
$getusergroupid = iif($userinfo['displaygroupid'] != $userinfo['usergroupid'], $userinfo['displaygroupid'], $user['usergroupid']);

$user_usergroup =& $vbulletin->usergroupcache["$user[usergroupid]"];
$display_usergroup =& $vbulletin->usergroupcache["$getusergroupid"];

//reset the usertitle
$userdata->set_usertitle(
    $user['customtitle'] ? $user['usertitle'] : '',
    false,
    $display_usergroup,
    ($user_usergroup['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canusecustomtitle']) ? true : false,
    ($user_usergroup['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['cancontrolpanel']) ? true : false
);
if ($user['userid'] == $vbulletin->userinfo['userid'])
{
    $vbulletin->userinfo['usergroupid'] = $user['usergroupid'];
    $vbulletin->userinfo['displaygroupid'] = $user['usergroupid'];
}
*/ 
The code in the commented section isn't really necessary. The info should be updated when the cron for it runs, then again if you want to include it that's up to you.
Reply With Quote
  #3  
Old 04-13-2009, 06:50 AM
dstruct2k's Avatar
dstruct2k dstruct2k is offline
 
Join Date: Dec 2002
Location: Winnipeg
Posts: 318
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by TigerC10 View Post
I love it when people actually have the code for a mod they're developing. It makes things so much more fun and interesting.
And I love it when people post such amazingly perfect responses! I'll take a look at where I screwed up, at least I know I was in the right hook location! I'm actually really surprised at myself for that, considering last time I wrote an addon, there were no such things as "hooks" and "plugins"... Code works nicely though, thank you.

Edit: I think there's a slight mistake though... if you "count($rndgroups)" when there's 3 groups in the list, you get a result of 3. At that point, you randomly pick between 0-3... But if 3 is picked, there is no $rndgroups[3] to correspond to it. That's why I had a -1 on mine, to drop the count by 1 then randomly pick. Or am I wrong to do that?
Reply With Quote
  #4  
Old 04-13-2009, 03:40 PM
TigerC10's Avatar
TigerC10 TigerC10 is offline
 
Join Date: Apr 2006
Location: Austin, TX
Posts: 616
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Oh, you're absolutely right. That would have happened with anything except a 0 count (but 0 count shouldn't happen since there has to be something in the field list before it does anything). It was late and I was running on only a few hours of sleep - I'm not surprised I forgot the -1.


Although, someone could enter a comma in the admin options field and that would cause things to get messy. You might want to add a regex verification to that field to force a person to enter correct data from the admin side.

EDIT:
I've posted to your thread regarding the setting verification.
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 12:05 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04707 seconds
  • Memory Usage 2,200KB
  • Queries Executed 13 (?)
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)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (4)post_thanks_box
  • (4)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (4)post_thanks_postbit_info
  • (4)postbit
  • (4)postbit_onlinestatus
  • (4)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_postinfo_query
  • fetch_postinfo
  • 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