Version: 1.05, by makaiguy
Developer Last Online: Oct 2016
Version: 3.5.4
Rating:
Released: 03-31-2006
Last Update: 06-05-2006
Installs: 18
Uses Plugins
Re-useable Code Translations
No support by the author.
Here's a little something to give back to this community that has been of such help to me.
With this plugin, you can have a user entered into or removed from a secondary usergroup according to several types of controls that can be placed in the user's profile via custom fields. This acts only on SECONDARY usergroups and will not affect the user's PRIMARY usergroup.
At each login, the plugin will check for the appropriate setting in the user's profile, then add or remove the user from the specified membergroup as appropriate. Note that this does not act instantaneously upon entry of the data in the profile, but requires a new login for this to take effect. [Starting with vB 3.6.4 (maybe earlier, I didn't install anything between 3.5.4 and 3.6.4) this will take effect with one or two page reloads.]
Controls currently available:
1) Password for single usergroup
2) Yes/No choice for single usergroup via radio button
3) Choose one of several usergroups via radio buttons
4) Choose any of several usergroups via multiple checkboxes
Note that you may write your own additional controls and use the two included functions to do the actual insertion into, and removal from, the target usergroups.
Tested with vB 3.5.4, 3.6.4, 3.6.7-PL1, 3.8.7PL3 only.
Full instructions are in the downloadable text file autojoin.txt.
Update log:
1.00 - Initial release
1.01 - Sorts output membergroups numerically plus a few other small changes
1.02 - Rewritten using defined functions for adding to, and removing from, memberbgroups. This should make it easier to follow the logic and to adapt the code for other situations (e.g.checkboxes or radio buttons instead of text profile fields)
1.03 - InGroup() and OutGroup() functions rewritten to make them more useful when dealing with other situations than the somewhat restricted application of entry/exit of specific membergroup via stored password.
1.03.1 - Additional tweaking of InGroup() and OutGroup() functions. Tested extensively and seem to be working as intended. Tested examples of using via radio buttons instead of text field added.
1.04 - Added protection against doing anything re user's current PRIMARY usergroup in secondary usergroup list. Functions renamed to IntoGroup() and OutOfGroup().
19 April 2006 - all code moved from this thread into the downloadable text file.
1.05 - Added control for using multiple checkboxes to choose any of several usergroups.
22 May 2007 - tested with vB 3.6.7-PL1
24 Sep 2012 - tested with vB 3.8.7-PL3
Show Your Support
This modification may not be copied, reproduced or published elsewhere without author's permission.
I've updated to version 1.03. When trying to adapt for situations other than the narrow password-in-custom-field control, some modifications were necessary, as the 1.02 code did not deal well with situations where no radio button choice had yet been made by the user.
[S]Code in first post reflects latest version 1.03.[/S]
[S]See also the second post which has been updated with working code to use radio buttons in custom profile field to allow user to select one of several usergroups.[/S]
i want to check if the user has in "field5" "women", then move him to usergroup "20". If he has "men", let him in this group.
Maybe you can wrote me a plugin, cause its to confusing for me what here is written, sorry.
See the second post. The revised code there fits your situation exactly. Set up your custom field in the profile as a single choice radio button, with the two 'options' being 'men' and 'women'.
If i activate the plugin, then this error comes: Fatal error: Call to undefined function: outgroup() in /home/********l/public_html/forum/global.php(349) : eval()'d code on line 86
If i deactivate, everything looks good.
Btw, the plugin doesnt work for me, maybe you can take a look on it:
I have three fields, one for women (written in german/turkish)
one for men, and one for "no i dont want to give this info", also in german/turkish. The only with a new usergroup is the first (groupid 20)
If i activate the plugin, then this error comes: Fatal error: Call to undefined function: outgroup() in /home/********l/public_html/forum/global.php(349) : eval()'d code on line 86
If i deactivate, everything looks good.
Btw, the plugin doesnt work for me, maybe you can take a look on it:
I have three fields, one for women (written in german/turkish)
one for men, and one for "no i dont want to give this info", also in german/turkish. The only with a new usergroup is the first (groupid 20)
Sorry, this is my fault. In 1.04 I changed the function names but failed to update to the new names in the code that called them. Replace the 'Do the work' section with:
PHP Code:
// Do the work // Proceed only if there is a user choice if ($fieldval != '') { if($ug[0] != '') { $iii = 0; // Check user choice against possible options foreach ($choice_text as $value) { // If we have a match, add to usergroups if ($fieldval == $choice_text[$iii]) { $ugarr = IntoGroup($ugarr, $ug[$iii], $userid); } // If we have no match, remove from usergroups else { $ugarr = OutOfGroup($ugarr, $ug[$iii], $userid); } $iii++; } } }
I've edited all three scripts in the first and second posts in the thread with this correction.
Also note that you have a problem with the third option you entered. That should be
Code:
// THIRD radio button option
// Text shown in radio button for option
$choice_text[2] = 'keine Angabe/Bilgi yok';
// Associated usergroup number
$ug[2] = '2';
All code has been removed from the first two posts in this thread. The latest versions of everything will always be located in the downloadable text file.
Ok, now it works, any hint to make it for the primary usergroup? Cause i want to move the primary usergroup, not the secondary ones.
In AdminCP, when you try to add a person into a secondary usergroup which also happens to be their current primary usergroup it won't let you, so I wrote that same restriction into the code for this plugin.
If you want to change only the primary usergroup, your query needs to update usergroupid instead of membergroupids. Also, since there can only be one primary usergroup, it is a simpler operation because you just reset usergroupid to the new value and don't have to worry about leaving any other primary usergroups alone.
This is untested, but it ought to be at least close to what you need:
PHP Code:
// Place user in/out of selected single PRIMARY // usergroup, according to selection made in profile, via // custom radio button field. ver 1.04
// ************** UNTESTED CODE ****************
// Enter values in the strings below for your forum // custom field containing your radio button $radio_field = 'fieldX'; // FIRST radio button option // Text shown in radio button for option $choice_text[0] = 'Choice1'; // Associated usergroup number $ug[0] = 'XX'; // SECOND radio button option // Text shown in radio button for option $choice_text[1] = 'Choice2'; // Associated usergroup number $ug[1] = 'YY'; // add additional radio button choices as needed
// You don't need to enter anything below here // Derive additional needed variables $userid = ($vbulletin->userinfo['userid']); $pgrp = $vbulletin->userinfo['usergroupid'])); $new_pgrp = $pgrp; $fieldval = $vbulletin->userinfo[$radio_field];
// Do the work // Proceed only if there is a user choice if ($fieldval != '') { if($ug[0] != '') { $iii = 0; // Check user choice against possible options foreach ($choice_text as $value) { // If we have a match, set as new primary usergroup if ($fieldval == $choice_text[$iii]) { $new_pgrp = $ug[$iii]; } $iii++; } } // if new group different than current group if ($new_gprp != $pgrp) { // Put updated usergroup into database $updatefields = $vbulletin->db->query(" UPDATE user SET usergroupid='$new_gprp' WHERE userid=$usrid "); } }