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-28-2007, 07:14 PM
footose footose is offline
 
Join Date: Mar 2006
Posts: 321
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Where does the "forum list" SELECT statement reside?

I'm trying to figure out where the "index.php" (and associated functions) generate the "SELECT" statement that eventually lists all of the forums that are on the main page.

I've tried the debug mode, and taking each SELECT statement into SQL itself to see if one of those generated it, but it doesn't seem to.

This leads me to believe that it's cached somewhere? Does anyone have a clue?

Thanks.
Reply With Quote
  #2  
Old 12-28-2007, 07:31 PM
bobster65's Avatar
bobster65 bobster65 is offline
 
Join Date: Mar 2006
Location: Montana
Posts: 1,169
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by footose View Post
I'm trying to figure out where the "index.php" (and associated functions) generate the "SELECT" statement that eventually lists all of the forums that are on the main page.

I've tried the debug mode, and taking each SELECT statement into SQL itself to see if one of those generated it, but it doesn't seem to.

This leads me to believe that it's cached somewhere? Does anyone have a clue?

Thanks.
functions_forumlist.php (in the includes folder)

Specifically the $forumbits variable used for the main output is constructed via this function within the functions_forumlist.php file

Quote:
// ###################### Start makeforumbit #######################
// this function returns the properly-ordered and formatted forum lists for forumhome,
// forumdisplay and usercp. Of course, you could use it elsewhere too..
function construct_forum_bit($parentid, $depth = 0, $subsonly = 0)
Reply With Quote
  #3  
Old 12-28-2007, 08:31 PM
Opserty Opserty is offline
 
Join Date: Apr 2007
Posts: 4,103
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Its cached in the datastore table.

$vbulletin->forumcache is the variable for it I think.
Reply With Quote
  #4  
Old 12-28-2007, 08:48 PM
footose footose is offline
 
Join Date: Mar 2006
Posts: 321
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I was actually playing with the iforumcache before bobster's recommendation, but it seems the $iforumcache only holds the actually forum numbers. I need to somehow "inject" a new "row" into the final array before it's parsed, so I can add a "custom forum", without actually using the link feature

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

EDIT: I just ran $vbulletin->forumcache through a simple recurisive algo to see what was in it, seems that more then just "forums" are in it... but might be on the right track?

PHP Code:
<?php

global $vbulletin;

require_once(
'./global.php');

show_array($vbulletin->forumcache);

function 
show_array($array)
{
    foreach (
$array as $value)
    {
        if (
is_array($value))
        {
            
show_array($value);
        }
        else
        {
            echo 
$value "<br>";
        }
    }
}

?>
--------------- Added [DATE]1198885645[/DATE] at [TIME]1198885645[/TIME] ---------------

I can't figure out how to read / access this array? ($vbulletin->forumcache)

Does it have special naming conventions or is it [0][0] ?
Reply With Quote
  #5  
Old 12-28-2007, 09:57 PM
Opserty Opserty is offline
 
Join Date: Apr 2007
Posts: 4,103
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by footose View Post
I can't figure out how to read / access this array? ($vbulletin->forumcache)

Does it have special naming conventions or is it [0][0] ?
run
PHP Code:
var_dump($vbulletin->forumcache); 
in a plugin on the forum home. Then view the source and you will get the contents of the forumcache.

You will have to add to the array (you can see how below) but you will have to figure out the actual data yourself.

PHP Code:
$vbulletin->forumcache[] = array(...); 
I doubt its going to be easy so good luck
Reply With Quote
  #6  
Old 12-28-2007, 10:10 PM
footose footose is offline
 
Join Date: Mar 2006
Posts: 321
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yes! I was just running that as you typed that! And it wouldn't be fun if it wasn't easy Thanks so far, I'm kind of new at the VBulletin end of things, but seem to be picking it up quick.

Seems it a combination of the fields of the "forum" table in the vbulletin database and something else I have yet to figure out. EDIT: Looks like the last part of it is the permissions for the forum.

Here is a list from what I got for anyone that is interested.

PHP Code:

