View Single Post
  #10  
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
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01224 seconds
  • Memory Usage 1,811KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_php
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)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)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.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_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • 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
  • showpost_complete