رفتن به مطلب
Mihan

عدم نمایش امتیاز موضوع

پست های پیشنهاد شده

سلام

تو انجمن من امتیاز موضوع نمایش داده نمیشه یعنی اینطور بگم که مثل اینکه غیر فعال هست.

مشکلش از کجاست؟

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

درود !

 

راهه حلش توسط علیرضا توفیقی ([url=http://mybbskin.ir/User-Tofighii]اطلاعات درامضا[/url]) ([url=http://mybbskin.ir/User-MyBBskini]اطلاعات درامضا[/url]) به بنده گفته شد و دارم سعی میکنم بتونم درستش کنم اگه تونستم برا عموم آموزش داده میشه

 

2 . فک کنم پلاگینش رو گذاشتم اینجا تست کردینش

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

خوب.

اگه اینکار رو کنید درست باید بشه.

فایل forumdisplay.php را به شکل زیر ویرایش کنید:

<?php
/**
* MyBB 1.6
* Copyright 2010 MyBB Group, All Rights Reserved
*
* Website: http://mybb.com
* License: http://mybb.com/about/license
*
* $Id: forumdisplay.php 5787 2012-04-19 13:30:23Z Tomm $
*/

define("IN_MYBB", 1);
define('THIS_SCRIPT', 'forumdisplay.php');

$templatelist = "forumdisplay,forumdisplay_thread,breadcrumb_bit,forumbit_depth1_cat,forumbit_depth1_forum,forumbit_depth2_cat,forumbit_depth2_forum,forumdisplay_subforums,forumdisplay_threadlist,forumdisplay_moderatedby_moderator,forumdisplay_moderatedby,forumdisplay_newthread,forumdisplay_searchforum,forumdisplay_orderarrow,forumdisplay_thread_rating,forumdisplay_announcement,forumdisplay_threadlist_rating,forumdisplay_threadlist_sortrating,forumdisplay_subforums_modcolumn,forumbit_moderators,forumbit_subforums,forumbit_depth2_forum_lastpost";
$templatelist .= ",forumbit_depth1_forum_lastpost,forumdisplay_thread_multipage_page,forumdisplay_thread_multipage,forumdisplay_thread_multipage_more";
$templatelist .= ",multipage_prevpage,multipage_nextpage,multipage_page_current,multipage_page,multipage_start,multipage_end,multipage";
$templatelist .= ",forumjump_advanced,forumjump_special,forumjump_bit";
$templatelist .= ",forumdisplay_usersbrowsing_guests,forumdisplay_usersbrowsing_user,forumdisplay_usersbrowsing,forumdisplay_inlinemoderation,forumdisplay_thread_modbit,forumdisplay_inlinemoderation_col,forumdisplay_inlinemoderation_selectall";
$templatelist .= ",forumdisplay_announcements_announcement,forumdisplay_announcements,forumdisplay_threads_sep,forumbit_depth3_statusicon,forumbit_depth3,forumdisplay_sticky_sep,forumdisplay_thread_attachment_count,forumdisplay_threadlist_inlineedit_js,forumdisplay_rssdiscovery,forumdisplay_announcement_rating,forumdisplay_announcements_announcement_modbit,forumdisplay_rules,forumdisplay_rules_link,forumdisplay_thread_gotounread,forumdisplay_nothreads,forumdisplay_inlinemoderation_custom_tool,forumdisplay_inlinemoderation_custom";
require_once "./global.php";
require_once MYBB_ROOT."inc/functions_post.php";
require_once MYBB_ROOT."inc/functions_forumlist.php";
require_once MYBB_ROOT."inc/class_parser.php";
$parser = new postParser;

// Load global language phrases
$lang->load("forumdisplay");

$plugins->run_hooks("forumdisplay_start");

$fid = intval($mybb->input['fid']);
if($fid < 0)
{
switch($fid)
{
	case "-1":
		$location = "index.php";
		break;
	case "-2":
		$location = "search.php";
		break;
	case "-3":
		$location = "usercp.php";
		break;
	case "-4":
		$location = "private.php";
		break;
	case "-5":
		$location = "online.php";
		break;
}
if($location)
{
	header("Location: ".$location);
	exit;
}
}

// Get forum info
$foruminfo = get_forum($fid);
if(!$foruminfo)
{
error($lang->error_invalidforum);
}

$archive_url = build_archive_link("forum", $fid);

$currentitem = $fid;
build_forum_breadcrumb($fid);
$parentlist = $foruminfo['parentlist'];

// To validate, turn & to & but support unicode
$foruminfo['name'] = preg_replace("#&(?!\#[0-9]+;)#si", "&", $foruminfo['name']);

$forumpermissions = forum_permissions();
$fpermissions = $forumpermissions[$fid];

if($fpermissions['canview'] != 1)
{
error_no_permission();
}

if($mybb->user['uid'] == 0)
{
// Cookie'd forum read time
$forumsread = my_unserialize($mybb->cookies['mybb']['forumread']);

	if(is_array($forumsread) && empty($forumsread))
	{
		if($mybb->cookies['mybb']['readallforums'])
	{
		$forumsread[$fid] = $mybb->cookies['mybb']['lastvisit'];
	}
	else
	{
			$forumsread = array();
	}
	}

$query = $db->simple_select("forums", "*", "active != 0", array("order_by" => "pid, disporder"));
}
else
{
// Build a forum cache from the database
$query = $db->query("
	SELECT f.*, fr.dateline AS lastread
	FROM ".TABLE_PREFIX."forums f
	LEFT JOIN ".TABLE_PREFIX."forumsread fr ON (fr.fid=f.fid AND fr.uid='{$mybb->user['uid']}')
	WHERE f.active != 0
	ORDER BY pid, disporder
");
}

while($forum = $db->fetch_array($query))
{
if($mybb->user['uid'] == 0 && $forumsread[$forum['fid']])
{
	$forum['lastread'] = $forumsread[$forum['fid']];
}

$fcache[$forum['pid']][$forum['disporder']][$forum['fid']] = $forum;
}

// Get the forum moderators if the setting is enabled.
if($mybb->settings['modlist'] != 0)
{
$moderatorcache = $cache->read("moderators");
}

$bgcolor = "trow1";
if($mybb->settings['subforumsindex'] != 0)
{
$showdepth = 3;
}
else
{
$showdepth = 2;
}
$child_forums = build_forumbits($fid, 2);
$forums = $child_forums['forum_list'];
if($forums)
{
$lang->sub_forums_in = $lang->sprintf($lang->sub_forums_in, $foruminfo['name']);
eval("\$subforums = \"".$templates->get("forumdisplay_subforums")."\";");
}

$excols = "forumdisplay";

// Password protected forums
check_forum_password($foruminfo['fid']);

if($foruminfo['linkto'])
{
header("Location: {$foruminfo['linkto']}");
exit;
}

// Make forum jump...
if($mybb->settings['enableforumjump'] != 0)
{
$forumjump = build_forum_jump("", $fid, 1);
}

if($foruminfo['type'] == "f" && $foruminfo['open'] != 0)
{
eval("\$newthread = \"".$templates->get("forumdisplay_newthread")."\";");
}

if($fpermissions['cansearch'] != 0 && $foruminfo['type'] == "f")
{
eval("\$searchforum = \"".$templates->get("forumdisplay_searchforum")."\";");
}

// Gather forum stats
$has_announcements = $has_modtools = false;
$forum_stats = $cache->read("forumsdisplay");

if(is_array($forum_stats))
{
if($forum_stats[-1]['modtools'] || $forum_stats[$fid]['modtools'])
{
	// Mod tools are specific to forums, not parents
	$has_modtools = true;
}

if($forum_stats[-1]['announcements'] || $forum_stats[$fid]['announcements'])
{
	// Global or forum-specific announcements
	$has_announcements = true;
}
}

$done_moderators = array(
"users" => array(),
"groups" => array()
);

$moderators = '';
$parentlistexploded = explode(",", $parentlist);

foreach($parentlistexploded as $mfid)
{
// This forum has moderators
if(is_array($moderatorcache[$mfid]))
{
	// Fetch each moderator from the cache and format it, appending it to the list
	foreach($moderatorcache[$mfid] as $modtype)
	{
		foreach($modtype as $moderator)
		{
			if($moderator['isgroup'])
			{
				if(in_array($moderator['id'], $done_moderators['groups']))
				{
					continue;
				}
				$moderators .= $comma.htmlspecialchars_uni($moderator['title']);
				$done_moderators['groups'][] = $moderator['id'];
			}
			else
			{
				if(in_array($moderator['id'], $done_moderators['users']))
				{
					continue;
				}
				$moderators .= "{$comma}".format_name(htmlspecialchars_uni($moderator['username']), $moderator['usergroup'], $moderator['displaygroup'])."";
				$done_moderators['users'][] = $moderator['id'];
			}
			$comma = $lang->comma;
		}
	}
}

if($forum_stats[$mfid]['announcements'])
{
	$has_announcements = true;
}
}
$comma = '';

// If we have a moderators list, load the template
if($moderators)
{
eval("\$moderatedby = \"".$templates->get("forumdisplay_moderatedby")."\";");
}
else
{
$moderatedby = '';
}

// Get the users browsing this forum.
if($mybb->settings['browsingthisforum'] != 0)
{
$timecut = TIME_NOW - $mybb->settings['wolcutoff'];

$comma = '';
$guestcount = 0;
$membercount = 0;
$inviscount = 0;
$onlinemembers = '';
$query = $db->query("
	SELECT s.ip, s.uid, u.username, s.time, u.invisible, u.usergroup, u.usergroup, u.displaygroup
	FROM ".TABLE_PREFIX."sessions s
	LEFT JOIN ".TABLE_PREFIX."users u ON (s.uid=u.uid)
	WHERE s.time > '$timecut' AND location1='$fid' AND nopermission != 1
	ORDER BY u.username ASC, s.time DESC
");
while($user = $db->fetch_array($query))
{
	if($user['uid'] == 0)
	{
		++$guestcount;
	}
	else
	{
		if($doneusers[$user['uid']] < $user['time'] || !$doneusers[$user['uid']])
		{
			$doneusers[$user['uid']] = $user['time'];
			++$membercount;
			if($user['invisible'] == 1)
			{
				$invisiblemark = "*";
				++$inviscount;
			}
			else
			{
				$invisiblemark = '';
			}

			if($user['invisible'] != 1 || $mybb->usergroup['canviewwolinvis'] == 1 || $user['uid'] == $mybb->user['uid'])
			{
				$user['username'] = format_name($user['username'], $user['usergroup'], $user['displaygroup']);
				$user['profilelink'] = build_profile_link($user['username'], $user['uid']);
				eval("\$onlinemembers .= \"".$templates->get("forumdisplay_usersbrowsing_user", 1, 0)."\";");
				$comma = $lang->comma;
			}
		}
	}
}

if($guestcount)
{
	$guestsonline = $lang->sprintf($lang->users_browsing_forum_guests, $guestcount);
}

if($guestcount && $onlinemembers)
{
	$onlinesep = $lang->comma;
}

$invisonline = '';
if($inviscount && $mybb->usergroup['canviewwolinvis'] != 1 && ($inviscount != 1 && $mybb->user['invisible'] != 1))
{
	$invisonline = $lang->sprintf($lang->users_browsing_forum_invis, $inviscount);
}

if($invisonline != '' && $guestcount)
{
	$onlinesep2 = $lang->comma;
}
eval("\$usersbrowsing = \"".$templates->get("forumdisplay_usersbrowsing")."\";");
}

// Do we have any forum rules to show for this forum?
$forumrules = '';
if($foruminfo['rulestype'] != 0 && $foruminfo['rules'])
{
if(!$foruminfo['rulestitle'])
{
	$foruminfo['rulestitle'] = $lang->sprintf($lang->forum_rules, $foruminfo['name']);
}

$rules_parser = array(
	"allow_html" => 1,
	"allow_mycode" => 1,
	"allow_smilies" => 1,
	"allow_imgcode" => 1
);

$foruminfo['rules'] = $parser->parse_message($foruminfo['rules'], $rules_parser);
if($foruminfo['rulestype'] == 1 || $foruminfo['rulestype'] == 3)
{
	eval("\$rules = \"".$templates->get("forumdisplay_rules")."\";");
}
else if($foruminfo['rulestype'] == 2)
{
	eval("\$rules = \"".$templates->get("forumdisplay_rules_link")."\";");
}
}

$bgcolor = "trow1";

// Set here to fetch only approved topics (and then below for a moderator we change this).
$visibleonly = "AND visible='1'";
$tvisibleonly = "AND t.visible='1'";

// Check if the active user is a moderator and get the inline moderation tools.
if(is_moderator($fid))
{
eval("\$inlinemodcol = \"".$templates->get("forumdisplay_inlinemoderation_col")."\";");
$ismod = true;
$inlinecount = "0";
$inlinecookie = "inlinemod_forum".$fid;
$visibleonly = " AND (visible='1' OR visible='0')";
$tvisibleonly = " AND (t.visible='1' OR t.visible='0')";
}
else
{
$inlinemod = '';
$ismod = false;
}

if(is_moderator($fid, "caneditposts") || $fpermissions['caneditposts'] == 1)
{
$can_edit_titles = 1;
}
else
{
$can_edit_titles = 0;
}

unset($rating);

// Pick out some sorting options.
// First, the date cut for the threads.
$datecut = 0;
if(!$mybb->input['datecut'])
{
// If the user manually set a date cut, use it.
if($mybb->user['daysprune'])
{
	$datecut = $mybb->user['daysprune'];
}
else
{
	// If the forum has a non-default date cut, use it.
	if(!empty($foruminfo['defaultdatecut']))
	{
		$datecut = $foruminfo['defaultdatecut'];
	}
}
}
// If there was a manual date cut override, use it.
else
{
$datecut = intval($mybb->input['datecut']);
}

$datecut = intval($datecut);
$datecutsel[$datecut] = "selected=\"selected\"";
if($datecut > 0 && $datecut != 9999)
{
$checkdate = TIME_NOW - ($datecut * 86400);
$datecutsql = "AND (lastpost >= '$checkdate' OR sticky = '1')";
$datecutsql2 = "AND (t.lastpost >= '$checkdate' OR t.sticky = '1')";
}
else
{
$datecutsql = '';
$datecutsql2 = '';
}

// Pick the sort order.
if(!isset($mybb->input['order']) && !empty($foruminfo['defaultsortorder']))
{
$mybb->input['order'] = $foruminfo['defaultsortorder'];
}

$mybb->input['order'] = htmlspecialchars($mybb->input['order']);

switch(my_strtolower($mybb->input['order']))
{
case "asc":
	$sortordernow = "asc";
       $ordersel['asc'] = "selected=\"selected\"";
	$oppsort = $lang->desc;
	$oppsortnext = "desc";
	break;
default:
       $sortordernow = "desc";
	$ordersel['desc'] = "selected=\"selected\"";
       $oppsort = $lang->asc;
	$oppsortnext = "asc";
	break;
}

// Sort by which field?
if(!isset($mybb->input['sortby']) && !empty($foruminfo['defaultsortby']))
{
$mybb->input['sortby'] = $foruminfo['defaultsortby'];
}

$t = "t.";

$sortby = htmlspecialchars($mybb->input['sortby']);
switch($mybb->input['sortby'])
{
case "subject":
	$sortfield = "subject";
	break;
case "replies":
	$sortfield = "replies";
	break;
case "views":
	$sortfield = "views";
	break;
case "starter":
	$sortfield = "username";
	break;
case "rating":
	$t = "";
	$sortfield = "averagerating";
	$sortfield2 = ", t.totalratings DESC";
	break;
case "started":
	$sortfield = "dateline";
	break;
default:
	$sortby = "lastpost";
	$sortfield = "lastpost";
	$mybb->input['sortby'] = "lastpost";
	break;
}

$sortsel[$mybb->input['sortby']] = "selected=\"selected\"";

// Pick the right string to join the sort URL
if($mybb->settings['seourls'] == "yes" || ($mybb->settings['seourls'] == "auto" && $_SERVER['SEO_SUPPORT'] == 1))
{
$string = "?";
}
else
{
$string = "&";
}

// Are we viewing a specific page?
if(isset($mybb->input['page']) && is_numeric($mybb->input['page']))
{
$sorturl = get_forum_link($fid, $mybb->input['page']).$string."datecut=$datecut";
}
else
{
$sorturl = get_forum_link($fid).$string."datecut=$datecut";
}
eval("\$orderarrow['$sortby'] = \"".$templates->get("forumdisplay_orderarrow")."\";");

$threadcount = 0;
$useronly = $tuseronly = "";
if($fpermissions['canonlyviewownthreads'] == 1)
{
$useronly = "AND uid={$mybb->user['uid']}";
$tuseronly = "AND t.uid={$mybb->user['uid']}";
}

if($fpermissions['canviewthreads'] != 0)
{

// How many posts are there?
if($datecut > 0 || $fpermissions['canonlyviewownthreads'] == 1)
{
	$query = $db->simple_select("threads", "COUNT(tid) AS threads", "fid = '$fid' $useronly $visibleonly $datecutsql");
	$threadcount = $db->fetch_field($query, "threads");
}
else
{
	$query = $db->simple_select("forums", "threads, unapprovedthreads", "fid = '{$fid}'", array('limit' => 1));
	$forum_threads = $db->fetch_array($query);
	$threadcount = $forum_threads['threads'];
	if($ismod == true)
	{
		$threadcount += $forum_threads['unapprovedthreads'];
	}

	// If we have 0 threads double check there aren't any "moved" threads
	if($threadcount == 0)
	{
		$query = $db->simple_select("threads", "COUNT(tid) AS threads", "fid = '$fid' $useronly $visibleonly", array('limit' => 1));
		$threadcount = $db->fetch_field($query, "threads");
	}
}
}

// How many pages are there?
if(!$mybb->settings['threadsperpage'])
{
$mybb->settings['threadsperpage'] = 20;
}

$perpage = $mybb->settings['threadsperpage'];

if(intval($mybb->input['page']) > 0)
{
$page = intval($mybb->input['page']);
$start = ($page-1) * $perpage;
$pages = $threadcount / $perpage;
$pages = ceil($pages);
if($page > $pages || $page <= 0)
{
	$start = 0;
	$page = 1;
}
}
else
{
$start = 0;
$page = 1;
}

$end = $start + $perpage;
$lower = $start + 1;
$upper = $end;

if($upper > $threadcount)
{
$upper = $threadcount;
}

// Assemble page URL
if($mybb->input['sortby'] || $mybb->input['order'] || $mybb->input['datecut']) // Ugly URL
{	
$page_url = str_replace("{fid}", $fid, FORUM_URL_PAGED);

if($mybb->settings['seourls'] == "yes" || ($mybb->settings['seourls'] == "auto" && $_SERVER['SEO_SUPPORT'] == 1))
{
	$q = "?";
	$and = '';
}
else
{
	$q = '';
	$and = "&";
}

if($sortby != "lastpost")
{
	$page_url .= "{$q}{$and}sortby={$sortby}";
	$q = '';
	$and = "&";
}

if($sortordernow != "desc")
{
	$page_url .= "{$q}{$and}order={$sortordernow}";
	$q = '';
	$and = "&";
}

if($datecut > 0)
{
	$page_url .= "{$q}{$and}datecut={$datecut}";
}
}
else
{
$page_url = str_replace("{fid}", $fid, FORUM_URL_PAGED);
}
$multipage = multipage($threadcount, $perpage, $page, $page_url);

$lang->load("ratethread");

switch($db->type)
{
	case "pgsql":
		$ratingadd = "CASE WHEN t.numratings=0 THEN 0 ELSE t.totalratings/t.numratings::numeric END AS averagerating, ";
		break;
	default:
		$ratingadd = "(t.totalratings/t.numratings) AS averagerating, ";
}

$lpbackground = "trow2";
eval("\$ratingcol = \"".$templates->get("forumdisplay_threadlist_rating")."\";");
eval("\$ratingsort = \"".$templates->get("forumdisplay_threadlist_sortrating")."\";");
$colspan = "7";



if($ismod)
{
++$colspan;
}

// Get Announcements
if($has_announcements == true)
{
$limit = '';
$announcements = '';
if($mybb->settings['announcementlimit'])
{
	$limit = "LIMIT 0, ".$mybb->settings['announcementlimit'];
}

$sql = build_parent_list($fid, "fid", "OR", $parentlist);
$time = TIME_NOW;
$query = $db->query("
	SELECT a.*, u.username
	FROM ".TABLE_PREFIX."announcements a
	LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=a.uid)
	WHERE a.startdate<='$time' AND (a.enddate>='$time' OR a.enddate='0') AND ($sql OR fid='-1')
	ORDER BY a.startdate DESC $limit
");

// See if this announcement has been read in our announcement array
$cookie = array();
if(isset($mybb->cookies['mybb']['announcements']))
{
	$cookie = my_unserialize(stripslashes($mybb->cookies['mybb']['announcements']));
}

$bgcolor = alt_trow(true); // Reset the trow colors
while($announcement = $db->fetch_array($query))
{
	if($announcement['startdate'] > $mybb->user['lastvisit'] && !$cookie[$announcement['aid']])
	{
		$new_class = ' class="subject_new"';
		$folder = "newfolder";
	}
	else
	{
		$new_class = ' class="subject_old"';
		$folder = "folder";
	}

	// Mmm, eat those announcement cookies if they're older than our last visit
	if($cookie[$announcement['aid']] < $mybb->user['lastvisit'])
	{
		unset($cookie[$announcement['aid']]);
	}

	$announcement['announcementlink'] = get_announcement_link($announcement['aid']);
	$announcement['subject'] = $parser->parse_badwords($announcement['subject']);
	$announcement['subject'] = htmlspecialchars_uni($announcement['subject']);
	$postdate = my_date($mybb->settings['dateformat'], $announcement['startdate']);
	$posttime = my_date($mybb->settings['timeformat'], $announcement['startdate']);
	$announcement['profilelink'] = build_profile_link($announcement['username'], $announcement['uid']);


		eval("\$rating = \"".$templates->get("forumdisplay_announcement_rating")."\";");
		$lpbackground = "trow2";


	if($ismod)
	{
		eval("\$modann = \"".$templates->get("forumdisplay_announcements_announcement_modbit")."\";");
	}
	else
	{
		$modann = '';
	}

	$plugins->run_hooks("forumdisplay_announcement");
	eval("\$announcements .= \"".$templates->get("forumdisplay_announcements_announcement")."\";");
	$bgcolor = alt_trow();
}

if($announcements)
{
	eval("\$announcementlist = \"".$templates->get("forumdisplay_announcements")."\";");
	$shownormalsep = true;
}

if(empty($cookie))
{
	// Clean up cookie crumbs
	my_setcookie('mybb[announcements]', 0, (TIME_NOW - (60*60*24*365)));
}
else if(!empty($cookie))
{
	my_setcookie("mybb[announcements]", addslashes(serialize($cookie)), -1);
}
}

$icon_cache = $cache->read("posticons");


// Start Getting Threads
$query = $db->query("
	SELECT t.*, {$ratingadd}t.username AS threadusername, u.username
	FROM ".TABLE_PREFIX."threads t
	LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid = t.uid)
	WHERE t.fid='$fid' $tuseronly $tvisibleonly $datecutsql2
	ORDER BY t.sticky DESC, {$t}{$sortfield} $sortordernow $sortfield2
	LIMIT $start, $perpage
");

$ratings = false;
while($thread = $db->fetch_array($query))
{		
	$threadcache[$thread['tid']] = $thread;

	if($thread['numratings'] > 0 && $ratings == false)
	{
		$ratings = true; // Looks for ratings in the forum
	}

	// If this is a moved thread - set the tid for participation marking and thread read marking to that of the moved thread
	if(substr($thread['closed'], 0, 5) == "moved")
	{
		$tid = substr($thread['closed'], 6);
		if(!$tids[$tid])
		{
			$moved_threads[$tid] = $thread['tid'];
			$tids[$thread['tid']] = $tid;
		}
	}
	// Otherwise - set it to the plain thread ID
	else
	{
		$tids[$thread['tid']] = $thread['tid'];
		if($moved_threads[$tid])
		{
			unset($moved_threads[$tid]);
		}
	}
}

if($mybb->settings['allowthreadratings'] != 0 && $mybb->user['uid'] && $tids && $ratings == true)
{
	// Check if we've rated threads on this page
	// Guests get the pleasure of not being ID'd, but will be checked when they try and rate
	$imp = implode(",", $tids);
	$query = $db->simple_select("threadratings", "tid, uid", "tid IN ({$imp}) AND uid = '{$mybb->user['uid']}'");

	while($rating = $db->fetch_array($query))
	{
		$threadcache[$rating['tid']]['rated'] = 1;
	}
}


// If user has moderation tools available, prepare the Select All feature
$num_results = $db->num_rows($query);
if(is_moderator($fid) && $num_results > 0)
{
$lang->page_selected = $lang->sprintf($lang->page_selected, intval($num_results));
$lang->select_all = $lang->sprintf($lang->select_all, intval($threadcount));
$lang->all_selected = $lang->sprintf($lang->all_selected, intval($threadcount));
eval("\$selectall = \"".$templates->get("forumdisplay_inlinemoderation_selectall")."\";");
}

if($tids)
{
$tids = implode(",", $tids);
}

// Check participation by the current user in any of these threads - for 'dot' folder icons
if($mybb->settings['dotfolders'] != 0 && $mybb->user['uid'] && $threadcache)
{
$query = $db->simple_select("posts", "tid,uid", "uid='{$mybb->user['uid']}' AND tid IN ({$tids}) {$visibleonly}");
while($post = $db->fetch_array($query))
{
	if($moved_threads[$post['tid']])
	{
		$post['tid'] = $moved_threads[$post['tid']];
	}
	if($threadcache[$post['tid']])
	{
		$threadcache[$post['tid']]['doticon'] = 1;
	}
}
}

// Read threads
if($mybb->user['uid'] && $mybb->settings['threadreadcut'] > 0 && $threadcache)
{
$query = $db->simple_select("threadsread", "*", "uid='{$mybb->user['uid']}' AND tid IN ({$tids})"); 
while($readthread = $db->fetch_array($query))
{
	if($moved_threads[$readthread['tid']]) 
	{ 
 		$readthread['tid'] = $moved_threads[$readthread['tid']]; 
 	}
	if($threadcache[$readthread['tid']])
	{
 		$threadcache[$readthread['tid']]['lastread'] = $readthread['dateline']; 
	}
}
}

if($mybb->settings['threadreadcut'] > 0 && $mybb->user['uid'])
{
$query = $db->simple_select("forumsread", "dateline", "fid='{$fid}' AND uid='{$mybb->user['uid']}'");
$forum_read = $db->fetch_field($query, "dateline");

$read_cutoff = TIME_NOW-$mybb->settings['threadreadcut']*60*60*24;
if($forum_read == 0 || $forum_read < $read_cutoff)
{
	$forum_read = $read_cutoff;
}
}
else
{
$forum_read = my_get_array_cookie("forumread", $fid);

if($mybb->cookies['mybb']['readallforums'] && !$forum_read)
{
	$forum_read = $mybb->cookies['mybb']['lastvisit'];
}
}

$unreadpost = 0;
$threads = '';
$load_inline_edit_js = 0;
if(is_array($threadcache))
{
if(!$mybb->settings['maxmultipagelinks'])
{
	$mybb->settings['maxmultipagelinks'] = 5;		
}

if(!$mybb->settings['postsperpage'])
{
	$mybb->settings['postperpage'] = 20;
}

foreach($threadcache as $thread)
{
	$plugins->run_hooks("forumdisplay_thread");

	$moved = explode("|", $thread['closed']);

	if($thread['visible'] == 0)
	{
		$bgcolor = "trow_shaded";
	}
	else
	{
		$bgcolor = alt_trow();
	}

	if($thread['sticky'] == 1)
	{
		$thread_type_class = " forumdisplay_sticky";
	}
	else
	{
		$thread_type_class = " forumdisplay_regular";
	}

	$folder = '';
	$prefix = '';

	$thread['author'] = $thread['uid'];
	if(!$thread['username'])
	{
		$thread['username'] = $thread['threadusername'];
		$thread['profilelink'] = $thread['threadusername'];
	}
	else
	{
		$thread['profilelink'] = build_profile_link($thread['username'], $thread['uid']);
	}

	// If this thread has a prefix, insert a space between prefix and subject
	$threadprefix = '';
	if($thread['prefix'] != 0)
	{
		$threadprefix = build_prefixes($thread['prefix']);
		$thread['threadprefix'] = $threadprefix['displaystyle'].' ';
	}

	$thread['subject'] = $parser->parse_badwords($thread['subject']);
	$thread['subject'] = htmlspecialchars_uni($thread['subject']);

	if($thread['icon'] > 0 && $icon_cache[$thread['icon']])
	{
		$icon = $icon_cache[$thread['icon']];
		$icon = "";
	}
	else
	{
		$icon = " ";
	}

	$prefix = '';
	if($thread['poll'])
	{
		$prefix = $lang->poll_prefix;
	}

	if($thread['sticky'] == "1" && !$donestickysep)
	{
		eval("\$threads .= \"".$templates->get("forumdisplay_sticky_sep")."\";");
		$shownormalsep = true;
		$donestickysep = true;
	}
	else if($thread['sticky'] == 0 && $shownormalsep)
	{
		eval("\$threads .= \"".$templates->get("forumdisplay_threads_sep")."\";");
		$shownormalsep = false;
	}

	$rating = '';
		if($moved[0] == "moved")
		{
			$rating = "-";
		}
		else
		{
			$thread['averagerating'] = floatval(round($thread['averagerating'], 2));
			$thread['width'] = intval(round($thread['averagerating']))*20;
			$thread['numratings'] = intval($thread['numratings']);

			$not_rated = '';
			if(!$thread['rated'])
			{
				$not_rated = ' star_rating_notrated';
			}

			$ratingvotesav = $lang->sprintf($lang->rating_votes_average, $thread['numratings'], $thread['averagerating']);
			eval("\$rating = \"".$templates->get("forumdisplay_thread_rating")."\";");
		}

	$thread['pages'] = 0;
	$thread['multipage'] = '';
	$threadpages = '';
	$morelink = '';
	$thread['posts'] = $thread['replies'] + 1;

	if($thread['unapprovedposts'] > 0 && $ismod)
	{
		$thread['posts'] += $thread['unapprovedposts'];
	}

	if($thread['posts'] > $mybb->settings['postsperpage'])
	{
		$thread['pages'] = $thread['posts'] / $mybb->settings['postsperpage'];
		$thread['pages'] = ceil($thread['pages']);

		if($thread['pages'] > $mybb->settings['maxmultipagelinks'])
		{
			$pagesstop = $mybb->settings['maxmultipagelinks'] - 1;
			$page_link = get_thread_link($thread['tid'], $thread['pages']);
			eval("\$morelink = \"".$templates->get("forumdisplay_thread_multipage_more")."\";");
		}
		else
		{
			$pagesstop = $thread['pages'];
		}

		for($i = 1; $i <= $pagesstop; ++$i)
		{
			$page_link = get_thread_link($thread['tid'], $i);
			eval("\$threadpages .= \"".$templates->get("forumdisplay_thread_multipage_page")."\";");
		}

		eval("\$thread['multipage'] = \"".$templates->get("forumdisplay_thread_multipage")."\";");
	}
	else
	{
		$threadpages = '';
		$morelink = '';
		$thread['multipage'] = '';
	}

	if($ismod)
	{
		if(my_strpos($mybb->cookies[$inlinecookie], "|{$thread['tid']}|"))
		{
			$inlinecheck = "checked=\"checked\"";
			++$inlinecount;
		}
		else
		{
			$inlinecheck = '';
		}

		$multitid = $thread['tid'];
		eval("\$modbit = \"".$templates->get("forumdisplay_thread_modbit")."\";");
	}
	else
	{
		$modbit = '';
	}

	if($moved[0] == "moved")
	{
		$prefix = $lang->moved_prefix;
		$thread['tid'] = $moved[1];
		$thread['replies'] = "-";
		$thread['views'] = "-";
	}

	$thread['threadlink'] = get_thread_link($thread['tid']);
	$thread['lastpostlink'] = get_thread_link($thread['tid'], 0, "lastpost");

	// Determine the folder
	$folder = '';
	$folder_label = '';

	if($thread['doticon'])
	{
		$folder = "dot_";
		$folder_label .= $lang->icon_dot;
	}

	$gotounread = '';
	$isnew = 0;
	$donenew = 0;

	if($mybb->settings['threadreadcut'] > 0 && $mybb->user['uid'] && $thread['lastpost'] > $forum_read)
	{
		if($thread['lastread'])
		{
			$last_read = $thread['lastread'];
		}
		else
		{
			$last_read = $read_cutoff;
		}
	}
	else
	{
		$last_read = my_get_array_cookie("threadread", $thread['tid']);
	}

	if($forum_read > $last_read)
	{
		$last_read = $forum_read;
	}

	if($thread['lastpost'] > $last_read && $moved[0] != "moved")
	{
		$folder .= "new";
		$folder_label .= $lang->icon_new;
		$new_class = "subject_new";
		$thread['newpostlink'] = get_thread_link($thread['tid'], 0, "newpost");
		eval("\$gotounread = \"".$templates->get("forumdisplay_thread_gotounread")."\";");
		$unreadpost = 1;
	}
	else
	{
		$folder_label .= $lang->icon_no_new;
		$new_class = "subject_old";
	}

	if($thread['replies'] >= $mybb->settings['hottopic'] || $thread['views'] >= $mybb->settings['hottopicviews'])
	{
		$folder .= "hot";
		$folder_label .= $lang->icon_hot;
	}

	if($thread['closed'] == 1)
	{
		$folder .= "lock";
		$folder_label .= $lang->icon_lock;
	}

	if($moved[0] == "moved")
	{
		$folder = "move";
		$gotounread = '';
	}

	$folder .= "folder";

	$inline_edit_tid = $thread['tid'];

	// If this user is the author of the thread and it is not closed or they are a moderator, they can edit
	if(($thread['uid'] == $mybb->user['uid'] && $thread['closed'] != 1 && $mybb->user['uid'] != 0 && $can_edit_titles == 1) || $ismod == true)
	{
		$inline_edit_class = "subject_editable";
	}
	else
	{
		$inline_edit_class = "";
	}
	$load_inline_edit_js = 1;

	$lastpostdate = my_date($mybb->settings['dateformat'], $thread['lastpost']);
	$lastposttime = my_date($mybb->settings['timeformat'], $thread['lastpost']);
	$lastposter = $thread['lastposter'];
	$lastposteruid = $thread['lastposteruid'];

	// Don't link to guest's profiles (they have no profile).
	if($lastposteruid == 0)
	{
		$lastposterlink = $lastposter;
	}
	else
	{
		$lastposterlink = build_profile_link($lastposter, $lastposteruid);
	}

	$thread['replies'] = my_number_format($thread['replies']);
	$thread['views'] = my_number_format($thread['views']);

	// Threads and posts requiring moderation
	if($thread['unapprovedposts'] > 0 && $ismod)
	{
		if($thread['unapprovedposts'] > 1)
		{
			$unapproved_posts_count = $lang->sprintf($lang->thread_unapproved_posts_count, $thread['unapprovedposts']);
		}
		else
		{
			$unapproved_posts_count = $lang->sprintf($lang->thread_unapproved_post_count, 1);
		}

		$unapproved_posts = " (".my_number_format($thread['unapprovedposts']).")";
	}
	else
	{
		$unapproved_posts = '';
	}

	// If this thread has 1 or more attachments show the papperclip
	if($thread['attachmentcount'] > 0)
	{
		if($thread['attachmentcount'] > 1)
		{
			$attachment_count = $lang->sprintf($lang->attachment_count_multiple, $thread['attachmentcount']);
		}
		else
		{
			$attachment_count = $lang->attachment_count;
		}

		eval("\$attachment_count = \"".$templates->get("forumdisplay_thread_attachment_count")."\";");
	}
	else
	{
		$attachment_count = '';
	}

	eval("\$threads .= \"".$templates->get("forumdisplay_thread")."\";");
}

$customthreadtools = '';
if($ismod)
{
	if(is_moderator($fid, "canusecustomtools") && $has_modtools == true)
	{
		switch($db->type)
		{
			case "pgsql":
			case "sqlite":
				$query = $db->simple_select("modtools", 'tid, name', "(','||forums||',' LIKE '%,$fid,%' OR ','||forums||',' LIKE '%,-1,%' OR forums='') AND type = 't'");
				break;
			default:
				$query = $db->simple_select("modtools", 'tid, name', "(CONCAT(',',forums,',') LIKE '%,$fid,%' OR CONCAT(',',forums,',') LIKE '%,-1,%' OR forums='') AND type = 't'");
		}

		while($tool = $db->fetch_array($query))
		{
			eval("\$customthreadtools .= \"".$templates->get("forumdisplay_inlinemoderation_custom_tool")."\";");
		}

		if($customthreadtools)
		{
			eval("\$customthreadtools = \"".$templates->get("forumdisplay_inlinemoderation_custom")."\";");
		}
	}

	eval("\$inlinemod = \"".$templates->get("forumdisplay_inlinemoderation")."\";");
}
}

// If there are no unread threads in this forum and no unread child forums - mark it as read
require_once MYBB_ROOT."inc/functions_indicators.php";

$unread_threads = fetch_unread_count($fid);
if($unread_threads !== false && $unread_threads == 0 && $unread_forums == 0)
{
mark_forum_read($fid);
}

// Subscription status
$add_remove_subscription = 'add';
$add_remove_subscription_text = $lang->subscribe_forum;

if($mybb->user['uid'])
{
$query = $db->simple_select("forumsubscriptions", "fid", "fid='".$fid."' AND uid='{$mybb->user['uid']}'", array('limit' => 1));

if($db->fetch_field($query, 'fid'))
{
	$add_remove_subscription = 'remove';
	$add_remove_subscription_text = $lang->unsubscribe_forum;
}
}

// Is this a real forum with threads?
if($foruminfo['type'] != "c")
{
if(!$threadcount)
{
	eval("\$threads = \"".$templates->get("forumdisplay_nothreads")."\";");
}

if($foruminfo['password'] != '')
{
	eval("\$clearstoredpass = \"".$templates->get("forumdisplay_threadlist_clearpass")."\";");
}

if($load_inline_edit_js == 1)
{
	eval("\$inline_edit_js = \"".$templates->get("forumdisplay_threadlist_inlineedit_js")."\";");
}

$post_code_string = '';
if($mybb->user['uid'])
{
	$post_code_string = "&my_post_key=".$mybb->post_code;
}

$lang->rss_discovery_forum = $lang->sprintf($lang->rss_discovery_forum, htmlspecialchars_uni(strip_tags($foruminfo['name'])));
eval("\$rssdiscovery = \"".$templates->get("forumdisplay_rssdiscovery")."\";");
eval("\$threadslist = \"".$templates->get("forumdisplay_threadlist")."\";");
}
else
{
$rssdiscovery = '';
$threadslist = '';

if(empty($forums))
{
	error($lang->error_containsnoforums);
}
}

$plugins->run_hooks("forumdisplay_end");

$foruminfo['name'] = strip_tags($foruminfo['name']);

eval("\$forums = \"".$templates->get("forumdisplay")."\";");
output_page($forums);
?>

ادامه در ارسال بعدی....

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

فایل showthread.php را به کدهای زیر:

<?php/** * MyBB 1.6 * Copyright 2010 MyBB Group, All Rights Reserved * * Website: http://mybb.com * License: http://mybb.com/about/license * * $Id: showthread.php 5806 2012-04-20 09:45:55Z Tomm $ */define("IN_MYBB", 1);define('THIS_SCRIPT', 'showthread.php');$templatelist = "showthread,postbit,postbit_author_user,postbit_author_guest,showthread_newthread,showthread_newreply,showthread_newreply_closed,postbit_sig,showthread_newpoll,postbit_avatar,postbit_profile,postbit_find,postbit_pm,postbit_www,postbit_email,postbit_edit,postbit_quote,postbit_report,postbit_signature, postbit_online,postbit_offline,postbit_away,postbit_gotopost,showthread_ratethread,showthread_inline_ratethread,showthread_moderationoptions";$templatelist .= ",multipage_prevpage,multipage_nextpage,multipage_page_current,multipage_page,multipage_start,multipage_end,multipage";$templatelist .= ",postbit_editedby,showthread_similarthreads,showthread_similarthreads_bit,postbit_iplogged_show,postbit_iplogged_hiden,showthread_quickreply";$templatelist .= ",forumjump_advanced,forumjump_special,forumjump_bit,showthread_multipage,postbit_reputation,postbit_quickdelete,postbit_attachments,thumbnails_thumbnail,postbit_attachments_attachment,postbit_attachments_thumbnails,postbit_attachments_images_image,postbit_attachments_images,postbit_posturl,postbit_rep_button";$templatelist .= ",postbit_inlinecheck,showthread_inlinemoderation,postbit_attachments_thumbnails_thumbnail,postbit_quickquote,postbit_qqmessage,postbit_ignored,postbit_groupimage,postbit_multiquote,showthread_search,postbit_warn,postbit_warninglevel,showthread_moderationoptions_custom_tool,showthread_moderationoptions_custom,showthread_inlinemoderation_custom_tool,showthread_inlinemoderation_custom,postbit_classic,showthread_classic_header,showthread_poll_resultbit,showthread_poll_results";$templatelist .= ",showthread_usersbrowsing,showthread_usersbrowsing_user,multipage_page_link_current,multipage_breadcrumb";require_once "./global.php";require_once MYBB_ROOT."inc/functions_post.php";require_once MYBB_ROOT."/inc/functions_indicators.php";require_once MYBB_ROOT."inc/class_parser.php";$parser = new postParser;// Load global language phrases$lang->load("showthread");// If there is no tid but a pid, trick the system into thinking there was a tid anyway.if($mybb->input['pid'] && !$mybb->input['tid']){	// see if we already have the post information	if(isset($style) && $style['pid'] == $mybb->input['pid'] && $style['tid'])	{		$mybb->input['tid'] = $style['tid'];		unset($style['tid']); // stop the thread caching code from being tricked	}	else	{		$options = array(			"limit" => 1		);		$query = $db->simple_select("posts", "tid", "pid=".$mybb->input['pid'], $options);		$post = $db->fetch_array($query);		$mybb->input['tid'] = $post['tid'];	}}// Get the thread details from the database.$thread = get_thread($mybb->input['tid']);// Get thread prefix if there is one.$thread['threadprefix'] = '';$thread['displayprefix'] = '';if($thread['prefix'] != 0){	$threadprefix = build_prefixes($thread['prefix']);	if($threadprefix['prefix'])	{		$thread['threadprefix'] = $threadprefix['prefix'].' ';		$thread['displayprefix'] = $threadprefix['displaystyle'].' ';	}}if(substr($thread['closed'], 0, 6) == "moved|"){	$thread['tid'] = 0;}$thread['subject'] = htmlspecialchars_uni($parser->parse_badwords($thread['subject']));$tid = $thread['tid'];$fid = $thread['fid'];if(!$thread['username']){	$thread['username'] = $lang->guest;}$visibleonly = "AND visible='1'";$visibleonly2 = "AND p.visible='1' AND t.visible='1'";// Is the currently logged in user a moderator of this forum?if(is_moderator($fid)){	$visibleonly = " AND (visible='1' OR visible='0')";	$visibleonly2 = "AND (p.visible='1' OR p.visible='0') AND (t.visible='1' OR t.visible='0')";	$ismod = true;}else{	$ismod = false;}// Make sure we are looking at a real thread here.if(!$thread['tid'] || ($thread['visible'] == 0 && $ismod == false) || ($thread['visible'] > 1 && $ismod == true)){	error($lang->error_invalidthread);}$forumpermissions = forum_permissions($thread['fid']);// Does the user have permission to view this thread?if($forumpermissions['canview'] != 1 || $forumpermissions['canviewthreads'] != 1){	error_no_permission();}if($forumpermissions['canonlyviewownthreads'] == 1 && $thread['uid'] != $mybb->user['uid']){	error_no_permission();}$archive_url = build_archive_link("thread", $tid);// Does the thread belong to a valid forum?$forum = get_forum($fid);if(!$forum || $forum['type'] != "f"){	error($lang->error_invalidforum);}// Forumdisplay cache$forum_stats = $cache->read("forumsdisplay");$breadcrumb_multipage = array();if($mybb->settings['showforumpagesbreadcrumb']){	// How many pages are there?	if(!$mybb->settings['threadsperpage'])	{		$mybb->settings['threadsperpage'] = 20;	}	$query = $db->simple_select("forums", "threads, unapprovedthreads", "fid = '{$fid}'", array('limit' => 1));	$forum_threads = $db->fetch_array($query);	$threadcount = $forum_threads['threads'];	if($ismod == true)	{		$threadcount += $forum_threads['unapprovedthreads'];	}	// Limit to only our own threads	$uid_only = '';	if($forumpermissions['canonlyviewownthreads'] == 1)	{		$uid_only = " AND uid = '".$mybb->user['uid']."'";		$query = $db->simple_select("threads", "COUNT(tid) AS threads", "fid = '$fid' $visibleonly $uid_only", array('limit' => 1));		$threadcount = $db->fetch_field($query, "threads");	}	// If we have 0 threads double check there aren't any "moved" threads	if($threadcount == 0)	{		$query = $db->simple_select("threads", "COUNT(tid) AS threads", "fid = '$fid' $visibleonly $uid_only", array('limit' => 1));		$threadcount = $db->fetch_field($query, "threads");	}	$stickybit = " OR sticky=1";	if($thread['sticky'] == 1)	{		$stickybit = " AND sticky=1";	}	// Figure out what page the thread is actually on	switch($db->type)	{		case "pgsql":			$query = $db->query("				SELECT COUNT(tid) as threads				FROM ".TABLE_PREFIX."threads				WHERE fid = '$fid' AND (lastpost >= '".intval($thread['lastpost'])."'{$stickybit}) {$visibleonly} {$uid_only}				GROUP BY lastpost				ORDER BY lastpost DESC			");			break;		default:			$query = $db->simple_select("threads", "COUNT(tid) as threads", "fid = '$fid' AND (lastpost >= '".intval($thread['lastpost'])."'{$stickybit}) {$visibleonly} {$uid_only}", array('order_by' => 'lastpost', 'order_dir' => 'desc'));	}	$thread_position = $db->fetch_field($query, "threads");	$thread_page = ceil(($thread_position/$mybb->settings['threadsperpage']));	$breadcrumb_multipage = array(		"num_threads" => $threadcount,		"current_page" => $thread_page	);}// Build the navigation.build_forum_breadcrumb($fid, $breadcrumb_multipage);add_breadcrumb($thread['displayprefix'].$thread['subject'], get_thread_link($thread['tid']));// Check if this forum is password protected and we have a valid passwordcheck_forum_password($forum['fid']);// If there is no specific action, we must be looking at the thread.if(!$mybb->input['action']){	$mybb->input['action'] = "thread";}// Jump to the unread posts.if($mybb->input['action'] == "newpost"){	// First, figure out what time the thread or forum were last read	$query = $db->simple_select("threadsread", "dateline", "uid='{$mybb->user['uid']}' AND tid='{$thread['tid']}'");	$thread_read = $db->fetch_field($query, "dateline");	if($mybb->settings['threadreadcut'] > 0 && $mybb->user['uid'])	{		$query = $db->simple_select("forumsread", "dateline", "fid='{$fid}' AND uid='{$mybb->user['uid']}'");		$forum_read = $db->fetch_field($query, "dateline");			$read_cutoff = TIME_NOW-$mybb->settings['threadreadcut']*60*60*24;		if($forum_read == 0 || $forum_read < $read_cutoff)		{			$forum_read = $read_cutoff;		}	}	else	{		$forum_read = intval(my_get_array_cookie("forumread", $fid));	}		if($mybb->settings['threadreadcut'] > 0 && $mybb->user['uid'] && $thread['lastpost'] > $forum_read)	{		$cutoff = TIME_NOW-$mybb->settings['threadreadcut']*60*60*24;		if($thread['lastpost'] > $cutoff)		{			if($thread_read)			{				$lastread = $thread_read;			}			else			{				// Set $lastread to zero to make sure 'lastpost' is invoked in the last IF				$lastread = 0;			}		}	}		if(!$lastread)	{		$readcookie = $threadread = intval(my_get_array_cookie("threadread", $thread['tid']));		if($readcookie > $forum_read)		{			$lastread = $readcookie;		}		else		{			$lastread = $forum_read;		}	}	   if($cutoff && $lastread < $cutoff)   {		  $lastread = $cutoff;   }		// Next, find the proper pid to link to.	$options = array(		"limit_start" => 0,		"limit" => 1,		"order_by" => "dateline",		"order_dir" => "asc"	);	$lastread = intval($lastread);	$query = $db->simple_select("posts", "pid", "tid='{$tid}' AND dateline > '{$lastread}' {$visibleonly}", $options);	$newpost = $db->fetch_array($query);		if($newpost['pid'] && $lastread)	{		$highlight = '';		if($mybb->input['highlight'])		{			$string = "&";			if($mybb->settings['seourls'] == "yes" || ($mybb->settings['seourls'] == "auto" && $_SERVER['SEO_SUPPORT'] == 1))			{				$string = "?";			}			$highlight = $string."highlight=".$mybb->input['highlight'];		}		header("Location: ".htmlspecialchars_decode(get_post_link($newpost['pid'], $tid)).$highlight."#pid{$newpost['pid']}");	}	else	{		// show them to the last post		$mybb->input['action'] = "lastpost";	}}// Jump to the last post.if($mybb->input['action'] == "lastpost"){	if(my_strpos($thread['closed'], "moved|"))	{		$query = $db->query("			SELECT p.pid			FROM ".TABLE_PREFIX."posts p			LEFT JOIN ".TABLE_PREFIX."threads t ON(p.tid=t.tid)			WHERE t.fid='".$thread['fid']."' AND t.closed NOT LIKE 'moved|%' {$visibleonly2}			ORDER BY p.dateline DESC			LIMIT 1		");		$pid = $db->fetch_field($query, "pid");	}	else	{		$options = array(			'order_by' => 'dateline',			'order_dir' => 'desc',			'limit_start' => 0,			'limit' => 1		);		$query = $db->simple_select('posts', 'pid', "tid={$tid} {$visibleonly}", $options);		$pid = $db->fetch_field($query, "pid");	}	header("Location: ".htmlspecialchars_decode(get_post_link($pid, $tid))."#pid{$pid}");	exit;}// Jump to the next newest posts.if($mybb->input['action'] == "nextnewest"){	$options = array(		"limit_start" => 0,		"limit" => 1,		"order_by" => "lastpost"	);	$query = $db->simple_select('threads', '*', "fid={$thread['fid']} AND lastpost > {$thread['lastpost']} {$visibleonly} AND closed NOT LIKE 'moved|%'", $options);	$nextthread = $db->fetch_array($query);	// Are there actually next newest posts?	if(!$nextthread['tid'])	{		error($lang->error_nonextnewest);	}	$options = array(		"limit_start" => 0,		"limit" => 1,		"order_by" => "dateline",		"order_dir" => "desc"	);	$query = $db->simple_select('posts', 'pid', "tid='{$nextthread['tid']}'", $options);	// Redirect to the proper page.	$pid = $db->fetch_field($query, "pid");	header("Location: ".htmlspecialchars_decode(get_post_link($pid, $nextthread['tid']))."#pid{$pid}");	exit;}// Jump to the next oldest posts.if($mybb->input['action'] == "nextoldest"){	$options = array(		"limit" => 1,		"limit_start" => 0,		"order_by" => "lastpost",		"order_dir" => "desc"	);	$query = $db->simple_select("threads", "*", "fid=".$thread['fid']." AND lastpost < ".$thread['lastpost']." {$visibleonly} AND closed NOT LIKE 'moved|%'", $options);	$nextthread = $db->fetch_array($query);	// Are there actually next oldest posts?	if(!$nextthread['tid'])	{		error($lang->error_nonextoldest);	}	$options = array(		"limit_start" => 0,		"limit" => 1,		"order_by" => "dateline",		"order_dir" => "desc"	);	$query = $db->simple_select("posts", "pid", "tid='".$nextthread['tid']."'", $options);	// Redirect to the proper page.	$pid = $db->fetch_field($query, "pid");	header("Location: ".htmlspecialchars_decode(get_post_link($pid, $nextthread['tid']))."#pid{$pid}");	exit;}if($mybb->input['pid']){	$pid = $mybb->input['pid'];}$plugins->run_hooks("showthread_start");// Show the entire thread (taking into account pagination).if($mybb->input['action'] == "thread"){	if($thread['firstpost'] == 0)	{		update_first_post($tid);	}		// Does this thread have a poll?	if($thread['poll'])	{		$options = array(			"limit" => 1		);		$query = $db->simple_select("polls", "*", "pid='".$thread['poll']."'", $options);		$poll = $db->fetch_array($query);		$poll['timeout'] = $poll['timeout']*60*60*24;		$expiretime = $poll['dateline'] + $poll['timeout'];		$now = TIME_NOW;		// If the poll or the thread is closed or if the poll is expired, show the results.		if($poll['closed'] == 1 || $thread['closed'] == 1 || ($expiretime < $now && $poll['timeout'] > 0))		{			$showresults = 1;		}		// If the user is not a guest, check if he already voted.		if($mybb->user['uid'] != 0)		{			$query = $db->simple_select("pollvotes", "*", "uid='".$mybb->user['uid']."' AND pid='".$poll['pid']."'");			while($votecheck = $db->fetch_array($query))			{					$alreadyvoted = 1;				$votedfor[$votecheck['voteoption']] = 1;			}		}		else		{			if(isset($mybb->cookies['pollvotes'][$poll['pid']]) && $mybb->cookies['pollvotes'][$poll['pid']] !== "")			{				$alreadyvoted = 1;			}		}		$optionsarray = explode("||~|~||", $poll['options']);		$votesarray = explode("||~|~||", $poll['votes']);		$poll['question'] = htmlspecialchars_uni($poll['question']);		$polloptions = '';		$totalvotes = 0;		for($i = 1; $i <= $poll['numoptions']; ++$i)		{			$poll['totvotes'] = $poll['totvotes'] + $votesarray[$i-1];		}		// Loop through the poll options.		for($i = 1; $i <= $poll['numoptions']; ++$i)		{			// Set up the parser options.			$parser_options = array(				"allow_html" => $forum['allowhtml'],				"allow_mycode" => $forum['allowmycode'],				"allow_smilies" => $forum['allowsmilies'],				"allow_imgcode" => $forum['allowimgcode'],				"allow_videocode" => $forum['allowvideocode'],				"filter_badwords" => 1			);			$option = $parser->parse_message($optionsarray[$i-1], $parser_options);			$votes = $votesarray[$i-1];			$totalvotes += $votes;			$number = $i;			// Mark the option the user voted for.			if($votedfor[$number])			{				$optionbg = "trow2";				$votestar = "*";			}			else			{				$optionbg = "trow1";				$votestar = "";			}			// If the user already voted or if the results need to be shown, do so; else show voting screen.			if($alreadyvoted || $showresults)			{				if(intval($votes) == "0")				{					$percent = "0";				}				else				{					$percent = number_format($votes / $poll['totvotes'] * 100, 2);				}				$imagewidth = round(($percent/3) * 5);				$imagerowwidth = $imagewidth + 10;				eval("\$polloptions .= \"".$templates->get("showthread_poll_resultbit")."\";");			}			else			{				if($poll['multiple'] == 1)				{					eval("\$polloptions .= \"".$templates->get("showthread_poll_option_multiple")."\";");				}				else				{					eval("\$polloptions .= \"".$templates->get("showthread_poll_option")."\";");				}			}		}		// If there are any votes at all, all votes together will be 100%; if there are no votes, all votes together will be 0%.		if($poll['totvotes'])		{			$totpercent = "100%";		}		else		{			$totpercent = "0%";		}		// Check if user is allowed to edit posts; if so, show "edit poll" link.		if(!is_moderator($fid, 'caneditposts'))		{			$edit_poll = '';		}		else		{			$edit_poll = " | {$lang->edit_poll}";		}		// Decide what poll status to show depending on the status of the poll and whether or not the user voted already.		if($alreadyvoted || $showresults)		{			if($alreadyvoted)			{				$pollstatus = $lang->already_voted;								if($mybb->usergroup['canundovotes'] == 1)				{					$pollstatus .= " [post_code}\">{$lang->undo_vote}]";				}			}			else			{				$pollstatus = $lang->poll_closed;			}			$lang->total_votes = $lang->sprintf($lang->total_votes, $totalvotes);			eval("\$pollbox = \"".$templates->get("showthread_poll_results")."\";");			$plugins->run_hooks("showthread_poll_results");		}		else		{			$publicnote = ' ';			if($poll['public'] == 1)			{				$publicnote = $lang->public_note;			}			eval("\$pollbox = \"".$templates->get("showthread_poll")."\";");			$plugins->run_hooks("showthread_poll");		}	}	else	{		$pollbox = "";	}	// Create the forum jump dropdown box.	if($mybb->settings['enableforumjump'] != 0)	{		$forumjump = build_forum_jump("", $fid, 1);	}		// Fetch some links	$next_oldest_link = get_thread_link($tid, 0, "nextoldest");	$next_newest_link = get_thread_link($tid, 0, "nextnewest");	// Mark this thread as read	mark_thread_read($tid, $fid);	// If the forum is not open, show closed newreply button unless the user is a moderator of this forum.	if($forum['open'] != 0)	{		eval("\$newthread = \"".$templates->get("showthread_newthread")."\";");		// Show the appropriate reply button if this thread is open or closed		if($thread['closed'] == 1)		{			eval("\$newreply = \"".$templates->get("showthread_newreply_closed")."\";");		}		else		{			eval("\$newreply = \"".$templates->get("showthread_newreply")."\";");		}	}	// Create the admin tools dropdown box.	if($ismod == true)	{		if($pollbox)		{			$adminpolloptions = "".$lang->delete_poll."";		}		if($thread['visible'] != 1)		{			$approveunapprovethread = "".$lang->approve_thread."";		}		else		{			$approveunapprovethread = "".$lang->unapprove_thread."";		}		if($thread['closed'] == 1)		{			$closelinkch = ' checked="checked"';		}		if($thread['sticky'])		{			$stickch = ' checked="checked"';		}		$closeoption = "
 ".$lang->close_thread."";		$closeoption .= "
 ".$lang->stick_thread."";		$inlinecount = "0";		$inlinecookie = "inlinemod_thread".$tid;		$plugins->run_hooks("showthread_ismod");	}	else	{		$modoptions = " ";		$inlinemod = "";	}	// Increment the thread view.	if($mybb->settings['delayedthreadviews'] == 1)	{		$db->shutdown_query("INSERT INTO ".TABLE_PREFIX."threadviews (tid) VALUES('{$tid}')");	}	else	{		$db->shutdown_query("UPDATE ".TABLE_PREFIX."threads SET views=views+1 WHERE tid='{$tid}'");	}	++$thread['views'];	// Work out the thread rating for this thread.	$rating = '';		$rated = 0;		$lang->load("ratethread");		if($thread['numratings'] <= 0)		{			$thread['width'] = 0;			$thread['averagerating'] = 0;			$thread['numratings'] = 0;		}		else		{			$thread['averagerating'] = floatval(round($thread['totalratings']/$thread['numratings'], 2));			$thread['width'] = intval(round($thread['averagerating']))*20;			$thread['numratings'] = intval($thread['numratings']);		}		if($thread['numratings'])		{			// At least >someone< has rated this thread, was it me?			// Check if we have already voted on this thread - it won't show hover effect then.			$query = $db->simple_select("threadratings", "uid", "tid='{$tid}' AND uid='{$mybb->user['uid']}'");			$rated = $db->fetch_field($query, 'uid');		}		$not_rated = '';		if(!$rated)		{			$not_rated = ' star_rating_notrated';		}		$ratingvotesav = $lang->sprintf($lang->rating_average, $thread['numratings'], $thread['averagerating']);		eval("\$ratethread = \"".$templates->get("showthread_ratethread")."\";");	// Work out if we are showing unapproved posts as well (if the user is a moderator etc.)	if($ismod)	{		$visible = "AND (p.visible='0' OR p.visible='1')";	}	else	{		$visible = "AND p.visible='1'";	}		// Can this user perform searches? If so, we can show them the "Search thread" form	if($forumpermissions['cansearch'] != 0)	{		eval("\$search_thread = \"".$templates->get("showthread_search")."\";");	}	// Fetch the ignore list for the current user if they have one	$ignored_users = array();	if($mybb->user['uid'] > 0 && $mybb->user['ignorelist'] != "")	{		$ignore_list = explode(',', $mybb->user['ignorelist']);		foreach($ignore_list as $uid)		{			$ignored_users[$uid] = 1;		}	}		// Which thread mode is our user using by default?	if(!empty($mybb->user['threadmode']))	{		$defaultmode = $mybb->user['threadmode'];	}	else if($mybb->settings['threadusenetstyle'] == 1)	{		$defaultmode = 'threaded';	}	else	{		$defaultmode = 'linear';	}		// If mode is unset, set the default mode	if(!isset($mybb->input['mode']))	{		$mybb->input['mode'] = $defaultmode;	}	// Threaded or linear display?	if($mybb->input['mode'] == 'threaded')	{		$isfirst = 1;		// Are we linked to a specific pid?		if($mybb->input['pid'])		{			$where = "AND p.pid='".$mybb->input['pid']."'";		}		else		{			$where = " ORDER BY dateline LIMIT 0, 1";		}		$query = $db->query("			SELECT u.*, u.username AS userusername, p.*, f.*, eu.username AS editusername			FROM ".TABLE_PREFIX."posts p			LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=p.uid)			LEFT JOIN ".TABLE_PREFIX."userfields f ON (f.ufid=u.uid)			LEFT JOIN ".TABLE_PREFIX."users eu ON (eu.uid=p.edituid)			WHERE p.tid='$tid' $visible $where		");		$showpost = $db->fetch_array($query);		// Choose what pid to display.		if(!$mybb->input['pid'])		{			$mybb->input['pid'] = $showpost['pid'];		}		// Is there actually a pid to display?		if(!$showpost['pid'])		{			error($lang->error_invalidpost);		}				$attachcache = array();		if($thread['attachmentcount'] > 0)		{			// Get the attachments for this post.			$query = $db->simple_select("attachments", "*", "pid=".$mybb->input['pid']);			while($attachment = $db->fetch_array($query))			{				$attachcache[$attachment['pid']][$attachment['aid']] = $attachment;			}		}		// Build the threaded post display tree.		$query = $db->query("            SELECT p.username, p.uid, p.pid, p.replyto, p.subject, p.dateline            FROM ".TABLE_PREFIX."posts p            WHERE p.tid='$tid'            $visible            ORDER BY p.dateline        ");        while($post = $db->fetch_array($query))        {            if(!$postsdone[$post['pid']])            {                if($post['pid'] == $mybb->input['pid'] || ($isfirst && !$mybb->input['pid']))                {					$postcounter = count($postsdone);                    $isfirst = 0;                }                $tree[$post['replyto']][$post['pid']] = $post;                $postsdone[$post['pid']] = 1;            }        }				$threadedbits = buildtree();		$posts = build_postbit($showpost);		eval("\$threadexbox = \"".$templates->get("showthread_threadedbox")."\";");		$plugins->run_hooks("showthread_threaded");	}	else // Linear display	{		if(!$mybb->settings['postsperpage'])		{			$mybb->settings['postperpage'] = 20;		}				// Figure out if we need to display multiple pages.		$perpage = $mybb->settings['postsperpage'];		if($mybb->input['page'] != "last")		{			$page = intval($mybb->input['page']);		}		if($mybb->input['pid'])		{			$post = get_post($mybb->input['pid']);			$query = $db->query("				SELECT COUNT(p.dateline) AS count FROM ".TABLE_PREFIX."posts p				WHERE p.tid='$tid'				AND p.dateline <= '".$post['dateline']."'				$visible			");			$result = $db->fetch_field($query, "count");			if(($result % $perpage) == 0)			{				$page = $result / $perpage;			}			else			{				$page = intval($result / $perpage) + 1;			}		}		// Recount replies if user is a moderator to take into account unapproved posts.		if($ismod)		{			$query = $db->simple_select("posts p", "COUNT(*) AS replies", "p.tid='$tid' $visible");			$thread['replies'] = $db->fetch_field($query, 'replies')-1;		}		$postcount = intval($thread['replies'])+1;		$pages = $postcount / $perpage;		$pages = ceil($pages);		if($mybb->input['page'] == "last")		{			$page = $pages;		}		if($page > $pages || $page <= 0)		{			$page = 1;		}		if($page)		{			$start = ($page-1) * $perpage;		}		else		{			$start = 0;			$page = 1;		}		$upper = $start+$perpage;				// Work out if we have terms to highlight        $highlight = "";        $threadmode = "";        if($mybb->settings['seourls'] == "yes" || ($mybb->settings['seourls'] == "auto" && $_SERVER['SEO_SUPPORT'] == 1))        {            if($mybb->input['highlight'])            {                $highlight = "?highlight=".urlencode($mybb->input['highlight']);            }            			if($defaultmode != "linear")			{	            if($mybb->input['highlight'])	            {	                $threadmode = "&mode=linear";	            }	            else 	            {	                $threadmode = "?mode=linear";	            }			}        }        else        {			if($mybb->input['highlight'])			{				if(is_array($mybb->input['highlight']))				{					foreach($mybb->input['highlight'] as $highlight_word)					{						$highlight .= "&highlight[]=".urlencode($highlight_word);					}				}				else				{					$highlight = "&highlight=".urlencode($mybb->input['highlight']);				}			}                        if($defaultmode != "linear")            {                $threadmode = "&mode=linear";            }        }        $multipage = multipage($postcount, $perpage, $page, str_replace("{tid}", $tid, THREAD_URL_PAGED.$highlight.$threadmode));		if($postcount > $perpage)		{			eval("\$threadpages = \"".$templates->get("showthread_multipage")."\";");		}		// Lets get the pids of the posts on this page.		$pids = "";		$comma = '';		$query = $db->simple_select("posts p", "p.pid", "p.tid='$tid' $visible", array('order_by' => 'p.dateline', 'limit_start' => $start, 'limit' => $perpage));		while($getid = $db->fetch_array($query))		{			// Set the ID of the first post on page to $pid if it doesn't hold any value			// to allow this value to be used for Thread Mode/Linear Mode links			// and ensure the user lands on the correct page after changing view mode			if(!$pid)			{				$pid = $getid['pid'];			}			// Gather a comma separated list of post IDs			$pids .= "$comma'{$getid['pid']}'";			$comma = ",";		}		if($pids)		{			$pids = "pid IN($pids)";						$attachcache = array();			if($thread['attachmentcount'] > 0)			{				// Now lets fetch all of the attachments for these posts.				$query = $db->simple_select("attachments", "*", $pids);				while($attachment = $db->fetch_array($query))				{					$attachcache[$attachment['pid']][$attachment['aid']] = $attachment;				}			}		}		else		{			// If there are no pid's the thread is probably awaiting approval.			error($lang->error_invalidthread);		}		// Get the actual posts from the database here.		$posts = '';		$query = $db->query("			SELECT u.*, u.username AS userusername, p.*, f.*, eu.username AS editusername			FROM ".TABLE_PREFIX."posts p			LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=p.uid)			LEFT JOIN ".TABLE_PREFIX."userfields f ON (f.ufid=u.uid)			LEFT JOIN ".TABLE_PREFIX."users eu ON (eu.uid=p.edituid)			WHERE $pids			ORDER BY p.dateline		");		while($post = $db->fetch_array($query))		{			if($thread['firstpost'] == $post['pid'] && $thread['visible'] == 0)			{				$post['visible'] = 0;			}			$posts .= build_postbit($post);			$post = '';		}		$plugins->run_hooks("showthread_linear");	}	// Show the similar threads table if wanted.	if($mybb->settings['showsimilarthreads'] != 0)	{		switch($db->type)		{			case "pgsql":				$query = $db->query("					SELECT t.*, t.username AS threadusername, u.username					FROM ".TABLE_PREFIX."threads t					LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid = t.uid), plainto_tsquery ('".$db->escape_string($thread['subject'])."') AS query					WHERE t.fid='{$thread['fid']}' AND t.tid!='{$thread['tid']}' AND t.visible='1' AND t.closed NOT LIKE 'moved|%' AND t.subject @@ query					ORDER BY t.lastpost DESC					OFFSET 0 LIMIT {$mybb->settings['similarlimit']}				");				break;			default:				$query = $db->query("					SELECT t.*, t.username AS threadusername, u.username, MATCH (t.subject) AGAINST ('".$db->escape_string($thread['subject'])."') AS relevance					FROM ".TABLE_PREFIX."threads t					LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid = t.uid)					WHERE t.fid='{$thread['fid']}' AND t.tid!='{$thread['tid']}' AND t.visible='1' AND t.closed NOT LIKE 'moved|%' AND MATCH (t.subject) AGAINST ('".$db->escape_string($thread['subject'])."') >= '{$mybb->settings['similarityrating']}'					ORDER BY t.lastpost DESC					LIMIT 0, {$mybb->settings['similarlimit']}				");		}		$count = 0;		$similarthreadbits = '';		$icon_cache = $cache->read("posticons");		while($similar_thread = $db->fetch_array($query))		{			++$count;			$trow = alt_trow();			if($similar_thread['icon'] > 0 && $icon_cache[$similar_thread['icon']])			{				$icon = $icon_cache[$similar_thread['icon']];				$icon = "";			}			else			{				$icon = " ";			}							if(!$similar_thread['username'])			{				$similar_thread['username'] = $similar_thread['threadusername'];				$similar_thread['profilelink'] = $similar_thread['threadusername'];			}			else			{				$similar_thread['profilelink'] = build_profile_link($similar_thread['username'], $similar_thread['uid']);			}						// If this thread has a prefix, insert a space between prefix and subject			if($similar_thread['prefix'] != 0)			{				$prefix = build_prefixes($similar_thread['prefix']);				$similar_thread['threadprefix'] = $prefix['displaystyle'].' ';			}						$similar_thread['subject'] = $parser->parse_badwords($similar_thread['subject']);			$similar_thread['subject'] = htmlspecialchars_uni($similar_thread['subject']);			$similar_thread['threadlink'] = get_thread_link($similar_thread['tid']);			$similar_thread['lastpostlink'] = get_thread_link($similar_thread['tid'], 0, "lastpost");			$lastpostdate = my_date($mybb->settings['dateformat'], $similar_thread['lastpost']);			$lastposttime = my_date($mybb->settings['timeformat'], $similar_thread['lastpost']);			$lastposter = $similar_thread['lastposter'];			$lastposteruid = $similar_thread['lastposteruid'];			// Don't link to guest's profiles (they have no profile).			if($lastposteruid == 0)			{				$lastposterlink = $lastposter;			}			else			{				$lastposterlink = build_profile_link($lastposter, $lastposteruid);			}			$similar_thread['replies'] = my_number_format($similar_thread['replies']);			$similar_thread['views'] = my_number_format($similar_thread['views']);			eval("\$similarthreadbits .= \"".$templates->get("showthread_similarthreads_bit")."\";");		}		if($count)		{			eval("\$similarthreads = \"".$templates->get("showthread_similarthreads")."\";");		}	}	// Decide whether or not to show quick reply.	if($forumpermissions['canpostreplys'] != 0 && $mybb->user['suspendposting'] != 1 && ($thread['closed'] != 1 || is_moderator($fid)) && $mybb->settings['quickreply'] != 0 && $mybb->user['showquickreply'] != '0' && $forum['open'] != 0)	{		$query = $db->simple_select("posts", "pid", "tid='{$tid}'", array("order_by" => "pid", "order_dir" => "desc", "limit" => 1));		$last_pid = $db->fetch_field($query, "pid");				// Show captcha image for guests if enabled		if($mybb->settings['captchaimage'] && !$mybb->user['uid'])		{			require_once MYBB_ROOT.'inc/class_captcha.php';			$post_captcha = new captcha(true, "post_captcha");			if($post_captcha->html)			{				$captcha = $post_captcha->html;			}		}		if($mybb->user['signature'])		{			$postoptionschecked['signature'] = 'checked="checked"';		}		if($mybb->user['emailnotify'] == 1)		{			$postoptionschecked['emailnotify'] = 'checked="checked"';		}	    $posthash = md5($mybb->user['uid'].random_str());				eval("\$quickreply = \"".$templates->get("showthread_quickreply")."\";");	}	else	{		$quickreply = "";	}		// If the user is a moderator, show the moderation tools.	if($ismod)	{		$customthreadtools = $customposttools = '';		if(is_moderator($forum['fid'], "canusecustomtools") && ($forum_stats[-1]['modtools'] || $forum_stats[$forum['fid']]['modtools']))		{			switch($db->type)			{				case "pgsql":				case "sqlite":					$query = $db->simple_select("modtools", "tid, name, type", "','||forums||',' LIKE '%,$fid,%' OR ','||forums||',' LIKE '%,-1,%' OR forums=''");					break;				default:					$query = $db->simple_select("modtools", "tid, name, type", "CONCAT(',',forums,',') LIKE '%,$fid,%' OR CONCAT(',',forums,',') LIKE '%,-1,%' OR forums=''");			}				while($tool = $db->fetch_array($query))			{				if($tool['type'] == 'p')				{					eval("\$customposttools .= \"".$templates->get("showthread_inlinemoderation_custom_tool")."\";");				}				else				{					eval("\$customthreadtools .= \"".$templates->get("showthread_moderationoptions_custom_tool")."\";");				}			}			// Build inline moderation dropdown			if(!empty($customposttools))			{				eval("\$customposttools = \"".$templates->get("showthread_inlinemoderation_custom")."\";");			}		}		eval("\$inlinemod = \"".$templates->get("showthread_inlinemoderation")."\";");		// Build thread moderation dropdown		if(!empty($customthreadtools))		{			eval("\$customthreadtools = \"".$templates->get("showthread_moderationoptions_custom")."\";");		}		eval("\$moderationoptions = \"".$templates->get("showthread_moderationoptions")."\";");	}	$lang->newthread_in = $lang->sprintf($lang->newthread_in, $forum['name']);		// Subscription status	$add_remove_subscription = 'add';	$add_remove_subscription_text = $lang->subscribe_thread;	if($mybb->user['uid'])	{		$query = $db->simple_select("threadsubscriptions", "tid", "tid='".intval($tid)."' AND uid='".intval($mybb->user['uid'])."'", array('limit' => 1));		if($db->fetch_field($query, 'tid'))		{			$add_remove_subscription = 'remove';			$add_remove_subscription_text = $lang->unsubscribe_thread;		}	}	if($mybb->settings['postlayout'] == "classic")	{		eval("\$classic_header = \"".$templates->get("showthread_classic_header")."\";");			}		// Get users viewing this thread	if($mybb->settings['browsingthisthread'] != 0)	{		$timecut = TIME_NOW - $mybb->settings['wolcutoff'];		$comma = '';		$guestcount = 0;		$membercount = 0;		$inviscount = 0;		$onlinemembers = '';		$doneusers = array();		$query = $db->query("			SELECT s.ip, s.uid, s.time, u.username, u.invisible, u.usergroup, u.displaygroup			FROM ".TABLE_PREFIX."sessions s			LEFT JOIN ".TABLE_PREFIX."users u ON (s.uid=u.uid)			WHERE s.time > '$timecut' AND location2='$tid' AND nopermission != 1			ORDER BY u.username ASC, s.time DESC		");		while($user = $db->fetch_array($query))		{			if($user['uid'] == 0)			{				++$guestcount;			}			else if($doneusers[$user['uid']] < $user['time'] || !$doneusers[$user['uid']])			{				++$membercount;				$doneusers[$user['uid']] = $user['time'];				$invisiblemark = '';				if($user['invisible'] == 1)				{					$invisiblemark = "*";					++$inviscount;				}				if($user['invisible'] != 1 || $mybb->usergroup['canviewwolinvis'] == 1 || $user['uid'] == $mybb->user['uid'])				{					$user['profilelink'] = get_profile_link($user['uid']);					$user['username'] = format_name($user['username'], $user['usergroup'], $user['displaygroup']);					$user['reading'] = my_date($mybb->settings['timeformat'], $user['time']);					eval("\$onlinemembers .= \"".$templates->get("showthread_usersbrowsing_user", 1, 0)."\";");					$comma = $lang->comma;				}			}		}		if($guestcount)		{			$guestsonline = $lang->sprintf($lang->users_browsing_thread_guests, $guestcount);		}		if($guestcount && $onlinemembers)		{			$onlinesep = $lang->comma;		}		$invisonline = '';		if($inviscount && $mybb->usergroup['canviewwolinvis'] != 1 && ($inviscount != 1 && $mybb->user['invisible'] != 1))		{			$invisonline = $lang->sprintf($lang->users_browsing_thread_invis, $inviscount);		}		if($invisonline != '' && $guestcount)		{			$onlinesep2 = $lang->comma;		}		eval("\$usersbrowsing = \"".$templates->get("showthread_usersbrowsing")."\";");	}		$plugins->run_hooks("showthread_end");		eval("\$showthread = \"".$templates->get("showthread")."\";");	output_page($showthread);}/** * Build a navigation tree for threaded display. * * @param unknown_type $replyto * @param unknown_type $indent * @return unknown */function buildtree($replyto="0", $indent="0"){	global $tree, $mybb, $theme, $mybb, $pid, $tid, $templates, $parser;		if($indent)	{		$indentsize = 13 * $indent;	}	else	{		$indentsize = 0;	}		++$indent;	if(is_array($tree[$replyto]))	{		foreach($tree[$replyto] as $key => $post)		{			$postdate = my_date($mybb->settings['dateformat'], $post['dateline']);			$posttime = my_date($mybb->settings['timeformat'], $post['dateline']);			$post['subject'] = htmlspecialchars_uni($parser->parse_badwords($post['subject']));						if(!$post['subject'])			{				$post['subject'] = "[".$lang->no_subject."]";			}						$post['profilelink'] = build_profile_link($post['username'], $post['uid']);					if($mybb->input['pid'] == $post['pid'])			{				eval("\$posts .= \"".$templates->get("showthread_threaded_bitactive")."\";");			}			else			{				eval("\$posts .= \"".$templates->get("showthread_threaded_bit")."\";");			}						if($tree[$post['pid']])			{				$posts .= buildtree($post['pid'], $indent);			}		}		--$indent;	}	return $posts;}?>

ادامه در ارسال بعدی ........

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

و فایل ratethread.php را به کد زیر:

<?php
/**
* MyBB 1.6
* Copyright 2010 MyBB Group, All Rights Reserved
*
* Website: http://mybb.com
* License: http://mybb.com/about/license
*
* $Id: ratethread.php 5716 2011-12-08 23:53:02Z Tomm $
*/

define("IN_MYBB", 1);
define('THIS_SCRIPT', 'ratethread.php');

$templatelist = '';
require_once "./global.php";

// Verify incoming POST request
verify_post_check($mybb->input['my_post_key']);

$lang->load("ratethread");

$tid = intval($mybb->input['tid']);
$query = $db->simple_select("threads", "*", "tid='{$tid}'");
$thread = $db->fetch_array($query);
if(!$thread['tid'])
{
error($lang->error_invalidthread);
}

$forumpermissions = forum_permissions($thread['fid']);
if($mybb->usergroup['canratethreads'] == 0 || $mybb->settings['allowthreadratings'] == 0)
{
error_no_permission();
}

// Get forum info
$fid = $thread['fid'];
$forum = get_forum($fid);
if(!$forum)
{
error($lang->error_invalidforum);
}

// Get forum info
$forum = get_forum($fid);
if(!$forum)
{
error($lang->error_invalidforum);
}
else
{
// Is our forum closed?
if($forum['open'] == 0)
{
	// Doesn't look like it is
	error($lang->error_closedinvalidforum);
}
}

// Check if this forum is password protected and we have a valid password
check_forum_password($forum['fid']);
$mybb->input['rating'] = intval($mybb->input['rating']);
if($mybb->input['rating'] < 1 || $mybb->input['rating'] > 5)
{
error($lang->error_invalidrating);
}
$plugins->run_hooks("ratethread_start");

if($mybb->user['uid'] != 0)
{
$whereclause = "uid='{$mybb->user['uid']}'";
}
else
{
$whereclause = "ipaddress='".$db->escape_string($session->ipaddress)."'";
}
$query = $db->simple_select("threadratings", "*", "{$whereclause} AND tid='{$tid}'");
$ratecheck = $db->fetch_array($query);

if($ratecheck['rid'] || $mybb->cookies['mybbratethread'][$tid])
{
error($lang->error_alreadyratedthread);
}
else
{
$plugins->run_hooks("ratethread_process");

$db->write_query("
	UPDATE ".TABLE_PREFIX."threads
	SET numratings=numratings+1, totalratings=totalratings+'{$mybb->input['rating']}'
	WHERE tid='{$tid}'
");
if($mybb->user['uid'] != 0)
{
	$insertarray = array(
		'tid' => $tid,
		'uid' => $mybb->user['uid'],
		'rating' => $mybb->input['rating'],
		'ipaddress' => $db->escape_string($session->ipaddress)
	);
	$db->insert_query("threadratings", $insertarray);
}
else
{
	$insertarray = array(
		'tid' => $tid,
		'rating' => $mybb->input['rating'],
		'ipaddress' => $db->escape_string($session->ipaddress)
	);
	$db->insert_query("threadratings", $insertarray);
	$time = TIME_NOW;
	my_setcookie("mybbratethread[{$tid}]", $mybb->input['rating']);
}
}
$plugins->run_hooks("ratethread_end");

if($mybb->input['ajax'])
{
echo "{$lang->rating_added}\n";
$query = $db->simple_select("threads", "totalratings, numratings", "tid='$tid'", array('limit' => 1));
$fetch = $db->fetch_array($query);
$width = 0;
if($fetch['numratings'] >= 0)
{
	$averagerating = floatval(round($fetch['totalratings']/$fetch['numratings'], 2));
	$width = intval(round($averagerating))*20;
	$fetch['numratings'] = intval($fetch['numratings']);
	$ratingvotesav = $lang->sprintf($lang->rating_votes_average, $fetch['numratings'], $averagerating);
	echo "{$ratingvotesav}\n";
}
echo "{$width}";
exit;
}

redirect(get_thread_link($thread['tid']), $lang->redirect_threadrated);
?>

توجه:

این کد ها تست نشده و پشتیبانی نمیشوند.

- دلیل اصلی نمایش ندادن مشکل در دسترسی گروه کاربر یا دسترسی های انجمن یا مشکل در تنظیم تنظیمات یا مشکلات احتمالی اعم از مشکل با پلاگین ، کش ها و ... می باشد.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

خیلی ممنون.

الا نمایش داده شد اما وقتی روش کلیک می کنم میگه:

شما اجازه دسترسی ندارید.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

این آموزش درست کردن برای اولین بار توسط علیرضا توفیقی ([url=http://mybbskin.ir/User-Tofighii]اطلاعات درامضا[/url]) ([url=http://mybbskin.ir/User-MyBBskini]اطلاعات درامضا[/url]) در این مرجع به دست اومده

 

برای حل مشکل

فایل ratethread.php را بازکن:

کد زیر رو توی پاک کنین:

 

error_no_permission(); 

 

مرسی علیرضا :heart:

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

حالا یه مشکلی که پیدا میکنه اینه که دیگه نمیشه سطح دسترسی براش گذاشت:whistling:

1- استفاده این کد برای کاربرانی که از پارسی ساز ما استفاده نمی کنند حرام هست از نظر من (چون این آموزش توسط بنده قبل از اینکه در هیچ کدوم از مراجع دیگر قرار داده بشه و بدون استفاده از دیگر آموزش ها قرار داده شده گفتم)

2- قبلا هم گفتم علت اصلی مشکل نمایش ندادن مشکل در دسترسی گروه کاربر یا دسترسی های انجمن یا مشکل در تنظیم تنظیمات یا مشکلات احتمالی اعم از مشکل با پلاگین ، کش ها و ... می باشد.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
1- استفاده این کد برای کاربرانی که از پارسی ساز ما استفاده نمی کنند حرام هست از نظر من (چون این آموزش توسط بنده قبل از اینکه در هیچ کدوم از مراجع دیگر قرار داده بشه و بدون استفاده از دیگر آموزش ها قرار داده شده گفتم)

 

بله :heart: توی مرجع مختلف توسط یکی انشتار داده شد بعد من گفتم حذف کردش بعدش دوستانی که فکر میکنن یک سر و گردن بالاترن بعد این که راه حلشو گفتی ار خواب غفلت بلن شدن و میگن آره من بلد بودم و اینجور اینجور راه حل کامل شده و ... یافتن من موندم سه ماه کجا بودن الان اومدن :D

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

آره...میدونم کجا رو میگین:tongue::laughing:

واقعا خاک بر سرشون با اون سایتشون...مشتی نادانن:D:D

آقا معذرت میخوام من میخوام پارسی ساز شما رو بذارم چوجوری باید عوضش کنم؟...آموزشی دارین؟:tongue:

ممنون

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
مهمان
شما به عنوان کاربر مهمان در حال حاضر دیدگاه ارسال می کنید. اگر دارای حساب کاربری در سایت هستید لطفا وارد حساب کاربری خود شوید.
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  حداکثر استفاده از ۷۵ شکلک مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×