array(53

    [
3]=> array(31
    { 
        [
"forumid"]=> int(3
        [
"styleid"]=> int(0
        [
"title"]=> string(4"Main" 
        
["title_clean"]=> string(4"Main" 
        
["description"]=> string(0"" 
        
["description_clean"]=> string(0"" 
        
["options"]=> int(89795
        [
"displayorder"]=> int(10
        [
"daysprune"]=> int(-1
        [
"newpostemail"]=> string(0"" 
        
["newthreademail"]=> string(0"" 
        
["parentid"]=> int(-1
        [
"parentlist"]=> string(4"3,-1" 
        
["password"]=> string(0"" 
        
["link"]=> string(0"" 
        
["childlist"]=> string(28"3,27,11,32,36,35,33,34,47,-1" 
        
["importforumid"]=> int(0
        [
"importcategoryid"]=> int(1
        [
"lastpostid"]=> int(0
        [
"showprivate"]=> int(0
        [
"defaultsortfield"]=> string(8"lastpost" 
        
["defaultsortorder"]=> string(4"desc" 
        
["hasstatusicons"]=> int(1
        [
"statusiconon"]=> string(29"/images/misc/general_disc.png" 
        
["statusiconoff"]=> string(29"/images/misc/general_disc.png" 
        
["statusiconlockon"]=> string(29"/images/misc/general_disc.png" 
        
["statusiconlockoff"]=> string(29"/images/misc/general_disc.png" 
        
["statusiconlink"]=> string(29"/images/misc/general_disc.png" 
        
["podcast"]=> int(0) ["depth"]=> int(0
        [
"permissions"]=> array(10
        { 
            [
4]=> int(655375
            [
6]=> int(1048575
            [
21]=> int(0
            [
7]=> int(782847
            [
2]=> int(782591
            [
5]=> int(1048575
            [
24]=> int(782591
            [
20]=> int(783607
            [
1]=> int(659471
            [
3]=> int(655375
        } 
    } 
    

This looks like "array 1" holds 53 of these other elements, (i have 53 forums, therefore I assume this holds all the data for each forum). and inside of each, it holds what is parsed by the cache...

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

Just to note, I just checked the database, and I can confirm that the first part of the array will be the forum number, and the second part of the array will be whatever is listed in your "forum" database, and the final part of the array will be yet another array of the permissions

Example:
Forum # = 3, Title = "Main", Description = "Whatever"

echo $vbulletin->forumcache[3]["Title"]

...

will print "Main"

echo $vbulletin->forumcache[3]["Description"]

...

will print "Whatever"

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

I have to also note that this doesn't help my original goal, because this does not contain the "last post", "views" and "posts" columns like I original thought it would.

Back to the drawing board. Hopefully this helps someone else.
Reply With Quote
  #7  
Old 12-28-2007, 10:26 PM
Opserty Opserty is offline
 
Join Date: Apr 2007
Posts: 4,103
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

For the permissions bit, it will be $vbullletin->forumcache[..]['permissions'][usergroupid].

The permissions are stored as bit fields or something like that. This is a wild guess but I think if you set it to 1 for each usergroup then they should be able to see it I think.
Reply With Quote
  #8  
Old 12-28-2007, 10:28 PM
footose footose is offline
 
Join Date: Mar 2006
Posts: 321
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Nice!, thank you.

You wouldn't happen to know what $var holds the "Last Post", "Viewed" and "Posts" information would you?
Reply With Quote
  #9  
Old 12-28-2007, 10:30 PM
bobster65's Avatar
bobster65 bobster65 is offline
 
Join Date: Mar 2006
Location: Montana
Posts: 1,169
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

What exactly is the scope of what you are trying to do?
Reply With Quote
  #10  
Old 12-28-2007, 10:38 PM
footose footose is offline
 
Join Date: Mar 2006
Posts: 321
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I want to insert a new "forum" on the main forum listing page, but with information that is not directly related to the vbulletin database.

Say for example, you have an image Gallary, and want to show the "latest image" in the "latest post" section.

I've done this already by using a conditional in the forum templates, however, I have been asked to create this into a Product and I would like to eliminate the amount of template edits that need to occur. I was hoping to "highjack" how the forums were parsed so that I can insert what I need to via a plugin.
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 12:21 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.04839 seconds
  • Memory Usage 2,296KB
  • 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
  • (4)bbcode_php
  • (3)bbcode_quote
  • (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_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