<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- $Header: d:\cvs/4.0/Top-posters.xml,v 1.6 2010/01/12 01:56:57 pem Exp $ -->
<product productid="paulm_top_40" active="1">
	<title>Top Posters</title>
	<description>Display the Forums Top Posters</description>
	<version>4.0.2</version>
	<cvs><![CDATA[$Revision: 1.6 $]]></cvs>
	<dependencies>
		<dependency dependencytype="vbulletin" minversion="4.0.0" maxversion="4.1.99" />
	</dependencies>
	<codes>
		<code version="97">
			<installcode><![CDATA[
// Install 4.0.1 //
function ilog($tx,$lf=0,$cl=0,$sl=0)
{ // Text, lfeed, red, sleep //
	$op = '<center>';
	if($cl)	{$op.='<font color="red">';}	
	$op .= $tx;
	if($cl)	{$op .= '</font>';}	
	$op .= '</center>';
	if($lf)	{$op .= '<br />';}
	echo $op; vbflush();
	if($sl) {sleep($sl);}
}
]]></installcode>
		</code>
		<code version="98">
			<installcode><![CDATA[
// Install 4.0.1 //
$pidlist = array(
	'paulm_20051029',
	'paulm_top_37',
	'paulm_top_38',
);
foreach ($pidlist as $oldpid)
{	if ($system_versions['products'][$oldpid])
	{	delete_product($oldpid);
		if (!$flag) {$flag = true; ilog('<u>The following products have been removed</u><br />',1,1,0);}; $flag = true;
		ilog($system_versions['products'][$oldpid]['title'].', Version '.$system_versions['products'][$oldpid]['version'],1,1,1);
	} 
}
$info['cvs'] = trim(substr(substr($arr['cvs'],10),0,-1));
$info['url'] = 'http://www.vbulletin.org/forum/misc.php?do=producthelp&pid='.$info['productid'];
$info['versioncheckurl'] = 'http://www.vbulletin.org/forum/misc.php?do=productcheck&pid='.$info['productid'];
ilog("<b><u>{$info['title']}</u></b>",1);
ilog("Installing : Version {$info['version']} ; Revision {$info['cvs']}",1);
ilog('Please remember to <b>Mark as Installed</b> at vBulletin.org',1,0,4);

// Set  Class //
require_once(DIR . '/includes/class_dbalter.php');
$db_alter = new vB_Database_Alter_MySQL($vbulletin->db);

// Create Index //
$db_alter->fetch_table_info('post');
if($db_alter->add_index('dateline','dateline'))
{
	ilog('Added Post Dateline Index',1,0,1);
}
]]></installcode>
			<uninstallcode><![CDATA[	
ilog("Uninstalling $safe_productid",1,0,1);
ilog('Remember to <b>Mark as Uninstalled</b> at vBulletin.org',1,0,4);
]]></uninstallcode>
		</code>
		<code version="99">
			<uninstallcode><![CDATA[	
// Uninstall 4.0.1 //
function ilog($tx,$lf=0,$cl=0,$sl=0)
{ // Text, lfeed, red, sleep //
	$op = '<center>';
	if($cl)	{$op.='<font color="red">';}	
	$op .= $tx;
	if($cl)	{$op .= '</font>';}	
	$op .= '</center>';
	if($lf)	{$op .= '<br />';}
	echo $op; vbflush();
	if($sl) {sleep($sl);}
}
]]></uninstallcode>
		</code>
	</codes>
	<templates>
		<template name="css_common_top.css" templatetype="template" date="1255000000" username="Paul M" version="4.0.0"><![CDATA[
.pemtable {
	font-weight: bold;
	text-align: center;
}

.pemtable td {
	padding:8px;
	vertical-align:top;
	border-left:1px solid #cedfeb;
	border-right:1px solid #cedfeb;
	border-bottom:1px solid #cedfeb;
}

.pemtable .alt1 {
	background:rgb(255, 255, 255) bottom repeat-x;
}

.pemtable .alt2 {
	background-color:rgb(240,242,250);
}

.pemtable .left {
	text-align: {vb:stylevar left};
}

.pemtable .right {
	text-align: {vb:stylevar right};
}

.pemtable .normal {
	font-weight: normal;
}
]]></template>
		<template name="Top_Posters" templatetype="template" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[
{vb:stylevar htmldoctype}
<html xmlns="http://www.w3.org/1999/xhtml" dir="{vb:stylevar textdirection}" lang="{vb:stylevar languagecode}" id="vbulletin_html">
<head>
	<title>{vb:raw vboptions.bbtitle}</title>
	{vb:raw headinclude}
</head>
	<body>
	{vb:raw header}
	{vb:raw navbar}
	<!-- main -->
	<!-- $Id: Top-posters.xml,v 1.6 2010/01/12 01:56:57 pem Exp $ -->
	<div id="topuserlist" class="block pemtable">
		<h2 class="blockhead">{vb:phrase top_list}</h2>
		<table id="toplist_table" width="100%">
			<tr>
				<td class="blocksubhead" width="{vb:var top.cwidth}%">{vb:var top.title1}</td>
				<td class="blocksubhead" width="{vb:var top.cwidth}%">{vb:var top.title2}</td>
				<td class="blocksubhead" width="{vb:var top.cwidth}%">{vb:var top.title3}</td>
				<vb:if condition="$vboptions['topmonth']">
					<td class="blocksubhead" width="{vb:var top.cwidth}%">{vb:var top.title4}</td>
				</vb:if>
				<vb:if condition="$vboptions['topall']">
					<td class="blocksubhead" width="{vb:var top.cwidth}%">{vb:var top.title5}</td>
				</vb:if>
			</tr>
			{vb:raw top.data}
			<tr>
				<td class="blocksubhead" colspan="{vb:var top.cspan}">{vb:phrase top_list}&nbsp;&copy;&nbsp;<a href="http://www.cableforum.co.uk/board/member.php?u=1268">Paul Marsden</a>&nbsp;{vb:raw top.year}</td>
			</tr>
		</table>
	</div>				
	<!-- /main -->
	{vb:raw footer}
</body>
</html>
]]></template>
		<template name="Top_Posters_Bit" templatetype="template" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[
<td class="alt1 toplist">{vb:raw posts.username} (<a href="search.php?do=finduser&userid={vb:raw posts.userid}&contenttype=vBForum_Post&showposts=1">{vb:raw posts.postcount}</a>)</td>
]]></template>
		<template name="Top_Posters_Blank" templatetype="template" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[
<td class="alt2">&nbsp;</td>
]]></template>
		<template name="Top_Posters_Row" templatetype="template" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[
<tr>{vb:raw toppostrow}</tr>
]]></template>
	</templates>
	<plugins>
		<plugin active="1" executionorder="5">
			<title>Top Posters (8)</title>
			<hookname>template_groups</hookname>
			<phpcode><![CDATA[
$only['css_'] = $vbphrase['group_css'];
$only['top_posters'] = $vbphrase['top_list'];
$only = array_unique($only);
]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>Top Posters (7)</title>
			<hookname>css_start</hookname>
			<phpcode><![CDATA[
if (!defined('pem_css'))
{
	define('pem_css',1);
	$matches[1][] = 'css_common_top.css';
}
]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>Top Posters (1)</title>
			<hookname>parse_templates</hookname>
			<phpcode><![CDATA[
if ($vbulletin->options['toplink'] == 1)
{
	$template_hook['navbar_community_menu_end'] .= '<li><a href="'.$vbulletin->options['toppath'].'misc.php?'.$session['sessionurl'].'do=topposters">'.$vbphrase['top_list'].'</a></li>';
}
if ($vbulletin->options['toplink'] == 2)
{
	$template_hook['navbar_quick_links_menu_pos1'] .= '<li><a href="'.$vbulletin->options['toppath'].'misc.php?'.$session['sessionurl'].'do=topposters">'.$vbphrase['top_list'].'</a></li>';
}
]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>Top Posters (2)</title>
			<hookname>cache_templates</hookname>
			<phpcode><![CDATA[
$cache[] = 'Top_Posters';
$cache[] = 'Top_Posters_Bit';
$cache[] = 'Top_Posters_Row';
$cache[] = 'Top_Posters_Blank';
]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>Top Posters (3)</title>
			<hookname>misc_start</hookname>
			<phpcode><![CDATA[
function rpl_csvlist($list,$unique = true,$zero = true)
{
	$csv = '';
	$pem = array();
	$array = explode(',',$list);
	if (!empty($array))
	{
		foreach ($array as $item)
		{
			$item = trim($item);
			if (is_numeric($item))
			{
				$pem[] = $item;
			}
		}
		if (!empty($pem))
		{
			if (unique)
			{
				$pem = array_unique($pem);
			}
			$csv = trim(implode(',',$pem));
		}
	}
	if (empty($pem) and $zero)
	{
		$csv = '0';
	}
	return $csv;
}

if ($_REQUEST['do'] == 'topposters')
{
	$top = array();
	$users = rpl_csvlist($vbulletin->options['topusrs']);
	$ugroups = rpl_csvlist($vbulletin->options['topgrps']); 
	$start[1] = TIMENOW - (86400 * $vbulletin->options['topc1']);
	$start[2] = TIMENOW - (86400 * $vbulletin->options['topc2']);
	$start[3] = TIMENOW - (86400 * $vbulletin->options['topc3']);
	$timenow = date('YmdHis',TIMENOW - intval($vbulletin->options['hourdiff'])); 
	$start[4] = TIMENOW - (substr($timenow,6,2)*86400 + substr($timenow,8,2)*3600 + substr($timenow,10,2)*60 + substr($timenow,12,2)) + 86400; 

	$top['title1'] = construct_phrase($vbphrase['top_col1'],$vbulletin->options['topc1']);
	$top['title2'] = construct_phrase($vbphrase['top_col2'],$vbulletin->options['topc2']);
	$top['title3'] = construct_phrase($vbphrase['top_col3'],$vbulletin->options['topc3']);
	$top['title4'] = construct_phrase($vbphrase['top_col4']);
	$top['title5'] = construct_phrase($vbphrase['top_col5']);

	$wherecond = "WHERE rpl.userid NOT IN ($users) ";

	if ($vbulletin->options['topgrpx'] == 1)
	{
		$wherecond .= "AND usergroupid IN ($ugroups) ";
	}
	if ($vbulletin->options['topgrpx'] == 2)
	{
		$wherecond .= "AND usergroupid NOT IN ($ugroups) ";
	}

	// Get Data
	for ($col = 1; $col <= 5; $col++) 
	{
		if (($col<4) OR ($col==4 AND $vbulletin->options['topmonth'])) 
		{
			$where = $wherecond."AND rpl.dateline > $start[$col] ";
			$data[$col] = $vbulletin->db->query_read_slave("
				SELECT COUNT(rpl.dateline) AS postcount, rpl.userid, user.username
				FROM " . TABLE_PREFIX . "post AS rpl
				JOIN " . TABLE_PREFIX . "user AS user ON (rpl.userid = user.userid)
				$where 
				GROUP BY rpl.userid ORDER BY postcount DESC LIMIT ".$vbulletin->options['toplines']
			);
		}
		if ($col==5 AND $vbulletin->options['topall']) 
		{
			$data[$col] = $vbulletin->db->query_read_slave("
				SELECT posts AS postcount, userid, username
				FROM " . TABLE_PREFIX . "user AS rpl
				$wherecond  
				ORDER BY postcount DESC LIMIT ".$vbulletin->options['toplines']
			);
		}
	}

	$top['cspan'] = 3;
	if ($vbulletin->options['topall']) $top['cspan'] += 1;
	if ($vbulletin->options['topmonth']) $top['cspan'] += 1;
	$top['cwidth'] = intval(100 / $top['cspan']);

	// Build Rows
	for ($row = 0; $row < $vbulletin->options['toplines']; $row++) 
	{
		$toppostrow = "";
		for ($col = 1; $col <= $top['cspan']; $col++) 
		{
			$fetchcol = $col;
			if (!$vbulletin->options['topmonth'] AND $fetchcol == 4) $fetchcol= 5;
			$posts[$col] = $vbulletin->db->fetch_array($data[$fetchcol]);
			if ($posts[$col]['postcount'])
			{
				$posts['userid'] = $posts[$col]['userid'];
				$posts['username'] = $posts[$col]['username'];
				$posts['postcount'] = vb_number_format($posts[$col]['postcount']);
				$templater = vB_Template::create('Top_Posters_Bit');
				$templater->register('posts',$posts);
				$toppostrow .= $templater->render();
			}
			else
			{
				$templater = vB_Template::create('Top_Posters_Blank');
				$toppostrow .= $templater->render();
			}			
		}
		$templater = vB_Template::create('Top_Posters_Row');
		$templater->register('toppostrow',$toppostrow);
		$top['data'] .= $templater->render();
	}

	// Navbar
	$navbits = array();
	$navbits[''] = $vbphrase['top_list'];
	$navbar = render_navbar_template(construct_navbits($navbits));

	// Output page
	$wrt['year'] = $copyrightyear;
	$templater = vB_Template::create('Top_Posters');
	$templater->register_page_templates();
	$templater->register('navbar', $navbar);
	$templater->register('top',$top);
	print_output($templater->render());
}
]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>Top Posters (4)</title>
			<hookname>online_location_preprocess</hookname>
			<phpcode><![CDATA[
if ($filename == 'misc.php' AND $values['do'] == 'topposters')
{
	$filename = 'topposters.php';
}
]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>Top Posters (5)</title>
			<hookname>online_location_process</hookname>
			<phpcode><![CDATA[
if ($filename == 'topposters.php')
{
	$userinfo['activity'] = 'topposters';
}
]]></phpcode>
		</plugin>
		<plugin active="1" executionorder="5">
			<title>Top Posters (6)</title>
			<hookname>online_location_unknown</hookname>
			<phpcode><![CDATA[
if ($userinfo['activity'] == 'topposters')
{
	$handled = true;
	$userinfo['action'] = $vbphrase['top_view'];
	$userinfo['where'] = '<a href="misc.php?do=topposters">'.$vbulletin->options['bburl'].'/misc.php?do=topposters</a>';
}
]]></phpcode>
		</plugin>
	</plugins>
	<phrases>
		<phrasetype name="GLOBAL" fieldname="global">
			<phrase name="top_col1" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Last Day]]></phrase>
			<phrase name="top_col2" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Last {1} Days]]></phrase>
			<phrase name="top_col3" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Last {1} Days]]></phrase>
			<phrase name="top_col4" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[This Month]]></phrase>
			<phrase name="top_col5" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Overall]]></phrase>
			<phrase name="top_list" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Top Posters]]></phrase>
			<phrase name="top_view" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Viewing Top Posters]]></phrase>
		</phrasetype>
		<phrasetype name="vBulletin Settings" fieldname="vbsettings">
			<phrase name="setting_topall_desc" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Set to yes to include the overall posts column.]]></phrase>
			<phrase name="setting_topall_title" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Display Overall Top Posts]]></phrase>
			<phrase name="setting_toppath_desc" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[The path that will prefix misc.php in the auto-links, if you use a CMS then you may need to set this to something like /pathtoforum/ - otherwise just leave this blank.]]></phrase>
			<phrase name="setting_toppath_title" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Link Prefix Path]]></phrase>
			<phrase name="setting_topc1_desc" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Set the number days to be counted for Display Column 1]]></phrase>
			<phrase name="setting_topc1_title" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Column 1 - Number of days]]></phrase>
			<phrase name="setting_topc2_desc" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Set the number days to be counted for Display Column 2]]></phrase>
			<phrase name="setting_topc2_title" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Column 2 - Number of days]]></phrase>
			<phrase name="setting_topc3_desc" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Set the number days to be counted for Display Column 3]]></phrase>
			<phrase name="setting_topc3_title" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Column 3 - Number of days]]></phrase>
			<phrase name="setting_toplink_desc" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[This will try and create a link on your forum to the Top Posters page, this may fail if you have a customised navbar. If this is disabled, or does not work, then you will need to manually add a link to <i>misc.php?do=topposters</i>]]></phrase>
			<phrase name="setting_toplink_title" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Automatic Link Creation]]></phrase>
			<phrase name="setting_topgrpx_desc" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Determines how the Usergroup list is used. If Include or Exclude is selected then members whose primary usergroup is listed will be included/excluded from the page. If 'all' is selected then members of any usergroup may be displayed.]]></phrase>
			<phrase name="setting_topgrpx_title" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Include/Exclude Usergroups]]></phrase>
			<phrase name="setting_topgrps_desc" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Comma seperated list of primary usergroups - used in conjunction with the include/exclude setting to determine which members will be listed.]]></phrase>
			<phrase name="setting_topgrps_title" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[User Groups List]]></phrase>
			<phrase name="setting_toplines_desc" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Set the number of Top Post lines to be displayed, e.g. 10 = Display the Top Ten.]]></phrase>
			<phrase name="setting_toplines_title" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Number of Display Lines]]></phrase>
			<phrase name="setting_topmonth_desc" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Set to yes to include the posts this month column.]]></phrase>
			<phrase name="setting_topmonth_title" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Display Monthly Top Posts]]></phrase>
			<phrase name="setting_topusrs_desc" date="1261000000" username="Paul M" version="4.0.2"><![CDATA[Comma seperated list of userids to be excluded from the counts.]]></phrase>
			<phrase name="setting_topusrs_title" date="1261000000" username="Paul M" version="4.0.2"><![CDATA[User Exclusion List]]></phrase>
			<phrase name="settinggroup_topposters" date="1260000000" username="Paul M" version="4.0.0"><![CDATA[Top Posters]]></phrase>
		</phrasetype>
	</phrases>
	<options>
		<settinggroup name="topposters" displayorder="3055">
			<setting varname="topusrs" displayorder="10">
				<datatype>free</datatype>
				<defaultvalue></defaultvalue>
			</setting>
			<setting varname="topgrps" displayorder="15">
				<datatype>free</datatype>
				<defaultvalue>2,5,6,7</defaultvalue>
			</setting>
			<setting varname="topgrpx" displayorder="20">
				<datatype>number</datatype>
				<optioncode>radio:piped
