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)

bobster65 12-28-2007 10:44 PM

Quote:

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

Ah sweet! Makes sense to want to bypass the template parts.

as far as counts, I do know that there are counts created in the function file that I posted earlier, but I assume you want to get details before that..

here is a little snippit..

PHP Code:

$counters = array();
    if (
is_array($vbulletin->forumcache))
    {
        foreach(
$vbulletin->forumcache AS $forum)
        {
            
$this_forum =& $counters["$forum[forumid]"];
            
$this_forum['threadcount'] = 0;
            
$this_forum['replycount'] = 0;
            if (
is_array($children["$forum[forumid]"]))
            {
                foreach(
$children["$forum[forumid]"] AS $id => $info)
                {
                    
$this_forum['threadcount'] += $info['threads'];
                    
$this_forum['replycount'] += $info['posts'];
                }
            }
        }
    } 


footose 12-28-2007 10:51 PM

Cool, Im just about to head out for the evening, but I should be back later to take a look at the suggestion.

I'm not sure if I need to grab it before, or grab it after.. but I did look in that particular function (function fetch_last_post_array()) and unfortunately, there is no hooks in there that I can take advantage of. I think I may have to "override" it after the fact.

What I propose may not be possible without actual template edits, but I will still try.

Opserty 12-28-2007 10:58 PM

Here is a very rudimentary start I came up with. Still needs a lot of tweaking but I got it to work so it may help you:

PHP Code:

// I have used 7 as an example forumid, you will need to change it so it doesn't cause conflicts.
$vbulletin->forumcache[] = array(
        
'forumid'   => 7,
        
'styleid'   => 0,
        
'title'     => 'Some Title',
        
'title_clean' => 'Some Title',
        
'description' => 'Some Description',
        
'description_clean' => 'Some Description',
        
'options'       => 73415,
        
'displayorder' => 100,
        
'daysprune' => -1,
        
'newpostemail' => '',
        
'newthreademail' => '',
        
'parentid' => 3,
        
'parentlist' => '7,3,-1',
        
'password' => ''
        
'link' => '',
        
'childlist' => '7, -1' ,
        
'importforumid' => 0,
        
'importcategoryid' => 1,
        
'lastpostid' => ,
        
'showprivate' => ,
        
'defaultsortfield' => 'lastpost',
        
'defaultsortorder' => 'desc',
        
'podcast' => 0,
        
'depth' => 0,
        
'permissions' => array(
                
=> 655375,
                
=> 1048575,
                
=> 0,
                
=> 782847,
                
=> 782847,
                
=> 1048575,
                
=> 655375,
                
=> 655375
                                
)
    );
$vbulletin->userinfo['forumpermissions'][7] = 1048575

EDIT: RE: Lastpostid. I'm not sure you can set your own thing in the last post column, since the lastpostid is cached for that forum and this is then most likely fetched from the database when the forumbit is processed. I'll have a look tomorrow to see if there is way to get around this.

footose 12-28-2007 11:12 PM

^^ Thanks! What hook are you you using?

Been playing with it.. ill update what i find later on

Opserty 12-29-2007 09:46 AM

forumhome_start if I remember correctly.

Edit: Here is the code I managed to get for the "Last Post" column.
PHP Code:

if(THIS_SCRIPT == 'index' && $forumid == 7)
{
    
$show['lastpostinfo'] = $show['icon'] = true;
    
$lastpostinfo['forumid'] = 7;
    
$lastpostinfo['lastthreadid'] = $lastpostinfo['lastpostid'] = 'gallery'// Set up another plugin on showthread_start to catch 'showthread.php?p=gallery' or 't=gallery'
    
$lastpostinfo['lastthread'] = 'Some Random thread';
    
$lastpostinfo['trimthread'] = 'Some Random thr...';
    
$lastpostinfo['postdate'] = 'Set a date in same format as rest of board';
    
$lastpostinfo['posttime'] = 'Same as above';
    
$lastpostinfo['lastpostid'] = 'gallery';
    
$lastpostinfo['lastposter'] = 'Admin?';
    
// Not default but need to clean up so set this info as well
    
$lastpostinfo['lastposterid'] = 1;
    
    eval(
'$forum[\'lastpostinfo\'] = "' fetch_template('forumhome_lastpostby') . '";');
    echo     
'member.php?'$session['sessionurl'] .'findlastposter&f='$lastpostinfo['forumid'];

    
$forum['lastpostinfo'] = str_replace('member.php?'$session['sessionurl'] .'find=lastposter&f='$lastpostinfo['forumid'], 'member.php?'$session['sessionurl'] .'u='.$lastpostinfo['lastposterid'], $forum['lastpostinfo']);


Again by no means final but it will give you an idea of what do to. (Hook Location: forumbit_display)

footose 12-29-2007 03:18 PM

Hey Opserty: Thank you so much for the help!

I was also able to "highjack" the last post column, but it seems you can do it in the original forumhome_start we said as well.. as well as edit the replycount and threadcount... Something like this

PHP Code:

// just check to see if your are an admin
if (is_member_of($vbulletin->userinfo6))
{

// made it insert into "forum 99"
    
$vbulletin->forumcache[99] = array(
    
'forumid'   => 99,
// from database
    
'lastpost' => $lastpost["lastactivity"],
    
'lastposter' => $lastpost["username"],
    
'lastthread' => $lastpost["username"] . "'s car",
// some thread count and reply count
    
'threadcount' => 33544043,
    
'replycount' => 1943543,
    
'styleid'   => 0,
// trying to manipulate the title to display links and such..
    
'title'     => '</strong></a></div><div style="float:left"><a href="thegarage.php"> <strong>The Garage',
    
'title_clean' => '</strong></a><a href="thegarage.php"><strong>The Garage',
    
'description' => '<br>Its 3:30am, so pissoff</div><div align="float:right"><img src="http://forums.generationdub.com/tg/images/3_tn_lowres_rolling_01.jpg"></div>',
    
'description_clean' => 'Upload your ride and brag about it for all to see!',
    
'options'       => 73415,
    
'displayorder' => 100,
    
'daysprune' => -1,
    
'newpostemail' => '',
    
'newthreademail' => '',
    
'parentid' => 3,
    
'parentlist' => '99,3,-1',
    
'password' => ''
    
'link' => '',
    
'childlist' => '99, -1' ,
    
'importforumid' => 0,
    
'importcategoryid' => 1,
    
'lastpostid' => ,
    
'showprivate' => ,
    
'defaultsortfield' => 'lastpost',
    
'defaultsortorder' => 'desc',
    
'podcast' => 0,
    
'depth' => 0,
    
'permissions' => array(
        
=> 0,
        
=> 1048575,
        
21 => 0,
        
=> 0,
        
=> 0,
        
=> 0,
        
24 => 0,
        
20 => 0,
        
=> 0,
        
=> 0
                
)
    );

    
$vbulletin->userinfo['forumpermissions'][99] = 1048575

However, it seems pretty limited because of the way the templates are parsed, it actually uses varibles to fill in the "Last Post" and "Name". Permissions also don't seem to work, unless you add the "userinfo" line at the bottom.

What is it you are doing with the eval fetch_template?

Again, thank you so much for the help thus far.

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

EDIT

Ahh, I see what you are doing. Basically we could add our own template to use, which is exactly what I wanted to do!

Opserty 12-29-2007 03:28 PM

$vbulletin->userinfo['forumpermissions'][99] = 1048575;
You only need to set this to '1' because you only need to see this forum and because its not a real forum you don't need the other permissions.

footose 12-30-2007 04:12 AM

Very nice man, thank you so much!

What I've began to do is, insert the minimum requirements to "insert" another "forum" using our first piece of code, then "hijacked" the actual last post / count / reply templates and made new ones instead!

footose 01-03-2008 12:12 AM

I have been still working on this. I will post more solutions once I have something final.


All times are GMT. The time now is 05: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.01721 seconds
  • Memory Usage 1,806KB
  • 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
  • (1)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
  • (9)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