vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   Modification Requests/Questions (Unpaid) (https://vborg.vbsupport.ru/forumdisplay.php?f=112)
-   -   Change primary usergroup based on registration field (https://vborg.vbsupport.ru/showthread.php?t=73335)

DougM 12-26-2004 06:02 PM

Change primary usergroup based on registration field
 
I'm certain this must have been addressed but cannot find it.

I need to change a user's primary usergroup based on their own selection from a menu "Please choose usergroup A, B or C"

I would like this to be done at registration via a custom profile field. I don't know how this would be done as I am also using email verification which dumps everyone into the same Registered User group. Any ideas?

Basically I just need users to select their own primary usergroup without my intervention, if not at registration, then somewhere. I'm really struggling with this. Any help or ideas are most appreciated.

Here is what I tried from another thread. In register.php changed
Code:

        if ($userinfo['coppauser'] OR ($vboptions['moderatenewmembers'] AND !$userinfo['posts']))
                {
                        // put user in moderated group
                        $user['usergroupid'] = 4;
                }
                if (empty($user['usergroupid']))
                {
                        $user['usergroupid'] = 2; // sanity check
                }

to
Code:

                if ($userinfo['coppauser'] OR ($vboptions['moderatenewmembers'] AND !$userinfo['posts']))
                {
                        // put user in moderated group
                        $user['usergroupid'] = 4;
                }
                if (empty($user['usergroupid']))
                {
                        $user['usergroupid'] = 2; // sanity check
                }
                if ($userfield['field11']=='Arch') // change this to suit you
                {
                  $user['usergroupid'] = 17;  // change this to suit you.
                }

Where 'Arch' is the choice from a selection drop-down from custom field 11 and 17 is the group I want them to join.

I actually want to have 3 choices (groups). Am I on the right track here?

jzewatsky 01-27-2005 01:59 AM

Has this gone anywhere. I'd love this on my site!

cocjh1 04-15-2005 02:38 PM

Has anyone managed to implement this feature?
Would love to have this on my site.

C:

cocjh1 04-20-2005 02:53 PM

Does anybody have an thoughts on how to implement this?

I require users to validate their email address, so after registration they are put into the 'Users Awaiting Email Confirmation' usergroup. I can't see how to remember their primary group choice so to move them after validating their email address.

Any ideas?

C:

twoseven 04-20-2005 05:04 PM

you could always make a field in the database to remember a,b,c and after the user verifies his/her email addy then it looks for the a,b,c and puts the usergroup to that

makaiguy 06-17-2005 12:13 PM

What would be the query code to add a user to a particular usergroup. Likewise, what would be the query code to remove a person from a particular group? This could then be added to php_include_start template.

I think if we knew that, many of us could work out our own conditionals as to how to apply it.

In my case, I'd like it to add/remove from an additional usergroup and not affect the user's primary group.

Andreas 06-17-2005 12:45 PM

Add:

[sql] update user set membergroupids=if(membergroupids='', 'X', concat_ws(',', membergroupids, 'X')) where not find_in_set('X', membergroupids) and conditions[/sql]

Remove
[sql]update user set membergroupids=if(instr(membergroupids, ',X') >0, replace(membergroupids, ',X', ''), replace(membergroupids, 'X,', '')) where conditions[/sql]

X is the usergroup you want to add/remove, conditions are any conditions that apply (eg. userid=Y or smth.)
But executing such queries in phpinclude_start is not a good idea IMHO - and won't affect the current user settings.

To assign a User to a secondary usergroup based on the selection of a profile field, I released suich a Hack some time ago.

makaiguy 06-18-2005 01:37 AM

Quote:

Originally Posted by KirbyDE
But executing such queries in phpinclude_start is not a good idea IMHO - and won't affect the current user settings.

Thanks so much, KirbyDE. Can you suggest a better place to execute the code that WOULD affect the current user settings?

Quote:

Originally Posted by KirbyDE
To assign a User to a secondary usergroup based on the selection of a profile field, I released suich a Hack some time ago.

I went and checked this out. Your hack looks good for a setting the user would choose during registration, but I need something that also acts dynamically as they edit the field entry in their profile sometime after registration.

makaiguy 06-23-2005 05:31 PM

Follow up, to give back to the community. I've now got this working, after embellishing what KirbyDE suggested a bit. Many thanks to Kirby for pointing in the right direction.

To add user to secondary user group X:
PHP Code:

// if no membergroupids already set, set to X
     
if ($bbuserinfo[membergroupids] == '')  
     {  
        
$updatefields $DB_site->query("
            UPDATE user
            SET membergroupids='X'          
            WHERE userid=
$bbuserinfo[userid]
        "
);
     }
// else if group X not found in existing list, add X to list
     
elseif ((strpos($bbuserinfo[membergroupids], 'X'))=== false
     {  
        
$updatefields $DB_site->query("
            UPDATE user
            SET membergroupids=concat_ws(',', membergroupids, 'X')  
            WHERE userid=
$bbuserinfo[userid]
        "
);
     }
  } 

To remove user from secondary group X:
PHP Code:

// if X only usergroup listed, blank it out
    
if ($bbuserinfo[membergroupids] == 'X')            
    {                                                   
      
$updatefields $DB_site->query("
          UPDATE user
          SET membergroupids=''                             
          WHERE (userid=
$bbuserinfo[userid])
      "
);
    }
// else X could be one of several. If it's there, remove it and its comma
    
else                                                 
    {                                                    
      
$updatefields $DB_site->query("
          UPDATE user
          SET membergroupids=if(instr(membergroupids, ',X') >0, replace(membergroupids, ',X', ''), replace(membergroupids, 'X,', ''))
          WHERE (userid=
$bbuserinfo[userid]) AND (find_in_set('X', membergroupids))
      "
);
    }
  } 

So a question. Still doing this in phpinclude_start. Is there a better place?


All times are GMT. The time now is 05:16 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.01132 seconds
  • Memory Usage 1,756KB
  • 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_code_printable
  • (2)bbcode_php_printable
  • (2)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (9)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