1|Include Groups Listed
2|Exclude Groups Listed
0|Include ALL usergroups</optioncode>
				<defaultvalue>0</defaultvalue>
			</setting>
			<setting varname="topmonth" displayorder="30">
				<datatype>boolean</datatype>
				<optioncode>yesno</optioncode>
				<defaultvalue>0</defaultvalue>
			</setting>
			<setting varname="topall" displayorder="40">
				<datatype>boolean</datatype>
				<optioncode>yesno</optioncode>
				<defaultvalue>1</defaultvalue>
			</setting>
			<setting varname="toplines" displayorder="50">
				<datatype>number</datatype>
				<defaultvalue>10</defaultvalue>
			</setting>
			<setting varname="topc1" displayorder="60">
				<datatype>number</datatype>
				<defaultvalue>1</defaultvalue>
			</setting>
			<setting varname="topc2" displayorder="70">
				<datatype>number</datatype>
				<defaultvalue>7</defaultvalue>
			</setting>
			<setting varname="topc3" displayorder="80">
				<datatype>number</datatype>
				<defaultvalue>28</defaultvalue>
			</setting>
			<setting varname="toplink" displayorder="90">
				<datatype>number</datatype>
				<optioncode>radio:piped
0|Disable
2|Create Link in Quick Links
1|Create Link in Community Links</optioncode>
				<defaultvalue>1</defaultvalue>
			</setting>
			<setting varname="toppath" displayorder="100">
				<datatype>free</datatype>
				<defaultvalue></defaultvalue>
			</setting>
		</settinggroup>
	</options>
</product>
