Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 General Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 01-13-2009, 07:40 PM
m002.p's Avatar
m002.p m002.p is offline
 
Join Date: Jan 2007
Location: Worcester
Posts: 240
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Plugin Vbulletin Variable for Usergroup ID

Hello everyone,

I have wrote a simple plugin script which runs under hook location login_verify_success which is intended to write the current users IP & Host to another MYSQL database on the same server as vbulletin.

The code ive formulated is pretty simple to me and working in principle, but when I wanted to add a check for vbulletin usergroups, it all went weird.

Basically as you will see in my plugin script, I want to check the usergroup of the member who has logged in successfully, and if they match one defined in the array, then run the MYSQL queries dependant on the output.

However to the point, the original variable I tried was the following:

Code:
if ($vbulletin->userinfo['usergroupid'] == 'x' || 'y' || 'z') 
{
 //Some Code 
}
This worked and didnt. The code within the tags was executed so the conditional worked, however it worked for just about every usergroup and not only the ones defined which puzzled me.

So I tried another way I knew of:

Code:
if ( is_member_of($vbulletin->userinfo, explode(',', X,Y,Z))
{
//Some Code
}
Now the code within the tags just doesnt execute full stop, regardless of the usergroup the member belongs to.

Heres the full script:

Code:
// MYSQL Server Domain                        
$mysqldomain = "DOMAIN";
                                
// MYSQL Server Username                    
$mysqluser = "USER";
                                
// MYSQL Server Password                    
$mysqlpass = "PASS";

// MYSQL Database Name                        
$mysqldb = "TABLE";    

mysql_connect($mysqldomain, $mysqluser, $mysqlpass) or die(mysql_error());
mysql_select_db($mysqldb) or die(mysql_error());

// Define Key Variables
$ip = $_SERVER['REMOTE_ADDR'];
$hostname = gethostbyaddr($ip);

if ( is_member_of($vbulletin->userinfo, explode(',', 9,10,11,19,12,24,20,13))
{

// MYSQL QUERIES

}else{

// DIFFERENT MYSQL QUERIES

}
Any ideas how I can get this working?
On a side note, I have used the $vbulletin->userinfo['userid'] variable in the MYSQL queries and there are no problems.

Thanks for any help in advance.

Matt
Reply With Quote
  #2  
Old 01-13-2009, 08:10 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

No need to do the explode:
PHP Code:
if (is_member_of($vbulletin->userinfo,X,Y,Z)) 
Reply With Quote
  #3  
Old 01-13-2009, 08:15 PM
Bellardia Bellardia is offline
 
Join Date: Jul 2007
Location: Hamilton, Ontario
Posts: 378
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Your explode syntax won't work because you don't even have a string as a parameter.
Is there a reason you're using define database connections when the database is defined inside the $vbulletin class?
Your use of the OR operator is also incorrect.

Try checking their use at php.net
Reply With Quote
  #4  
Old 01-13-2009, 08:23 PM
m002.p's Avatar
m002.p m002.p is offline
 
Join Date: Jan 2007
Location: Worcester
Posts: 240
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Bellardia View Post
Your explode syntax won't work because you don't even have a string as a parameter.
Is there a reason you're using define database connections when the database is defined inside the $vbulletin class?
Your use of the OR operator is also incorrect.

Try checking their use at php.net
Thanks for replying.

The reason why I am defining the database connection info again is due to the fact the database is different to the one I use for vbulletin and which is obviously called from config.php. The server is the same (domain) but the connection info is different due to that factor.

Could you also define what you mean by the OR operator being incorrect? I assume you are referring to the "or die mysql_error()". It has always worked for me :s

Could anyone offer an explanation as to why the first conditional I tried didnt work fully?

Thanks to Lynne and Bellardia

EDIT: This still didnt fix my issue after using Lynne's code, but then I noticed there was a missing closing bracket. All is working as expected, thank you!

Matt
Reply With Quote
  #5  
Old 01-13-2009, 11:21 PM
Bellardia Bellardia is offline
 
Join Date: Jul 2007
Location: Hamilton, Ontario
Posts: 378
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Although not in your main code, you posted this
Code:
if ($vbulletin->userinfo['usergroupid'] == 'x' || 'y' || 'z')
A more correct use is
Code:
if ($vbulletin->userinfo['usergroupid'] == 'x' || $vbulletin->userinfo['usergroupid'] == 'y' || $vbulletin->userinfo['usergroupid'] == 'z')
Reply With Quote
  #6  
Old 01-14-2009, 02:35 AM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by m002.p View Post
EDIT: This still didnt fix my issue after using Lynne's code, but then I noticed there was a missing closing bracket. All is working as expected, thank you!

Matt
Argh! I need to double-check my parenthesis before posting! Sorry about that.
Reply With Quote
  #7  
Old 01-14-2009, 03:30 AM
Dismounted's Avatar
Dismounted Dismounted is offline
 
Join Date: Jun 2005
Location: Melbourne, Australia
Posts: 15,047
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by m002.p View Post
The reason why I am defining the database connection info again is due to the fact the database is different to the one I use for vbulletin and which is obviously called from config.php. The server is the same (domain) but the connection info is different due to that factor.
As long as the MySQL user set in config.php has permissions to read your other database, you can do this inside your query (and save yourself starting another connection):
PHP Code:
$vbulletin->db->query_read("
    SELECT *
    FROM database2.table3.field4
"
); 
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 05:47 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.07253 seconds
  • Memory Usage 2,238KB
  • Queries Executed 13 (?)
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)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (5)bbcode_code
  • (2)bbcode_php
  • (3)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (7)post_thanks_box
  • (7)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (7)post_thanks_postbit_info
  • (7)postbit
  • (7)postbit_onlinestatus
  • (7)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_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
  • 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