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
  #32  
Old 04-19-2006, 11:02 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 The Chief
screen shots?
There are no screen shots because nothing is displayed onscreen. It just sets the user's secondary usergroups when he logs on, according to whatever you have set up.
Reply With Quote
  #33  
Old 04-20-2006, 12:05 AM
trigon trigon is offline
 
Join Date: Dec 2005
Posts: 91
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by makaiguy
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
              "
);
          }
        } 

So i must only use this one? or must i something replace from the old one?
(the values i must change, that i have understand )
Reply With Quote
  #34  
Old 04-20-2006, 12:09 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
So i must only use this one? or must i something replace from the old one?
(the values i must change, that i have understand )
That one only. Edit in your values, and add the third radio button values as before.
Reply With Quote
  #35  
Old 04-20-2006, 02:48 AM
trigon trigon is offline
 
Join Date: Dec 2005
Posts: 91
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

thx, m8, installed it, now i must wait until my girls log in
Reply With Quote
  #36  
Old 04-20-2006, 02:50 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
thx, m8, installed it, now i must wait until my girls log in
You don't have a fake account to test stuff like this on?
Reply With Quote
  #37  
Old 04-20-2006, 02:57 AM
trigon trigon is offline
 
Join Date: Dec 2005
Posts: 91
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

tried with a fake account, but it doesnt go. take a look at the code plz:
// 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 = 'field5';
// FIRST radio button option
// Text shown in radio button for option
$choice_text[0] = 'Weiblich/Bayan';
// Associated usergroup number
$ug[0] = '20';
// SECOND radio button option
// Text shown in radio button for option
$choice_text[1] = 'Männlich/Erkek';
// Associated usergroup number
$ug[1] = '2';
// THIRD radio button option
// Text shown in radio button for option
$choice_text[2] = 'keine Angabe/Bilgi yok';
// Associated usergroup number
$ug[2] = '2';
// 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
  #38  
Old 04-20-2006, 04:26 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
tried with a fake account, but it doesnt go. take a look at the code plz:
We've derailed this topic long enough. Taking this to PM.
Reply With Quote
  #39  
Old 06-04-2006, 10:52 PM
SHalliday's Avatar
SHalliday SHalliday is offline
 
Join Date: Jan 2002
Location: Norwalk, CT
Posts: 117
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

This seems like an awesome hack. So far however I have not been able to get it to work like what I need. After spending the entire day trying different variations I finally decided to ask the experts and post here.

I want members to be able to select one or more public groups to join. I first tried using a multiple-selection checkbox and after not being able to get that to work I setup 7 different single radio button fields and created a different single radio button plugin for each field. That did not work either.

My question is --> Will this work with a multiple-selection checkbox?

I want to create a multiple-selection checkbox and allow members to check off the groups they would like to be a member of. Those that are not checked off, I would like them to be removed from. Can this hack be used to accomplish this?

Appreciate any help and/or assistance you can provide.

Thank you.
Reply With Quote
  #40  
Old 06-06-2006, 02:38 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 SHalliday
My question is --> Will this work with a multiple-selection checkbox?
Sure. It just requires a custom control to interract with the multiple-selection checkbox field. I'm in the middle of sketching it out now. Will be back in a day or two (or sooner if all goes exceptionally well and nothing blows up on my own bbs in the meanwhile).
Reply With Quote
  #41  
Old 06-06-2006, 03:09 AM
SHalliday's Avatar
SHalliday SHalliday is offline
 
Join Date: Jan 2002
Location: Norwalk, CT
Posts: 117
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thank you very much. Looking forward to your custom control script for multiple-selection checkbox field.
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 01:11 AM.


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.04465 seconds
  • Memory Usage 2,344KB
  • 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_php
  • (6)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