Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 3.5 > vBulletin 3.5 Add-ons
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
AUTOJOIN - Auto-entry in membergroup via field in profile Details »»
AUTOJOIN - Auto-entry in membergroup via field in profile
Version: 1.05, by makaiguy makaiguy is offline
Developer Last Online: Oct 2016 Show Printable Version Email this Page

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.

Comments
  #22  
Old 04-14-2006, 05:58 AM
makaiguy's Avatar
makaiguy makaiguy is offline
 
Join Date: May 2004
Location: Aiken, SC, USA
Posts: 150
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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]

All Code now included in download file.
Reply With Quote
  #23  
Old 04-14-2006, 06:03 AM
makaiguy's Avatar
makaiguy makaiguy is offline
 
Join Date: May 2004
Location: Aiken, SC, USA
Posts: 150
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by trigon
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'.
Reply With Quote
  #24  
Old 04-14-2006, 03:27 PM
makaiguy's Avatar
makaiguy makaiguy is offline
 
Join Date: May 2004
Location: Aiken, SC, USA
Posts: 150
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Version 1.03.1 now in place. See first and second posts in thread.
Reply With Quote
  #25  
Old 04-16-2006, 11:12 PM
makaiguy's Avatar
makaiguy makaiguy is offline
 
Join Date: May 2004
Location: Aiken, SC, USA
Posts: 150
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Version 1.04 is now in place. It adds a check to prevent modifying the user's PRIMARY usergroup.
Reply With Quote
  #26  
Old 04-18-2006, 11:35 PM
trigon trigon is offline
 
Join Date: Dec 2005
Posts: 91
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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)
Reply With Quote
  #27  
Old 04-19-2006, 03:35 AM
makaiguy's Avatar
makaiguy makaiguy is offline
 
Join Date: May 2004
Location: Aiken, SC, USA
Posts: 150
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by trigon
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';
Reply With Quote
  #28  
Old 04-19-2006, 10:16 PM
trigon trigon is offline
 
Join Date: Dec 2005
Posts: 91
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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.
Reply With Quote
  #29  
Old 04-19-2006, 10:25 PM
makaiguy's Avatar
makaiguy makaiguy is offline
 
Join Date: May 2004
Location: Aiken, SC, USA
Posts: 150
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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.
Reply With Quote
  #30  
Old 04-19-2006, 10:46 PM
makaiguy's Avatar
makaiguy makaiguy is offline
 
Join Date: May 2004
Location: Aiken, SC, USA
Posts: 150
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by trigon
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
              "
);
          }
        } 
Reply With Quote
  #31  
Old 04-19-2006, 10:54 PM
The Chief's Avatar
The Chief The Chief is offline
 
Join Date: Aug 2005
Location: Montreal
Posts: 1,037
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

screen shots?
Reply With Quote
Reply


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 09:39 PM.


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.04963 seconds
  • Memory Usage 2,351KB
  • Queries Executed 25 (?)
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)bbcode_code
  • (2)bbcode_php
  • (3)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)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_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
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete