vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   Where does the "forum list" SELECT statement reside? (https://vborg.vbsupport.ru/showthread.php?t=166337)

footose 12-28-2007 07:14 PM

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.

bobster65 12-28-2007 07:31 PM

Quote:

Originally Posted by footose (Post 1410973)
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)

Opserty 12-28-2007 08:31 PM

Its cached in the datastore table.

$vbulletin->forumcache is the variable for it I think.

footose 12-28-2007 08:48 PM

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] ?

Opserty 12-28-2007 09:57 PM

Quote:

Originally Posted by footose (Post 1411026)
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 :o

footose 12-28-2007 10:10 PM

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.

Opserty 12-28-2007 10:26 PM

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.

footose 12-28-2007 10:28 PM

Nice!, thank you.

You wouldn't happen to know what $var holds the "Last Post", "Viewed" and "Posts" information would you?

bobster65 12-28-2007 10:30 PM

What exactly is the scope of what you are trying to do?

footose 12-28-2007 10:38 PM

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.


All times are GMT. The time now is 10:09 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.01418 seconds
  • Memory Usage 1,783KB
  • 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
  • (4)bbcode_php_printable
  • (3)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)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
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete