<?php
if(!defined('IN_MYBB')){
	die('Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.');
}

function mnuplrt_info(){
	return array(
		'name'			=> 'Latest Threads In Profile',
		'description'	=> 'Display latest threads title from specified forum id(s) in profile',
		'website'		=> 'http://mybbhacks.zingaburga.com',
		'author'		=> 'XThreads Mania',
		'authorsite'	=> 'http://mybbhacks.zingaburga.com',
		'version'		=> '1.2',
		'compatibility' => '1*',
		'guid'        	=> ''
	);
}

function mnuplrt_activate(){
	mnuplrt_deactivate();
	global $db;
	$gid = $db->insert_query('settinggroups',array(
		'name'			=> 'mnuplrt_title',
		'title'			=> 'Latest Threads In Profile',
		'description'	=> 'Settings For Latest Threads In Profile',
		'disporder'		=> '99',
		'isdefault'		=> 'no'
	));
	$db->insert_query('settings',array(
		'name'			=> 'mnuplrt_ed',
		'title'			=> 'Enable/Disable',
		'description'	=> 'Enable Latest Threads In Profile?',
		'optionscode'	=> 'yesno',
		'value'			=> '0',
		'disporder'		=> '1',
		'gid'			=> intval($gid)
	));
	$db->insert_query('settings',array(
		'name'			=> 'mnuplrt_num',
		'title'			=> 'Number Of Latest Threads In Profile',
		'description'	=> 'How many latest threads do you want to display in user profile?',
		'optionscode'	=> 'text',
		'value'			=> '5',
		'disporder'		=> '2',
		'gid'			=> intval($gid)
	));
	$db->insert_query('settings',array(
		'name'			=> 'mnuplrt_fid',
		'title'			=> 'Forum IDs Of Latest Threads',
		'description'	=> 'Threads Title will be pulled out from this forum id(s). Separated by commas. 0 = All forum.',
		'optionscode'	=> 'text',
		'value'			=> '0',
		'disporder'		=> '3',
		'gid'			=> intval($gid)
	));
	$db->insert_query('settings',array(
		'name'			=> 'mnuplrt_maxtitle',
		'title'			=> 'Maximum Characters For Thread Title',
		'description'	=> '0 = No maximum.',
		'optionscode'	=> 'text',
		'value'			=> '0',
		'disporder'		=> '4',
		'gid'			=> intval($gid)
	));
	$db->insert_query('settings',array(
		'name'			=> 'mnuplrt_picons',
		'title'			=> 'Display The Thread / Post Icons?',
		'description'	=> 'Do you want to display the thread / post icons?',
		'optionscode'	=> 'yesno',
		'value'			=> '1',
		'disporder'		=> '5',
		'gid'			=> intval($gid)
	));
	$db->insert_query('settings',array(
		'name'			=> 'mnuplrt_npicons',
		'title'			=> 'Default Post Icon',
		'description'	=> 'This images will be displayed if there is no post icon in a thread.<br />Will be applied if the "Display The Thread / Post Icons?" settings set to "Yes" only.',
		'optionscode'	=> 'text',
		'value'			=> 'images/icons/user.gif',
		'disporder'		=> '6',
		'gid'			=> intval($gid)
	));
	rebuild_settings();
	$db->insert_query('templates', array(
		'title'		=> 'mnlrprofile_thread_title',
		'template'	=> $db->escape_string('<br class="clear" />
<table border="0" cellspacing="{$theme[\'borderwidth\']}" cellpadding="{$theme[\'tablespace\']}" class="tborder">
	<tr>
		<td class="thead" colspan="2">
			<strong>{$lang->mnuplrt_title}</strong>
		</td>
	</tr>
	{$mnlrprofile_thread_title_thread}
</table>'),
		'sid'		=> -1
	));
	$db->insert_query('templates', array(
		'title'		=> 'mnlrprofile_thread_title_thread',
		'template'	=> $db->escape_string('<tr>
	{$mnlrprofile_thread_title_post_icons}
	<td class="{$altbg}">
		<div><strong>{$mnuplrts_links}</strong></div>
		<div class="smalltext">
			<em>{$lang->mnuplrt_in_forum} {$mnuplrts_forum}{$lang->mnuplrt_comma} {$mnuplrts_date} {$lang->mnuplrt_at} {$mnuplrts_time}</em>
		</div>
		<div class="post_body">{$mnuplrts_postpreview}</div>
		<div class="float_right smalltext">
			{$lang->mnuplrt_replies} {$mnuplrts_replies}{$lang->mnuplrt_comma} {$lang->mnuplrt_views} {$mnuplrts_views}
		</div>
	</td>
</tr>'),
		'sid'		=> -1
	));
	$db->insert_query('templates', array(
		'title'		=> 'mnlrprofile_thread_title_post_icons',
		'template'	=> $db->escape_string('<td class="{$altbg}" width="1" valign="middle" align="center">{$mnuplrts_icon}</td>'),
		'sid'		=> -1
	));
	require_once MYBB_ROOT.'/inc/adminfunctions_templates.php';
	find_replace_templatesets('member_profile', '#'.preg_quote('{$signature}').'#', '{\$signature}{\$mnuplrt_threads}');
}

function mnuplrt_deactivate(){
	global $db;
	$gid = $db->fetch_field($db->simple_select('settinggroups', 'gid', 'name="mnuplrt_title"'), 'gid');
	if($gid){
		$db->delete_query('settings', 'gid='.$gid);
		$db->delete_query('settinggroups', 'gid='.$gid);
	}
	rebuild_settings();
	$db->delete_query('templates', 'title IN("mnlrprofile_thread_title", "mnlrprofile_thread_title_thread", "mnlrprofile_thread_title_post_icons")');
	require_once MYBB_ROOT.'/inc/adminfunctions_templates.php';
	find_replace_templatesets('member_profile', '#'.preg_quote('{$mnuplrt_threads}').'#', '',0);
}

$plugins->add_hook('global_start', 'mnuplrt_tcache');
function mnuplrt_tcache(){
	if(THIS_SCRIPT == 'member.php'){
		if(isset($GLOBALS['templatelist'])){
			$GLOBALS['templatelist'] .= ',mnlrprofile_thread_title,mnlrprofile_thread_title_thread,mnlrprofile_thread_title_post_icons';
		}
	}
}

$plugins->add_hook('member_profile_end', 'mnuplrt_run');
function mnuplrt_run(){
	if($GLOBALS['mybb']->settings['mnuplrt_ed'] != 0){
		$mnuplrt_unviewable = get_unviewable_forums(true);
		if($mnuplrt_unviewable) $mnuplrt_unviewwhere = ' AND t.fid NOT IN ('.$mnuplrt_unviewable.')';
		if($GLOBALS['mybb']->settings['mnuplrt_fid'] && $GLOBALS['mybb']->settings['mnuplrt_fid'] != '0'){
			if(is_array(explode(',', $GLOBALS['mybb']->settings['mnuplrt_fid']))){
				foreach(explode(',', $GLOBALS['mybb']->settings['mnuplrt_fid']) as $mnuplrt_fid){
					$mnuplrt_fid_array[] = intval($mnuplrt_fid);
				}
				$mnuplrt_cond = ' AND t.fid IN ('.implode(',', $mnuplrt_fid_array).')';
			}
		}
		$mnuplrt_notactive = get_inactive_forums();
		if($mnuplrt_notactive) $mnuplrt_cond_notactive = ' AND t.fid NOT IN ('.$mnuplrt_notactive.')';
		$threadfield_cache = xthreads_gettfcache();
		if(!empty($threadfield_cache)){
			$xtfields = '';
			foreach($threadfield_cache as &$tf){
				$xtfields .= ',tf.'.$tf['field'].' AS xthreads_'.$tf['field'];
			}
		}
		$query = $GLOBALS['db']->query('SELECT t.*'.$xtfields.'
			FROM '.TABLE_PREFIX.'threads t
			LEFT JOIN '.TABLE_PREFIX.'threadfields_data tf ON (tf.tid=t.tid)
			WHERE t.uid='.intval($GLOBALS['memprofile']['uid']).' AND t.visible=1 AND t.closed NOT LIKE "moved|%"'.$mnuplrt_cond.$mnuplrt_unviewwhere.$mnuplrt_cond_notactive.'
			ORDER BY t.dateline DESC
			LIMIT 0,'.intval($GLOBALS['mybb']->settings['mnuplrt_num'])
		);
		if($GLOBALS['db']->num_rows($query)){
			global $lang,$mnuplrt_threads,$theme;
			$lang->load('mnuplrt');
			$altbg = alt_trow();
			$mnuplrts_icon_cache = $GLOBALS['cache']->read('posticons');
			$mnuplrts_numthreads = $GLOBALS['db']->num_rows($query);
			$mnuplrts_cache = array();
			while($mnuplrts = $GLOBALS['db']->fetch_array($query)){
				$mnuplrts_cache[$mnuplrts['tid']] = $mnuplrts;
			}
			if(!empty($mnuplrts_cache)){
				global $threadfields;
				$mnlrprofile_thread_title_thread = '';
				$tids = implode(',',array_keys($mnuplrts_cache));
				foreach($mnuplrts_cache as $mnuplrts){
					$forumpermissions[$mnuplrts['fid']] = forum_permissions($mnuplrts['fid']);
					if($forumpermissions[$mnuplrts['fid']]['canview'] == 0 || $forumpermissions[$mnuplrts['fid']]['canviewthreads'] == 0 || $forumpermissions[$mnuplrts['fid']]['canonlyviewownthreads'] == 1 && $mnuplrts['uid'] != $GLOBALS['mybb']->user['uid']){
						$mnuplrts_numthreads--;	continue;
					}
					$mnuplrts_date = my_date($GLOBALS['mybb']->settings['dateformat'], $mnuplrts['dateline']);
					$mnuplrts_time = my_date($GLOBALS['mybb']->settings['timeformat'], $mnuplrts['dateline']);
					$mnuplrts_replies = my_number_format($mnuplrts['replies']);
					$mnuplrts_views = my_number_format($mnuplrts['views']);
					$mnuplrts_subject = htmlspecialchars_uni($GLOBALS['parser']->parse_badwords($mnuplrts['subject']));
					if($GLOBALS['mybb']->settings['mnuplrt_maxtitle'] && intval($GLOBALS['mybb']->settings['mnuplrt_maxtitle']) != 0 && my_strlen($mnuplrts['subject']) > intval($GLOBALS['mybb']->settings['mnuplrt_maxtitle'])){
						$mnuplrts_subject = htmlspecialchars_uni($GLOBALS['parser']->parse_badwords(my_substr($mnuplrts['subject'], 0, intval($GLOBALS['mybb']->settings['mnuplrt_maxtitle'])).'...'));
					}
					$mnuplrts_links = '<a href="'.get_thread_link(intval($mnuplrts['tid'])).'" title="'.htmlspecialchars_uni($GLOBALS['parser']->parse_badwords($mnuplrts['subject'])).'">'.$mnuplrts_subject.'</a>';
					$mnuplrts_forum = '<a href="'.get_forum_link(intval($mnuplrts['fid'])).'">'.preg_replace('#&(?!\#[0-9]+;)#si', '&amp;', $GLOBALS['forum_cache'][$mnuplrts['fid']]['name']).'</a>';
					if($mnuplrts['postpreview']){
						$mnuplrts_postpreview = htmlspecialchars_uni($GLOBALS['parser']->parse_badwords($mnuplrts['postpreview']));
					}
					$threadfields = array();
					foreach($threadfield_cache as $k => &$v) {
						xthreads_get_xta_cache($v,$tids);
						$threadfields[$k] =& $mnuplrts['xthreads_'.$k];
						xthreads_sanitize_disp($threadfields[$k],$v);
					}
					if($GLOBALS['mybb']->settings['mnuplrt_picons'] != 0){
						if($mnuplrts['icon'] > 0 && $mnuplrts_icon_cache[$mnuplrts['icon']]){
							$mnuplrts_icon = $mnuplrts_icon_cache[$mnuplrts['icon']];
							$mnuplrts_icon = '<img src="'.$mnuplrts_icon['path'].'" alt="" />';
						}else{
							$mnuplrts_icon = '<img src="'.htmlspecialchars_uni($GLOBALS['mybb']->settings['mnuplrt_npicons']).'" alt="" />';
						}
						eval('$mnlrprofile_thread_title_post_icons = "'.$GLOBALS['templates']->get('mnlrprofile_thread_title_post_icons').'";');
					}
					eval('$mnlrprofile_thread_title_thread .= "'.$GLOBALS['templates']->get('mnlrprofile_thread_title_thread').'";');
					$altbg = alt_trow();
				}
				if($mnlrprofile_thread_title_thread){
					$lang->mnuplrt_title = $lang->sprintf($lang->mnuplrt_title, htmlspecialchars_uni($GLOBALS['memprofile']['username']), my_number_format($mnuplrts_numthreads));
					eval('$mnuplrt_threads = "'.$GLOBALS['templates']->get('mnlrprofile_thread_title').'";');
				}
			}
		}
	}
}
?>