Thread: Miscellaneous Hacks - Display Unread Posts and New Reputation Comments
View Single Post
  #257  
Old 10-22-2010, 04:17 AM
Tourmeister Tourmeister is offline
 
Join Date: Nov 2005
Posts: 68
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Can't think of a better place to ask this, so here it goes.

What I have is a forum section with several subforums that are populated using the RSS feed system in VB. People want to be able to see these forums, but because of the number of threads, they don't want them showing up in the search results for unread posts. So using the new version of the Unread Posts mod in conjunction with the Selective Forum Filter won't work because that would prevent them from seeing the subforums at all.

The code below is from the Unread Posts mod version I have installed (version 1.02). So what I am hoping is that it might be a simple case of just adding a conditional or something to the PHP code to force the exclusion of those subforums from the search all the time. The problem is I don't know squat about coding in PHP. Can someone please indicate what I would have to add/change to accomplish this?

Code:
$unread = "";
if ($vbulletin->userinfo['userid'] AND $vbulletin->options['threadmarking'])
{
	$unread = "No unread posts";

	$xforum_ids = array_keys($vbulletin->forumcache);

	foreach ($xforum_ids AS $key => $xforum_id)
	{
		$xfperms = & $vbulletin->userinfo['forumpermissions']["$xforum_id"];
		$xforum = & $vbulletin->forumcache["$xforum_id"];
		if ( !($xfperms & $vbulletin->bf_ugp_forumpermissions['canview']) OR !($xfperms & $vbulletin->bf_ugp_forumpermissions['cansearch']))
		{
			unset($xforum_ids["$key"]);
		}
	}

	if (empty($xforum_ids))
	{
		$xforum_list = "0";
	}
	else
	{
		$xforum_list = implode(', ', $xforum_ids);
	}

	if ($vbulletin->options['unreadlv'])
	{
		$cutoff = $vbulletin->userinfo['lastvisit'];
	}
	else
	{
		$cutoff = TIMENOW - ($vbulletin->options['markinglimit'] * 86400);
	}

	$postcount = $vbulletin->db->query_first("
		SELECT COUNT(post.postid) as unread
		FROM " . TABLE_PREFIX . "post as post
		INNER JOIN " . TABLE_PREFIX . "thread as thread ON (thread.threadid = post.threadid)
		LEFT JOIN " . TABLE_PREFIX . "threadread AS threadread ON (threadread.threadid = thread.threadid AND threadread.userid = " . $vbulletin->userinfo['userid'] . ")
		INNER JOIN " . TABLE_PREFIX . "forum AS forum ON (forum.forumid = thread.forumid)
		LEFT JOIN " . TABLE_PREFIX . "forumread AS forumread ON (forumread.forumid = forum.forumid AND forumread.userid = " . $vbulletin->userinfo['userid'] . ")
		WHERE thread.forumid IN($xforum_list) 
		AND thread.sticky IN (0,1) AND thread.visible IN (0,1,2)
		AND thread.lastpost > IF(threadread.readtime IS NULL, $cutoff, threadread.readtime)
		AND thread.lastpost > IF(forumread.readtime IS NULL, $cutoff, forumread.readtime)
		AND thread.lastpost > $cutoff
		AND post.dateline > IF(threadread.readtime IS NULL, $cutoff, threadread.readtime)
		AND post.dateline > IF(forumread.readtime IS NULL, $cutoff, forumread.readtime)
		AND post.dateline > $cutoff
	");

	if ($postcount['unread'])
	{
		if ($postcount['unread'] == 1)
		{
			$unread = "1 Unread Post";
		}
		else
		{
			$unread = $postcount['unread']." Unread Posts";
		}
	}

	if ($vbulletin->options['unreadlv'])
	{
		$unread = "<a href='/forums/search.php?do=getnew'><b>" . $unread . "</b></a> since your last visit.<br />";
	}
	else
	{
		$unread = "You have <a href='/forums/search.php?do=getnew'><b>" . $unread . "</b></a><br />";
	}

	$search_text = '</strong><br />';
	$vbulletin->templatecache['navbar'] = str_replace($search_text,$search_text.$unread,$vbulletin->templatecache['navbar']);
}
Thanks.
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01271 seconds
  • Memory Usage 1,783KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_code
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.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
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • 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
  • showpost_complete