View Full Version : Exporting a VBulletin Mod...
Jaxel
03-04-2009, 03:22 PM
Okay, so I wrote a vBulletin mod, and I would like to be able to use it on a website that DOESN'T have vBulletin on it. I was wondering if there was a way I could write aliases for the vBulletin functions, and then simply add an include at the beginning of the php file...
For instance, I am using the following function: $vbulletin->db->query_read()... I know I can simply REPLACE the line in my script with mysql_query(), but I would prefer to use the same files for both versions of my script.
Is there a way I can do something like...
$vbulletin->db->query_read() = mysql_query();
$vbulletin->db->query_write() = mysql_query();
Is this possible?
TigerC10
03-04-2009, 03:36 PM
The assignments you're talking about replace query_read() and query_write() with a generic mysql_query() function. There is no point in this because the reason for the difference between read and write are for security measures. Replacing the read and write functions would open your board up to more potential security exploits.
Furthermore, there's already a $vbulletin->db->mysql_query() function. You should just use that if you don't want to employ the extra security of query_read and query_write.
However if you want your generic mysql_query(); function to act like read or write you should put something in your php file like this:
function mysql_query($stmnt){
$vbulletin->db->query_read($stmnt);
}
or
function mysql_query($stmnt){
$vbulletin->db->query_write($stmnt);
}
or even better...
function mysql_query($stmnt){
if( stripos($stmnt, "select") ) {
$vbulletin->db->query_read($stmnt);
} else {
$vbulletin->db->query_write($stmnt);
}
}
Then you'd just call mysql_query() without making reference to $db or $vbulletin before it.
However, this adds an extra layer of abstraction that you don't really need. Furthermore, it would be adding more calls to the program stack that runs on the PHP engine, and while it won't be noticible for small boards if you have this code on a large board it will slow down your webserver.
EDIT:
Oh I see, you're porting the mod. You would need to define a vbulletin class that contains the stuff you need... like so
class vbulletin {
class db {
function query_write($stmnt)
{
mysql_query($stmnt);
}
function query_read($stmnt)
{
mysql_query($stmnt);
}
}
$db = new db;
}
$vbulletin = new vbulletin;
Once you re-define those in place of your include 'global.php' (the global php file for vbulletin) then it should work.
Jaxel
03-04-2009, 03:43 PM
Tiger, thanks... but thats the OPPOSITE of what I want to do...
The code you use would let me take a non-vBulletin mod, and make it a vBulletin mod... I want to do the reverse.
TigerC10
03-04-2009, 03:45 PM
Yeah, I just caught that. Edited my previous post.
Jaxel
03-04-2009, 03:56 PM
thanks my good man...
--------------- Added 1236205635 at 1236205635 ---------------
Hey Tiger... I put in that code... but I am getting an error...
Parse error: syntax error, unexpected T_CLASS, expecting T_FUNCTION in ********
TigerC10
03-05-2009, 03:42 AM
Oh! I think I forgot a keyword. Try this:
class vbulletin {
var $db;
class db {
function query_write($stmnt)
{
mysql_query($stmnt);
}
function query_read($stmnt)
{
mysql_query($stmnt);
}
}
$this->db = new db;
}
$vbulletin = new vbulletin;
Dismounted
03-05-2009, 04:36 AM
Note that if your using other vBulletin functions (such as the input cleaner, etc., they will not work without replacing them).
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, vBulletin Solutions Inc.