PDA

View Full Version : Change primary usergroup based on registration field


DougM
12-26-2004, 06:02 PM
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
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
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:

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

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

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

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:
// 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:
// 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?