<?php
/*
	Forum Stickies list
	Display forum Stickies list from specified forum(s)
	The author doesn't have responsibility for any harm to your forum that could have been caused by this plugin/mod.
	Use at your own risk.
*/

if(!defined('IN_MYBB'))
{
	die('Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.');
}

function xtdispforum_info()
{
	return array(
		'name'			=> 'Forum Stickies list',
		'description'	=> 'Forum Stickies list',
		'website'		=> 'http://mybbhacks.zingaburga.com/member.php?action=profile&amp;uid=171',
		'author'		=> 'Based on a plugin by RateU edited by LeeFish',
		'authorsite'	=> 'http://mybbhacks.zingaburga.com/member.php?action=profile&amp;uid=171',
		'version'		=> '1.0',
		'compatibility' => '1*',
		'guid'        	=> ''
	);
}

function xtdispforum_activate()
{
	global $db;
	
	$settinggroups = array(
		'name'			=> 'xtdispforum_title',
		'title'			=> 'Forum Stickies list',
		'description'	=> 'Settings For Forum Stickies list',
		'disporder'		=> '99',// My Favorite Number :)
		'isdefault'		=> 'no'
	);
	
	$db->insert_query('settinggroups',$settinggroups);
	$gid = $db->insert_id();
	
	$settings = array(
		'name'			=> 'xtdispforum_fid',
		'title'			=> 'Enable The Forum Stickies list For This Forum ID(s)',
		'description'	=> 'Type the forum id(s). Seperate with commas. 0 to disable.',
		'optionscode'	=> 'text',
		'value'			=> '68,46',
		'disporder'		=> '1',
		'gid'			=> intval($gid)
	);
	$db->insert_query("settings",$settings);

	$settings = array(
		'name'			=> 'xtdispforum_num',
		'title'			=> 'Number Of Stickies Thumbnail',
		'description'	=> 'How many Stickies thumbnail do you want to be displayed?',
		'optionscode'	=> 'text',
		'value'			=> '5',
		'disporder'		=> '2',
		'gid'			=> intval($gid)
	);
	$db->insert_query("settings",$settings);

	$template = array(
		'tid'		=> NULL,
		'title'		=> "xtstickies_list",
		'template'	=> "<table border=\"0\" cellspacing=\"{\$theme[\'borderwidth\']}\" cellpadding=\"{\$theme[\'tablespace\']}\" class=\"tborder\">
		<tr>
			<td class=\"thead\">
				<div><strong>Forum Stickies</strong></div>
			</td>
		</tr>
		<tr>
			<td class=\"trow1\" align=\"left\">
				{\$xtstickies_list_list}
			</td>
		</tr>
</table>
<br />",
		'sid'		=> "-1"
	);
	$db->insert_query("templates", $template);
	
	$template = array(
		'tid'		=> NULL,
		'title'		=> "xtstickies_list_list",
'template'	=> $db->escape_string('<div class="float_left">
			<strong><a href="{$xtstickies_thread_link}">{$xtstickies_thread_subject}</a></strong>
		</div>
		<br />
		<div class="float_right : smalltext"><em>posted by:</em> 
			{$xtstickies_profile_link}
		</div>
		<br class="clear" />'),
		'sid'		=> -1
	);
	$db->insert_query("templates", $template);
	rebuild_settings();
	
	require MYBB_ROOT.'/inc/adminfunctions_templates.php';
	find_replace_templatesets('header', '#^(.*)$#s', "\\1\r\n" . '<!-- Forum Stickies list -->');
}

function xtdispforum_deactivate()
{
	global $db;

	$db->query("DELETE FROM ".TABLE_PREFIX."templates WHERE title='xtstickies_list'");
	$db->query("DELETE FROM ".TABLE_PREFIX."templates WHERE title='xtstickies_list_list'");
	$db->query('DELETE FROM '.TABLE_PREFIX.'settinggroups WHERE name=\'xtdispforum_title\'');
	$db->query('DELETE FROM '.TABLE_PREFIX.'settings WHERE name IN(\'xtdispforum_fid\',\'xtdispforum_num\')');
	rebuild_settings();
	
	require MYBB_ROOT.'/inc/adminfunctions_templates.php';
	find_replace_templatesets('header', '#<!-- Forum Stickies list -->#', '', 0);
}

$plugins->add_hook('global_start', 'xtdispforum_tcache');
function xtdispforum_tcache()
{
	global $mybb, $templatelist, $plugins;

	if($mybb->settings['xtdispforum_fid'] != 0)
	{
		if(THIS_SCRIPT == 'forumdisplay.php' || THIS_SCRIPT == 'showthread.php')
		{
			if(isset($templatelist))
			{
				$templatelist .= ',xtstickies_list,xtstickies_list_list';
			}
		}
		$plugins->add_hook('global_end', 'xtdispforum_run');
		$plugins->add_hook('forumdisplay_start', 'xtdispforum_run');
		$plugins->add_hook('showthread_start', 'xtdispforum_run');
	}
}

function xtdispforum_run()
{
    global $mybb, $db, $thread, $fid, $templates, $theme, $xtstickies_list;
	if(in_array($fid, explode(',', $mybb->settings['xtdispforum_fid'])) || in_array($thread['fid'], explode(',', $mybb->settings['xtdispforum_fid'])))
	{
		$query = $db->query("
			SELECT t.*, t.username AS tusername, u.username, u.avatar, u.usergroup, u.displaygroup, tr.rating
			FROM ".TABLE_PREFIX."threads t
			LEFT JOIN ".TABLE_PREFIX."threadratings tr ON (tr.tid=t.tid)
			LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=t.uid)
			LEFT JOIN ".TABLE_PREFIX."threadfields_data td ON (td.tid=t.tid)
			WHERE t.visible=1 AND td.xtdispforum='Yes' AND t.fid=$fid
			ORDER BY tr.rating DESC
			LIMIT ".intval($mybb->settings['xtdispforum_num'])."
		");
		while($xtstickies = $db->fetch_array($query))
		{
			$xtstickies_title = htmlspecialchars_uni($xtstickies['subject']);
			$xtstickies_thread_subject = htmlspecialchars_uni($GLOBALS['parser']->parse_badwords($xtstickies['subject']));
			$xtstickies_thread_link = get_thread_link($xtstickies['tid']);
			$xtstickies_replies = my_number_format($xtstickies['replies']);
			$xtstickies_views = my_number_format($xtstickies['views']);
			if($xtstickies['postpreview']){
				$xtstickies_postpreview = htmlspecialchars_uni($xtstickies['postpreview']);
			}
			if($xtstickies['uid'] == 0){
				$xtstickies_profile_link = htmlspecialchars_uni($xtstickies['tusername']);
			}else{
				$xtstickies_profile_link = build_profile_link(format_name(htmlspecialchars_uni($xtstickies['username']), $xtstickies['usergroup'], $xtstickies['displaygroup']), $xtstickies['uid']);
			}
			eval("\$xtstickies_list_list .= \"".$templates->get("xtstickies_list_list")."\";");
		}
		eval("\$xtstickies_list = \"".$templates->get("xtstickies_list")."\";");
	}
}
?>