amykhar |
12-01-2005 12:55 PM |
A bit of experimentation on my site shows that performance isn't taking a big hit when I do this. So... I have updated the code to dynamically show if a game is a favorite or not on the category lists.
If you have already installed the mod, here is how to upgrade:
1. Find:
Code:
else if ($vbulletin->GPC['categoryid']==2)
{
// Favorites
$gamecountquery = ("SELECT * FROM " . TABLE_PREFIX."eaarcade_favorites
WHERE userid=" . $vbulletin->userinfo['userid'] . "
GROUP BY userid ASC");
$gamecount = $db->num_rows($gamecountquery);
$perpage = $vbulletin->input->clean_gpc('r', 'perpage', TYPE_UINT);
// set defaults
sanitize_pageresults($gamecount, $pagenumber, $perpage, 100, $vbulletin->options['gamesperpage']);
$start = (int)($perpage*$pagenumber)-$perpage;
$pagenav = construct_page_nav($pagenumber, $perpage, $gamecount, 'arcade.php?' . $vbulletin->session->vars['sessionurl'], ""
. (!empty($vbulletin->GPC['categoryid']) ? "&categoryid=" . $vbulletin->GPC['categoryid'] : "")
. (!empty($vbulletin->GPC['perpage']) ? "&pp=$perpage" : "")
);
$games = $db->query_read("SELECT eaarcade_favorites.gameid, arcade_games.*, user.username, arcade_categories.catname FROM " . TABLE_PREFIX . "eaarcade_favorites AS eaarcade_favorites
LEFT JOIN " . TABLE_PREFIX . "arcade_games AS arcade_games ON (arcade_games.gameid=eaarcade_favorites.gameid)
LEFT JOIN " . TABLE_PREFIX . "user AS user ON (arcade_games.highscorerid=user.userid)
LEFT JOIN " . TABLE_PREFIX . "arcade_categories AS arcade_categories ON (arcade_games.categoryid=arcade_categories.categoryid)
WHERE eaarcade_favorites.userid=" . $vbulletin->userinfo['userid'] . " AND arcade_games.title IS NOT NULL
" . iif($bitfieldcheck, "AND $bitfieldcheck") . "
ORDER BY eaarcade_favorites.gameid DESC
LIMIT $start,".$vbulletin->options['gamesperpage']);
} else {
Replace with:
-----------
Code:
else if ($vbulletin->GPC['categoryid']==2)
{
// Favorites
$gamecountquery = ("SELECT * FROM " . TABLE_PREFIX."eaarcade_favorites
WHERE userid=" . $vbulletin->userinfo['userid'] . "
GROUP BY userid ASC");
$gamecount = $db->num_rows($gamecountquery);
$perpage = $vbulletin->input->clean_gpc('r', 'perpage', TYPE_UINT);
// set defaults
sanitize_pageresults($gamecount, $pagenumber, $perpage, 100, $vbulletin->options['gamesperpage']);
$start = (int)($perpage*$pagenumber)-$perpage;
$pagenav = construct_page_nav($pagenumber, $perpage, $gamecount, 'arcade.php?' . $vbulletin->session->vars['sessionurl'], ""
. (!empty($vbulletin->GPC['categoryid']) ? "&categoryid=" . $vbulletin->GPC['categoryid'] : "")
. (!empty($vbulletin->GPC['perpage']) ? "&pp=$perpage" : "")
);
$games = $db->query_read("SELECT eaarcade_favorites.*, arcade_games.*, user.username, arcade_categories.catname FROM " . TABLE_PREFIX . "eaarcade_favorites AS eaarcade_favorites
LEFT JOIN " . TABLE_PREFIX . "arcade_games AS arcade_games ON (arcade_games.gameid=eaarcade_favorites.gameid)
LEFT JOIN " . TABLE_PREFIX . "user AS user ON (arcade_games.highscorerid=user.userid)
LEFT JOIN " . TABLE_PREFIX . "arcade_categories AS arcade_categories ON (arcade_games.categoryid=arcade_categories.categoryid)
WHERE eaarcade_favorites.userid=" . $vbulletin->userinfo['userid'] . " AND arcade_games.title IS NOT NULL
" . iif($bitfieldcheck, "AND $bitfieldcheck") . "
ORDER BY eaarcade_favorites.gameid DESC
LIMIT $start,".$vbulletin->options['gamesperpage']);
} else {
-----------
Find:
Code:
$games = $db->query_read("SELECT arcade_games.*, user.username, arcade_categories.catname FROM " . TABLE_PREFIX . "arcade_games AS arcade_games
LEFT JOIN " . TABLE_PREFIX . "user AS user ON (arcade_games.highscorerid=user.userid)
LEFT JOIN " . TABLE_PREFIX . "arcade_categories AS arcade_categories ON (arcade_games.categoryid=arcade_categories.categoryid)
" . iif($vbulletin->GPC['categoryid']!=-1, "WHERE arcade_games.categoryid=" . $vbulletin->GPC['categoryid'] . iif($bitfieldcheck, " AND $bitfieldcheck"), iif($bitfieldcheck, "WHERE $bitfieldcheck")) . "
ORDER BY title ASC
LIMIT $start, " . $vbulletin->options['gamesperpage']);
Replace with:
Code:
$games = $db->query_read("SELECT arcade_games.*, favorites.favid AS favid, user.username, arcade_categories.catname FROM " . TABLE_PREFIX . "arcade_games AS arcade_games
LEFT JOIN " . TABLE_PREFIX . "user AS user ON (arcade_games.highscorerid=user.userid)
LEFT JOIN " . TABLE_PREFIX . "eaarcade_favorites AS favorites ON (favorites.gameid=arcade_games.gameid)
LEFT JOIN " . TABLE_PREFIX . "arcade_categories AS arcade_categories ON (arcade_games.categoryid=arcade_categories.categoryid)
" . iif($vbulletin->GPC['categoryid']!=-1, "WHERE favorites.userid=". $vbulletin->userinfo[userid]." AND arcade_games.categoryid=" . $vbulletin->GPC['categoryid'] . iif($bitfieldcheck, " AND $bitfieldcheck"), iif($bitfieldcheck, "WHERE $bitfieldcheck")) . "
ORDER BY title ASC
LIMIT $start, " . $vbulletin->options['gamesperpage']);
In your arcade_game_bit template, Replace the code block you added previously with:
Code:
<br /> <if condition="$game[favid]"><a href="arcade.php?do=delfav&gameid=$game[gameid]">$vbphrase[arcadedelfav]</a><else /><a href="arcade.php?do=addfav&gameid=$game[gameid]">$vbphrase[arcadeaddfav]</a></if>
(Note: only the conditional changed in the template.)
|