Random games block (icons only)
Arcade version: SMF Arcade 2.7.0.2 or newer
This one is set up only to appear when the user is not playing a game.
There are 2 limit settings... one for users and one for guests. You can set both as the same if you wish.
Create a new php block...
Enter this for custom display options:
(For viewing on portal - leave this line blank)
~action|arcade
$evenRows = [BOOLEAN] option to trim uneven rows
$guestMax = [INT] to equal the amount preferred
$userMax = [INT] to equal the amount preferred
$icons_per_row = [INT] to equal the amount preferred
Main code:
/**************************
set $gameTypes
0 = Permission based
1 = Flash/HTML
2 = ROM only
3 = All game types
**************************/
// adjustable variables
list($evenRows, $guestMax, $userMax, $icons_per_row, $arcade, $gameTypes) = array(true, 60, 28, 4, '', 0);
global $scripturl, $arcadeModSettings, $smcFunc, $user_info, $settings;
$check_game = isset($_REQUEST['game']) ? floatval($_REQUEST['game']) : 0;
$defaultIcon = file_exists($settings['default_theme_dir'] . '/images/arc_icons/game.gif') ? $settings['default_images_url'] . '/arc_icons/game.gif' : '';
list($arcade, $arcadePermissionMode, $count1) = array('', (!isset($arcadeModSettings['arcadePermissionMode']) ? 1 : $arcadeModSettings['arcadePermissionMode']), 0);
switch($gameTypes) {
case 1:
$whereRom = ' AND game.rom_flag = {int:romflag}';
$romflag = 0;
break;
case 2:
$whereRom = ' AND game.rom_flag = {int:romflag}';
$romflag = 1;
break;
case 3:
$whereRom = '';
$romflag = 0;
break;
default:
$romflag = 0;
if (allowedTo('arcade_view_retro_arch')) {
$whereRom = '';
}
else {
$whereRom = ' AND game.rom_flag = {int:romflag}';
}
}
// check permissions
if (allowedTo('arcade_admin'))
{
$see_game = '1=1';
$see_category = '1=1';
}
else
{
if ($arcadePermissionMode >= 2)
{
if ($user_info['is_guest'])
$see_game = '(game.id_cat = 0 AND ' . (allowedTo('arcade_view') ? 1 : 0) . ' = 1) OR (game.local_permissions = 0 OR FIND_IN_SET(-1, game.member_groups))';
else
$see_game = '(game.local_permissions = 0 OR (FIND_IN_SET(' . implode(', game.member_groups) OR FIND_IN_SET(', $user_info['groups']) . ', game.member_groups)))';
}
if ($arcadePermissionMode == 1 || $arcadePermissionMode >= 3)
{
if ($user_info['is_guest'])
$see_category = '(game.id_cat = 0 AND ' . (allowedTo('arcade_view') ? 1 : 0) . ' = 1) OR (FIND_IN_SET(-1, category.member_groups))';
else
$see_category = '(FIND_IN_SET(' . implode(', category.member_groups) OR FIND_IN_SET(', $user_info['groups']) . ', category.member_groups) OR ISNULL(category.member_groups))';
}
}
if (empty($arcadePermissionMode))
$where = 'enabled = 1';
elseif ($arcadePermissionMode == 1)
$where = '(enabled = 1 AND ' . $see_category . ')';
elseif ($arcadePermissionMode == 2)
$where = '(enabled = 1 AND ' . $see_game . ')';
elseif ($arcadePermissionMode == 3)
$where = '(enabled = 1 AND (' . $see_category . ' AND ' . $see_game . '))';
elseif ($arcadePermissionMode == 4)
$where = '(enabled = 1 AND (' . $see_category . ' OR ' . $see_game. '))';
$where = !empty($where) ? $where : '1=1';
if (empty($check_game))
{
$arcade = '
<div style="overflow: hidden;">
<div style="display: table;width: 100%;margin: 0 auto;padding: 2px;overflow: hidden;">
<div style="display: table-row;">';
$id_game = false;
$result = $smcFunc['db_query']('', '
SELECT COUNT(*) as total
FROM {db_prefix}arcade_games as game
LEFT JOIN {db_prefix}arcade_categories AS category ON (category.id_cat = game.id_cat)
WHERE {raw:query_see_game}',
array(
'query_see_game' => $where . $whereRom, 'romflag' => $romflag,
)
);
$totalView = $smcFunc['db_fetch_assoc']($result);
$smcFunc['db_free_result']($result);
$totalPermitted = !empty($totalView['total']) ? $totalView['total'] : 0;
$guestMax = $totalPermitted >= $guestMax ? (int)$guestMax : (int)$totalPermitted;
$userMax = $totalPermitted >= $userMax ? (int)$userMax : (int)$totalPermitted;
$guestMax = $evenRows ? $guestMax - ($guestMax % $icons_per_row) : $guestMax;
$userMax = $evenRows ? $userMax - ($userMax % $icons_per_row) : $userMax;
if (empty($user_info['is_guest']) && !empty($totalPermitted))
{
$request = $smcFunc['db_query']('', '
SELECT game.id_game, game.game_name, game.game_directory, game.thumbnail, game.id_cat, game.rom_flag, category.member_groups
FROM {db_prefix}arcade_games AS game
LEFT JOIN {db_prefix}arcade_categories AS category ON (category.id_cat = game.id_cat)
WHERE {raw:query_see_game}
ORDER BY RAND()
LIMIT ' . $userMax,
array(
'query_see_game' => $where . $whereRom, 'romflag' => $romflag,
)
);
while ($row = $smcFunc['db_fetch_assoc']($request))
{
$path = str_replace('', '/', !empty($row['rom_flag']) ? $arcadeModSettings['romGamesDirectory'] : $arcadeModSettings['gamesDirectory']);
$filepath = rtrim($path, '/');
$gamesUrl = !empty($row['rom_flag']) ? $arcadeModSettings['romGamesUrl'] : $arcadeModSettings['gamesUrl'];
$action = !empty($row['rom_flag']) ? 'retro_arch' : 'arcade';
if ($count1 % $icons_per_row == 0)
$arcade .= '
</div>
<div style="display: table-row;">';
$thumbnailFile = '';
if (!empty($row['thumbnail']))
{
$thumbnailFile = $filepath . '/' . (!empty($row['game_directory']) ? $row['game_directory'] . '/' : '') . $row['thumbnail'];
$thumbnailPath = file_exists($thumbnailFile) ? $gamesUrl . '/' . (!empty($row['game_directory']) ? $row['game_directory'] . '/' : '') . $row['thumbnail'] : '';
}
elseif (!empty($defaultIcon))
$thumbnailPath = $defaultIcon;
$count1++;
if (empty($thumbnailFile))
continue;
$arcade .= '
<div class="centertext" style="display: table-cell;borser-spacing: 1px;">
<a href="' . $scripturl . '?action=' . $action . ';sa=play;game=' . $row['id_game'] . '">
<img style="width:42px; height:42px;" src="' . $thumbnailPath . '" alt="'.$row['game_name'].'" title="'.$row['game_name'].'" />
</a>
</div>';
}
$smcFunc['db_free_result']($request);
$arcade .= '
</div>
</div>
</div>';
}
elseif (!empty($totalPermitted))
{
$request = $smcFunc['db_query']('', '
SELECT game.id_game, game.game_name, game.game_directory, game.thumbnail, game.id_cat, game.rom_flag, category.member_groups
FROM {db_prefix}arcade_games AS game
LEFT JOIN {db_prefix}arcade_categories AS category ON (category.id_cat = game.id_cat)
WHERE {raw:query_see_game}
ORDER BY RAND()
LIMIT ' . $guestMax,
array(
'query_see_game' => $where . $whereRom, 'romflag' => $romflag,
)
);
while ($row = $smcFunc['db_fetch_assoc']($request))
{
$path = str_replace('', '/', !empty($row['rom_flag']) ? $arcadeModSettings['romGamesDirectory'] : $arcadeModSettings['gamesDirectory']);
$filepath = rtrim($path, '/');
$gamesUrl = !empty($row['rom_flag']) ? $arcadeModSettings['romGamesUrl'] : $arcadeModSettings['gamesUrl'];
$action = !empty($row['rom_flag']) ? 'retro_arch' : 'arcade';
if ($count1 % $icons_per_row == 0)
$arcade .= '
</div>
<div style="display: table-row;">';
$thumbnailFile = '';
if (!empty($row['thumbnail']))
{
$thumbnailFile = $filepath . '/' . (!empty($row['game_directory']) ? $row['game_directory'] . '/' : '') . $row['thumbnail'];
$thumbnailPath = file_exists($thumbnailFile) ? $gamesUrl . '/' . (!empty($row['game_directory']) ? $row['game_directory'] . '/' : '') . $row['thumbnail'] : '';
}
elseif (!empty($defaultIcon))
$thumbnailPath = $defaultIcon;
$count1++;
if (empty($thumbnailFile))
continue;
$arcade .= '
<div class="centertext" style="display: table-cell;border-spacing: 1px;">
<a href="' . $scripturl . '?action=' . $action . ';sa=play;game=' . $row['id_game'] . '">
<img style="width:42px; height:42px;" src="' . $thumbnailPath . '" alt="'.$row['game_name'].'" title="'.$row['game_name'].'" />
</a>
</div>';
}
$arcade .= '
</div>
</div>
</div>';
$smcFunc['db_free_result']($request);
}
if (!allowedTo('arcade_view') && $gameTypes == 0) {
$arcade = '';
}
echo $arcade;
}