Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 General Discussions
  #1  
Old 04-01-2006, 02:20 AM
makaiguy's Avatar
makaiguy makaiguy is offline
 
Join Date: May 2004
Location: Aiken, SC, USA
Posts: 150
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Have rewritten to deal with membergroup numbers comprised of any number of digits. The key was, indeed, to deal with them as an array.

Tested with 3.5.4 - performance with other flavors unknown.

To use you'll need:
1) A custom field in your user profile, into which the user can place the required password.
2) A custom $vbphrase in which to store the required password value

Enter the appropriate values for your forum into the first three variables in the script below, then install the script via vB 3.5's Plug-in Manager. Tie to the 'global_start' hook. At each login, the script will check the user's profile for the membergroup password, then add or remove the user from the membergroup as appropriate. Note that this does not act instantaneously upon entry of the password in the profile, but requires a new login for this to take effect.

PHP Code:
// Add or remove user from secondary usergroup
// according to Pwd value in user's profile

  
global $vbulletin;

  
// Enter values for your forum in the 3 strings below
  
$org_mg 'XX';                      // target membergroup # as string
  
$org_pwfield 'fieldX';           // custom field# in profile as string
  
$org_pwphrase 'org_member_password'// vbphrase name containing pwd

  // You don't need to touch anything below here

  
$org_userid = ($vbulletin->userinfo['userid']);            // userid of user
  
$org_mglist = (''.$vbulletin->userinfo['membergroupids']); // current membergroups string
  
  
$org_mgarr explode(',' $org_mglist);  // convert membergroups to array

  
$org_inmg = (in_array($org_mg$org_mgarr));      // user in target membergroup (true/false)
  
  
$org_haspwd = ($vbulletin->userinfo[$org_pwfield] == $vbphrase[$org_pwphrase]); // User 
                                                    // has correct password in profile (T/F)

  
$org_doupdate false;
  
  if (
$org_haspwd && !$org_ingrp)   // Has password, not in membergroup
  
{
        if (
$org_mglist != '')      // if mglist already populated
        
{
           
$org_comma ',';        // we'll need a comma
        
}      
        
$org_newmg = ($org_mglist $org_comma $org_mg);  // add group to string
        
$org_mglist $org_newmg
        
$org_doupdate true;       // set toggle to update database
  
}
  else                            
  {
    if (!
$org_haspwd && $org_ingrp)   // No password, but is in membergroup    
    
{
      foreach (
$org_arr as $value)         // go thru array
      
{
          if (
$value == $org_mg)           // find target membergroup
          
{
             
$org_arr[$iii] = '';          // set to null
          
}
          
$iii++;
      }
      
$org_newmg implode(',' $arr);  // convert array to string  
      
$org_mglist str_replace(',,' ','$org_newmg);  // remove double comma
      
$org_doupdate true;              // set toggle to update database
    
}
  }  
  if (
$org_doupdate)
  {
     
$updatefields $vbulletin->db->query("
            UPDATE user
            SET membergroupids='
$org_mglist'                             
            WHERE userid=
$org_userid
     "
);
  } 
Reply With Quote
Reply

Thread Tools
Display Modes

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 12:36 AM.


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.06557 seconds
  • Memory Usage 2,235KB
  • Queries Executed 12 (?)
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
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)showthread_list
  • (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_threadedmode.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • 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_threaded
  • showthread_threaded_construct_link
  • 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
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete