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

Reply
 
Thread Tools Display Modes
  #1  
Old 12-16-2008, 07:04 PM
kwblue kwblue is offline
 
Join Date: Jan 2006
Posts: 60
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default How do I bring information from a separate database

Hello,

I see that certain plugins (vb_sponsor and others) use the forums database so that they can display information for each forum. To do that, they seem to create new columns in an already large forum datatable.

I already have a database that has information needed for each forum. It has the forumid tied to it so that I could quickly join tables. However - I don't understand how to get that information into my template.

What is the best way to do this? Do I need to take all that information and create new fields in the forum datatable? Or can I somehow write a plugin or something that would allow me to pull the information I want from the already defined datatable?

I really want to do this the best way and work properly with the vBulletin system, but am not quite sure how to proceed.

Thanks in advance.
Reply With Quote
  #2  
Old 12-17-2008, 02:33 AM
Dismounted's Avatar
Dismounted Dismounted is offline
 
Join Date: Jun 2005
Location: Melbourne, Australia
Posts: 15,047
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Depending on where you want the information, you can create a plugin at a hook just before a query's execution (most queries have this hook). From there, you can add a join into the query, using the "database.table" way of referencing tables. This will work as long as the vBulletin MySQL user has access to the other database.
Reply With Quote
  #3  
Old 12-17-2008, 12:21 PM
kwblue kwblue is offline
 
Join Date: Jan 2006
Posts: 60
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks for the answer! That sounds similar to what I was thinking. The table is in the same database, so I have no problems with security access to it.

Now - Since each forumid has information in my new datatable, what is the best way to perform the query? Do I pass a forumid in each time, somehow? Or is there some way I should structure it so that I can immediately pull out the right information.

I'm guessing some sort of array with the forumid as the index?

$MyInformation(forumid)?

That may not be proper php syntax, I'd have to look it up.


so - are arrays the best way to do this or parameter passing? If parameter passing, then how would I set that up as a plugin?

Thanks sooooo much.

--------------- Added [DATE]1229559777[/DATE] at [TIME]1229559777[/TIME] ---------------

ok, been trying to accomplish this, but having a difficult go at it. Here is pretty much what I am trying to do:

1. I created a Plugin:

Code:
$FDetails=$vbulletin->db->query_read("SELECT
`ForumDetails`.`SomeDetail`,
FROM
`ForumDetails` where `ForumDetails`.`forumid` = ".$forum[forumid]);

	while ($FDetails_info= $vbulletin->db->fetch_array($FDetails))
	{    
		$FDetails_info['MyDetails'] = $FDetails_info['SomeDetail'];
    }
2. I set up the hook to be the: forumdata_start

3. In my template (forumhome_forumbit_level2_post) I put the following as a test:

Code:
<!--Testing -->
<if condition="$FDetails_info['MyDetails'] == 1">
&nbsp;FOUND!
</if>


I was hoping that when it got to the forum that I marked 'SomeDetail = 1' in the database, that it would put the text 'FOUND!' in the area of the template I wanted.

That didn't happen I got no errors, but I am assuming that I am doing it wrong. Either the wrong hook (I hope it's that simple) or I am just way off base with what I am trying to do.

Any help would be appreciated.

thanks!

--------------- Added [DATE]1229559977[/DATE] at [TIME]1229559977[/TIME] ---------------

BTW - That template shows the forums on the homepage. Just an FYI incase it is a custom template (I don't know all about the templates myself)
Reply With Quote
  #4  
Old 12-18-2008, 10:05 AM
Dismounted's Avatar
Dismounted Dismounted is offline
 
Join Date: Jun 2005
Location: Melbourne, Australia
Posts: 15,047
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

forumdata_start is inside the forum data manager - this is used to edit or create a forum, not fetch data. What you need to do is to find the query where the forum data is being fetched, and alter it.
Reply With Quote
  #5  
Old 12-18-2008, 10:35 AM
kwblue kwblue is offline
 
Join Date: Jan 2006
Posts: 60
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

ooooh. Doesn't that mean that every time I upgraded after that, I would 'break' the code and have to re-do it?
Reply With Quote
  #6  
Old 12-18-2008, 11:37 AM
Dismounted's Avatar
Dismounted Dismounted is offline
 
Join Date: Jun 2005
Location: Melbourne, Australia
Posts: 15,047
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Altering does not necessarily mean "edit the file directly". Say query A has a variable in it, let's call it $hooks_query_join (very big clue! ), and there's a hook right above it. You plug into that hook and change the variable, thereby altering it.
Reply With Quote
  #7  
Old 12-19-2008, 07:54 PM
kwblue kwblue is offline
 
Join Date: Jan 2006
Posts: 60
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I know what you are saying here So - that is a positive.

Now - I am trying to find where the query is and just can't find the one I want. I'll find it eventually, I think.. Eventually.
Reply With Quote
  #8  
Old 12-20-2008, 02:36 AM
Dismounted's Avatar
Dismounted Dismounted is offline
 
Join Date: Jun 2005
Location: Melbourne, Australia
Posts: 15,047
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

If you are looking at the forum home page, a good place to start would be index.php.
Reply With Quote
  #9  
Old 12-20-2008, 11:13 AM
kwblue kwblue is offline
 
Join Date: Jan 2006
Posts: 60
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Been looking in that one a lot along with the functions_forumlist. I must be too dense to find what I am looking for.

The construct_forum_bit looks like it builds the list and shells it out to the correct template (as far as where I know the html is parsed). However, there are no queries in there to note and I am getting a bit lost looking through it. Maybe just more time trying to understand each line of code will help.

The other area was the 'cache_ordered_forums', but that has no join (except the already filled tachyjoin), so if that was where I needed to spend my time I guess I would have to add my own joins in there too along with my own table fields.

Do you wanna be paid to do a quick example for me of what I want to do?
Reply With Quote
  #10  
Old 12-21-2008, 05:18 PM
kwblue kwblue is offline
 
Join Date: Jan 2006
Posts: 60
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

So - I was able to do this for the homepage Thank you for that.

I did use the cache_ordered_forums and I hope that was the correct query. I did have to add my own $hook_query_fields and $hook_query_joins to the functions.php file.

Is it better for me to create this as a 'product' or something and would that ensure this update doesn't get written over once a new update comes out? What is the proper procedure for that?

Did I do this correctly? It wasn't difficult, really, just took some figuring out.
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 06:55 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.04943 seconds
  • Memory Usage 2,263KB
  • 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
  • (2)bbcode_code
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (10)post_thanks_box
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (10)post_thanks_postbit_info
  • (10)postbit
  • (10)postbit_onlinestatus
  • (10)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
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete