vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   Addon not quite working... (https://vborg.vbsupport.ru/showthread.php?t=210986)

dstruct2k 04-12-2009 09:34 AM

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.--

TigerC10 04-13-2009 06:39 AM

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.

dstruct2k 04-13-2009 06:50 AM

Quote:

Originally Posted by TigerC10 (Post 1790042)
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?

TigerC10 04-13-2009 03:40 PM

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.


All times are GMT. The time now is 06:39 AM.

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.01406 seconds
  • Memory Usage 1,739KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_php_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (4)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.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
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete