vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   Fetch name of forum that the post is in (https://vborg.vbsupport.ru/showthread.php?t=322463)

greigeh 04-26-2016 02:24 PM

Fetch name of forum that the post is in
 
I have this plugin running on my forum, and we've had it for quite some time but I'm making some major theme developments and my mockup design requires me to have the name of the forum the post is in. Is it possible in this script below to simply add a line so it will fetch the forum name from the DB?

Code:

// #################### PROCESS LATEST THREADS #######################
// fetch the permissions for each forum
global $vbulletin;

$forumperms = array();
foreach($vbulletin->forumcache AS $forum) {

    $forumperms[$forum["forumid"]] = fetch_permissions($forum['forumid']);

    // ## HIDE FORUMS WITHOUT THE CANVIEW PERMISSION ##
    if (!($forumperms[$forum["forumid"]] & $vbulletin->bf_ugp_forumpermissions['canview']) AND !$vbulletin->options['showprivateforums']) {
        $limitfids .= ','.$forum['forumid'];
    }
}
unset($forum);

if ($vbulletin->options['threadpreview'] > 0) {
    $previewfield = ', post.pagetext AS preview';
    $previewjoin = 'LEFT JOIN '.TABLE_PREFIX.'post AS post ON(post.postid = thread.firstpostid)';
}

$getthreads = $db->query_read("
    ## GET LATEST THREADS ##
    SELECT thread.*,thread.iconid AS threadiconid $previewfield
    FROM ".TABLE_PREFIX."thread AS thread
    LEFT JOIN ".TABLE_PREFIX."deletionlog AS deletionlog ON(thread.threadid = deletionlog.primaryid AND type = 'thread')
    $previewjoin
    WHERE open <> 10
    AND forumid NOT IN (0$limitfids)
    AND thread.visible = '1'
    AND deletionlog.primaryid IS NULL
    ORDER BY lastpost
    DESC LIMIT 20");

while($thread = $db->fetch_array($getthreads)) {

    $threads = true;
    $thread['title'] = fetch_censored_text(fetch_trimmed_title(unhtmlspecialchars($thread['title']), 25));
    $thread['date'] = vbdate($vbulletin->options['dateformat'], $thread['lastpost'], 1);
    $thread['time'] = vbdate($vbulletin->options['timeformat'], $thread['lastpost']);
    $thread['preview'] = preg_replace('#\[quote(=(&quot;|"|\'|).*\\2)?\](.*)\[/quote\]#siU', '', $thread['preview']);
    $thread['preview'] = htmlspecialchars_uni(fetch_trimmed_title(strip_bbcode(fetch_censored_text($thread['preview']), false, true), 30));
    $thread['replycount'] = vb_number_format($thread['replycount']);
    $thread['views'] = vb_number_format($thread['views']);

    // thread icon
    $show['icon'] = false;
  $icon = fetch_iconinfo($thread['iconid']);

  if (is_array($icon)) {
      $show['icon'] = true;
      $thread['threadiconpath'] = $icon['iconpath'];
      $thread['threadicontitle'] = $icon['title'];
  }

    // show goto new post
    $show['firstnew'] = false;
    $bbforumview = fetch_bbarray_cookie('forum_view', $thread['forumid']);

    if ($bbforumview > $vbulletin->userinfo['lastvisit']) {
        $lastread = $bbforumview;
    } else {
        $lastread = $vbulletin->userinfo['lastvisit'];
    }

    if ($thread['lastpost'] > $lastread) {

        $threadview = fetch_bbarray_cookie('thread_lastview', $thread['threadid']);

        if ($thread['lastpost'] > $threadview) {
            $show['firstnew'] = true;
            $show['icon'] = false;
        }
    }

    exec_switch_bg();

    eval("\$threadbits .= \"".fetch_template('forumhome_latestthreadbit')."\";");
}
if ($threads) {
    $show['latestthreads'] = true;
}
// memory saving
unset($thread, $threads);
$db->free_result($getthreads);

I tried something along the lines of "$thread['forumname'] = fetch_censored_text($thread['forumname']); " as I though this was the correct variables but it didn't work.

Can anyone help?

Dave 04-26-2016 02:42 PM

I don't have access to a testing environment now, but I believe you can do it 2 ways:

PHP Code:

$thread['forumname'] = $vbulletin->forumcache[$thread['forumid']]['title']; 

or
PHP Code:

$foruminfo fetch_foruminfo($thread['forumid']);
$thread['forumname'] = $foruminfo['title']; 

Both essentially do the exact same thing. I would go for the second option though in case the forumcache is empty or not set.

greigeh 04-26-2016 03:18 PM

Thank you, Dave.


All times are GMT. The time now is 04:06 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.01610 seconds
  • Memory Usage 1,726KB
  • 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
  • (1)bbcode_code_printable
  • (2)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (3)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
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete