I've also been able to use
almost all the same templates and php code to make a forum sideblock.
1. Install the product as normal.
2. Create a new template called v3a_CMS_arcadestats1 and add the following code
Code:
<div>
<table align="left" width="100%">
<tr><td>{vb:raw as_score_table}</td></tr>
<tr><td>{vb:raw as_news_table}</td></tr>
<tr><td>{vb:raw as_random_table}</td></tr>
<tr><td>{vb:raw as_champs_table}</td></tr>
<tr><td>{vb:raw as_recent_table}</td></tr>
<tr><td>{vb:raw as_played_table}</td></tr>
<tr><td>{vb:raw as_popular_table}</td></tr>
</table>
</div>
3. Go to AdminCP > Forums & Moderators > Forum Block Manager > Add Block
Title - Arcade Stats (or whatever)
Content Type - PHP
Content -
Code:
global $vbulletin, $bbcode, $parser, $path, $db;
$g_limit = 5;
$g_champs_limit = 5;
$g_news_limit = 5;
$g_scores_limit = 5;
function get_games ($as_handle, $as_title, $limit) {
global $vbulletin;
switch ($as_handle) {
case 'recent':
$orderby = "dateadded DESC";
break;
case 'played':
$orderby = "sessioncount DESC";
break;
case 'popular':
$orderby = "votepoints DESC";
break;
default:
$orderby = "gameid ASC";
break;
}
$getgames = $vbulletin->db->query("
SELECT games.* FROM " . TABLE_PREFIX . "v3arcade_games AS games
ORDER BY " . $orderby . "
LIMIT $limit
");
while ($game = $vbulletin->db->fetch_array($getgames))
{
$game['gamename'] = fetch_trimmed_title(stripslashes($game['title']),$maxtitlechars);
$game['gamedate'] = vbdate($vbulletin->options['dateformat'], $game['dateadded']);
$getbgrow = exec_switch_bg();
switch ($as_handle) {
case 'recent':
$as_game_data = $game['gamedate'];
break;
case 'played':
$as_game_data = "Played " . $game['sessioncount'] . " times";
break;
case 'popular':
$as_game_data = $game['votepoints'] . " votes";
break;
default:
$as_game_data = "";
break;
}
//eval('$as_gamebits .= "' . fetch_template('v3a_CMS_as_gamebits') . '";');
$templater = vB_Template::create('v3a_CMS_as_gamebits');
$templater->register('as_game_data',$as_game_data);
$templater->register('game',$game);
$as_gamebits .= $templater->render();
}
$vbulletin->db->free_result($getgames);
// eval('$gametable = "' . fetch_template("v3a_CMS_as_{$as_handle}_gametable") . '";');
$templater = vB_Template::create('v3a_CMS_as_' . $as_handle . '_gametable');
$templater->register('as_title',$as_title);
$templater->register('as_gamebits',$as_gamebits);
$gametable = $templater->render();
return $gametable;
}
function get_champs ($limit) {
global $vbulletin;
$champs = $vbulletin->db->query_read("
SELECT COUNT(games.highscorerid) AS count, user.username, user.userid
FROM " . TABLE_PREFIX . "v3arcade_games AS games
LEFT JOIN " . TABLE_PREFIX . "user AS user ON user.userid = games.highscorerid
WHERE user.userid IS NOT NULL
GROUP BY user.username, user.userid
ORDER BY count DESC, user.userid ASC
LIMIT " . $limit
);
$row = '0';
$awards = '0';
$leaders = '0';
while ($champ = $vbulletin->db->fetch_array($champs)) {
$leaders++;
if ($awards != $champ['count']) {
$row = $leaders;
}
$awards = $champ['count'];
$getbgrow = exec_switch_bg();
//eval('$as_champbits .= "' . fetch_template('v3a_CMS_as_champbits') . '";');
$templater = vB_Template::create('v3a_CMS_as_champbits');
$templater->register('getbrow',$getbrow);
$templater->register('champ',$champ);
$as_champbits .= $templater->render();
}
$vbulletin->db->free_result($champs);
//eval('$champstable = "' . fetch_template("v3a_CMS_as_champstable") . '";');
$templater = vB_Template::create('v3a_CMS_as_champstable');
$templater->register('as_champbits',$as_champbits);
$champstable = $templater->render();
return $champstable;
}
function get_random_game () {
global $vbulletin;
$random_game = $vbulletin->db->query_first("
SELECT gameid,title,description,stdimage,highscore,user.userid,user.username
FROM " . TABLE_PREFIX . "v3arcade_games AS games
LEFT JOIN " . TABLE_PREFIX . "user AS user ON user.userid = games.highscorerid
ORDER BY RAND()
LIMIT 1
");
$as_random_gameid = $random_game[gameid];
$as_random_gametitle = $random_game[title];
$as_random_stdimage = $random_game[stdimage];
$as_random_description = $random_game[description];
if($random_game[highscore] == 0)
{
$as_random_highscore = "No Score";
$as_random_highscorer = "";
$as_random_userid = "";
}
else
{
$as_random_highscore = intval($random_game[highscore]);
$as_random_highscorer = "(" . $random_game[username] . ")";
$as_random_userid = $random_game[userid];
}
$vbulletin->db->free_result($random_game);
//eval('$random_table = "' . fetch_template('v3a_CMS_as_random') . '";');
$templater = vB_Template::create('v3a_CMS_as_random');
$templater->register('as_random_gameid',$as_random_gameid);
$templater->register('as_random_gametitle',$as_random_gametitle);
$templater->register('as_random_highscore',$as_random_highscore);
$templater->register('as_random_userid',$as_random_userid);
$templater->register('as_random_highscorer',$as_random_highscorer);
$templater->register('as_random_stdimage',$as_random_stdimage);
$templater->register('as_random_description',$as_random_description);
$random_table = $templater->render();
return $random_table;
}
function get_latest_champs ($limit)
{
global $vbulletin, $bbcode_parser;
//var_dump($vbulletin);
//highlight_file('./modules/arcadestats.php');
//exit;
$news_items = $vbulletin->db->query_read("
SELECT *
FROM " . TABLE_PREFIX . "v3arcade_news
WHERE newstext LIKE '%is the new%'
ORDER BY datestamp DESC
LIMIT $limit
");
while ($news_item = $vbulletin->db->fetch_array($news_items)) {
//$as_news_text = $bbcode_parser->do_parse($news_item['newstext'], 1, 1, 1, 0);
$as_news_text = $news_item['newstext'];
$as_news_text = str_replace("arcade.php", $vbulletin->options['bburl'] . "/arcade.php", $as_news_text);
$as_news_date = vbdate($vbulletin->options['dateformat'],$news_item['datestamp']);
$as_news_time = vbdate($vbulletin->options['timeformat'],$news_item['datestamp']);
$getbgrow = exec_switch_bg();
//eval('$as_newsbits .= "' . fetch_template('v3a_CMS_as_newsbits') . '";');
$templater = vB_Template::create('v3a_CMS_as_newsbits');
$templater->register('getbrow',$getbrow);
$templater->register('as_news_text',$as_news_text);
$templater->register('as_news_date',$as_news_date);
$templater->register('as_news_time',$as_news_time);
$as_newsbits .= $templater->render();
}
$vbulletin->db->free_result($news_items);
//eval('$news_table = "' . fetch_template('v3a_CMS_as_newstable') . '";');
$templater = vB_Template::create('v3a_CMS_as_newstable');
$templater->register('as_newsbits',$as_newsbits);
$news_table = $templater->render();
return $news_table;
}
function get_latest_scores ($limit)
{
global $vbulletin;
$latest_scores = $vbulletin->db->query_read("
SELECT sessions.userid, sessions.gamename, sessions.gameid, sessions.score, sessions.start, sessions.finish,
user.username,
games.title
FROM " . TABLE_PREFIX . "v3arcade_sessions as sessions
LEFT JOIN " . TABLE_PREFIX . "user AS user
ON (sessions.userid = user.userid)
LEFT JOIN " . TABLE_PREFIX . "v3arcade_games as games
on (sessions.gameid = games.gameid)
WHERE valid = 1
AND tourid = 0
AND challengeid = 0
ORDER BY sessions.sessionid DESC
LIMIT $limit
");
while ($latest_score = $vbulletin->db->fetch_array($latest_scores)) {
$as_score_userid = $latest_score['userid'];
$as_score_gameid = $latest_score['gameid'];
$as_score_name = $latest_score['username'];
$as_score_score = floatval($latest_score['score']);
$as_score_gametitle = $latest_score['title'];
$as_score_date = vbdate($vbulletin->options['dateformat'],$latest_score['finish']);
$as_score_time = vbdate($vbulletin->options['timeformat'],$latest_score['finish']);
//echo "foo: $as_score_gametitle<br>\n";
$getbgrow = exec_switch_bg();
//eval('$as_scorebits .= "' . fetch_template('v3a_CMS_as_scorebits') . '";');
$templater = vB_Template::create('v3a_CMS_as_scorebits');
$templater->register('getbrow',$getbrow);
$templater->register('as_score_userid',$as_score_userid);
$templater->register('as_score_name',$as_score_name);
$templater->register('as_score_score',$as_score_score);
$templater->register('as_score_gameid',$as_score_gameid);
$templater->register('as_score_gametitle',$as_score_gametitle);
$templater->register('as_score_date',$as_score_date);
$templater->register('as_score_time',$as_score_time);
$as_scorebits .= $templater->render();
}
$vbulletin->db->free_result($latest_scores);
//eval('$score_table = "' . fetch_template('v3a_CMS_as_scoretable') . '";');
$templater = vB_Template::create('v3a_CMS_as_scoretable');
$templater->register('as_scorebits',$as_scorebits);
$score_table = $templater->render();
return $score_table;
}
$as_score_table = get_latest_scores($g_scores_limit);
$as_news_table = get_latest_champs($g_news_limit);
$as_random_table = get_random_game();
$as_champs_table = get_champs($g_champs_limit);
$as_recent_table = get_games("recent","Most Recent", $g_limit);
$as_played_table = get_games("played","Most Played", $g_limit);
$as_popular_table = get_games("popular","Most Popular", $g_limit);
$collapseobj_arcadestats = $vbcollapse['collapseobj_arcadestats'];
$collapseimg_arcadestats = $vbcollapse['collapseimg_arcadestats'];
//eval('$home[$mods[\'modid\']][\'content\'] .= "' . fetch_template('v3a_CMS_arcadestats1') . '";');
$templater = vB_Template::create('v3a_CMS_arcadestats1');
$templater->register('as_score_table',$as_score_table);
$templater->register('as_news_table',$as_news_table);
$templater->register('as_random_table',$as_random_table);
$templater->register('as_champs_table',$as_champs_table);
$templater->register('as_recent_table',$as_recent_table);
$templater->register('as_played_table',$as_played_table);
$templater->register('as_popular_table',$as_popular_table);
$output = $templater->render();
As with the CMS block you can comment parts out if you don't want them to display, for example if you only want the latest scores and latest champions you would comment the rest of the blocks out like so
Code:
$templater->register('as_score_table',$as_score_table);
$templater->register('as_news_table',$as_news_table);
//$templater->register('as_random_table',$as_random_table);
//$templater->register('as_champs_table',$as_champs_table);
//$templater->register('as_recent_table',$as_recent_table);
//$templater->register('as_played_table',$as_played_table);
//$templater->register('as_popular_table',$as_popular_table);