Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
  #1  
Old 03-04-2009, 03:22 PM
Jaxel Jaxel is offline
 
Join Date: Sep 2005
Posts: 1,160
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default 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?
Reply With Quote
  #2  
Old 03-04-2009, 03:36 PM
TigerC10's Avatar
TigerC10 TigerC10 is offline
 
Join Date: Apr 2006
Location: Austin, TX
Posts: 616
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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.
Reply With Quote
  #3  
Old 03-04-2009, 03:43 PM
Jaxel Jaxel is offline
 
Join Date: Sep 2005
Posts: 1,160
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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.
Reply With Quote
  #4  
Old 03-04-2009, 03:45 PM
TigerC10's Avatar
TigerC10 TigerC10 is offline
 
Join Date: Apr 2006
Location: Austin, TX
Posts: 616
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yeah, I just caught that. Edited my previous post.
Reply With Quote
  #5  
Old 03-04-2009, 03:56 PM
Jaxel Jaxel is offline
 
Join Date: Sep 2005
Posts: 1,160
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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 ********
Reply With Quote
  #6  
Old 03-05-2009, 03:42 AM
TigerC10's Avatar
TigerC10 TigerC10 is offline
 
Join Date: Apr 2006
Location: Austin, TX
Posts: 616
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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
Reply With Quote
  #7  
Old 03-05-2009, 04:36 AM
Dismounted's Avatar
Dismounted Dismounted is offline
 
Join Date: Jun 2005
Location: Melbourne, Australia
Posts: 15,047
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Note that if your using other vBulletin functions (such as the input cleaner, etc., they will not work without replacing them).
Reply With Quote
Reply

Thread Tools
Display Modes

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 07:11 PM.


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.04233 seconds
  • Memory Usage 2,231KB
  • Queries Executed 11 (?)
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_php
  • (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_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