vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   Exporting a VBulletin Mod... (https://vborg.vbsupport.ru/showthread.php?t=207348)

Jaxel 03-04-2009 03:22 PM

Exporting a VBulletin Mod...
 
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:

PHP Code:

function mysql_query($stmnt){
     
$vbulletin->db->query_read($stmnt);


or

PHP Code:

function mysql_query($stmnt){
     
$vbulletin->db->query_write($stmnt);


or even better...
PHP Code:

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

PHP Code:

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 [DATE]1236205635[/DATE] at [TIME]1236205635[/TIME] ---------------

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:

PHP Code:

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).


All times are GMT. The time now is 07:22 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.01099 seconds
  • Memory Usage 1,741KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (5)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (7)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete