Gemma |
11-08-2010 12:38 AM |
Doctor Death you need to go through the xml file you downloaded from v3arcade and extract all the templates below
adv_portal_as_recent_gametable
adv_portal_as_played_gametable
adv_portal_as_popular_gametable
adv_portal_as_champbits
adv_portal_as_champstable
adv_portal_as_random
adv_portal_as_newsbits
adv_portal_as_newstable
adv_portal_as_scorebits
adv_portal_as_scoretable
adv_portal_arcadestats
The information you want for each template is between the [CDATA[ brackets
For example the adv_portal_arcadestats template would be extracted from the xml file by searching for the template
Code:
<adv_portal_arcadestats><![CDATA[<div>
<table align="center" width="100%">
<tr><td colspan="3">{vb:raw as_score_table}</td></tr>
<tr><td colspan="3">{vb:raw as_news_table}</td></tr>
<tr>
<td colspan="3">
<table width = "100%">
<tr>
<td valign="top" width="60%">{vb:raw as_random_table}</td>
<td> </td>
<td valign="top">{vb:raw as_champs_table}</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="3">
<table width = "100%">
<tr>
<td valign="top">{vb:raw as_recent_table}</td>
<td> </td>
<td valign="top">{vb:raw as_played_table}</td>
<td> </td>
<td valign="top">{vb:raw as_popular_table}</td>
</tr>
</table>
</td>
</tr>
</table>
</div>]]></adv_portal_arcadestats>
Taking away the <template name> and CDATA opening and closing brackets it would look like this
Code:
<div>
<table align="center" width="100%">
<tr><td colspan="3">{vb:raw as_score_table}</td></tr>
<tr><td colspan="3">{vb:raw as_news_table}</td></tr>
<tr>
<td colspan="3">
<table width = "100%">
<tr>
<td valign="top" width="60%">{vb:raw as_random_table}</td>
<td> </td>
<td valign="top">{vb:raw as_champs_table}</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="3">
<table width = "100%">
<tr>
<td valign="top">{vb:raw as_recent_table}</td>
<td> </td>
<td valign="top">{vb:raw as_played_table}</td>
<td> </td>
<td valign="top">{vb:raw as_popular_table}</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
You would do that for all the templates I listed at the beginning, you would then go to you AdminCP>Style Manager and add each of the new templates, keeping the same template names as before
Then go to you AdminCP>vBulletinCMS>Widget Manager and make a new widget ie 'Arcade Stats' and copy the following code
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('adv_portal_as_gamebits') . '";');
$templater = vB_Template::create('adv_portal_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("adv_portal_as_{$as_handle}_gametable") . '";');
$templater = vB_Template::create('adv_portal_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('adv_portal_as_champbits') . '";');
$templater = vB_Template::create('adv_portal_as_champbits');
$templater->register('getbrow',$getbrow);
$templater->register('champ',$champ);
$as_champbits .= $templater->render();
}
$vbulletin->db->free_result($champs);
//eval('$champstable = "' . fetch_template("adv_portal_as_champstable") . '";');
$templater = vB_Template::create('adv_portal_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('adv_portal_as_random') . '";');
$templater = vB_Template::create('adv_portal_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('adv_portal_as_newsbits') . '";');
$templater = vB_Template::create('adv_portal_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('adv_portal_as_newstable') . '";');
$templater = vB_Template::create('adv_portal_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 sessions.finish <> 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 = intval($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('adv_portal_as_scorebits') . '";');
$templater = vB_Template::create('adv_portal_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('adv_portal_as_scoretable') . '";');
$templater = vB_Template::create('adv_portal_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('adv_portal_arcadestats') . '";');
$templater = vB_Template::create('adv_portal_arcadestats');
$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();
Save it, then go to AdminCP>vBulletinCMS>Layout Manager and add your new widget.
You can see the result on my site http://www.forumbanter.com
It took about 10 minutes. I still need to go back and edit the templates to make them fall in line with the changes introduced in vb4.0.8
If you have any problems let me know and I'll post up each individual template over on v3arcade.com but I'm off to bed now.
|