The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
#1
|
|||
|
|||
Integrating external script with vB
Hi,
I currently integrate my homepage with vbulletin in order to fetch user login and session data. The code I use to do that is as follows: PHP Code:
PHP Code:
PHP Fatal error: Call to a member function query_first_slave() on a non-object in [DIR]/forums/includes/functions.php on line 1386 Where line 1386 uses $vbulletin->db->query_first_slave to fetch the userinfo. Any ideas why this could be? Is it a scope issue? As a temporary workaround, I've simply placed the code in a separate file and include it whenever I need the integration. I know that a better solution would be to connect to the database only to fetch user data and use my own session, but for now I want to keep things quick and dirty (and secure) |
#2
|
|||
|
|||
Yes, I think it's a scope issue. The vb code is intending to create some global variables but when you put the "require" in a function they're not global.
Edit: maybe if you could figure out which variables those are you could add "global" statements in your function before the require_once('global.php'). |
#3
|
|||
|
|||
Though so - but I can't explain it! I tried making everything that ended up in $GLOBALS after the first code ran global inside the function, but that didn't help either (there were dozens of variables!).
Thanks for the reply- I suppose that instead of calling a function I will just include the code from a while while I'm in the global scope. |
#4
|
|||
|
|||
Hmm...I was curious about this (I'm not really any kind of php expert so I like to figure these things out). I found that if I just put a "global $vbulletin;" at the beginning of the login function it seems to work OK. I guess most of the globals aren't used for what you're doing (unless maybe it's because I don't have all you code? Anyway, the error you posted above goes away).
|
#5
|
|||
|
|||
Let me try again- I could have sworn I tried that, though!
Also, if you want to use functions as if they were in the global scope, here's a nice line of code that does just that (I use it for template evaluations so you don't have to write out the eval() statement every time: PHP Code:
Update: no dice. Maybe my version to PHP is to blame (5.1.6)? Highly unlikely, but possible, I guess. I don't see reason from a coding standpoint that the inclusion from inside the function should work, as even with the variable scope vbulletin shouldn't care. |
#6
|
|||
|
|||
The extract thing is pretty handy, but of course it will only import the global variables that exist already - variables that are created after that line won't automatically be global, of course. And $vbulletin doesn't exist before global.php is included.
|
#7
|
|||
|
|||
I can tell you that it's not your php version. I had a similar problem with php 5.2.17, I fixed it by creating by own global file :P
Either way it's probably a scope issue like kh99 mentioned. |
Thread Tools | |
Display Modes | |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|