- Statistiques
- Stats Relax
- Stats Poker/Aracde
C'est chiant les IDE pour le Web, qui ne permettent pas de bosser de la même façon qu'en développement de logiciels système -_-
Donc, pour ce qui est des modifications que j'ai apportées, tout se passe dans le fichier index.php de la racine du forum.
Trouver :
Code : Tout sélectionner
function getuser($uid) {
global $db;
global $request;
$request->enable_super_globals();
$username = '';
if ($uid) {
$user = $db->sql_query('SELECT * FROM phpbb_users WHERE user_id = ' . $uid);
$us = $db->sql_fetchrow($user);
$color = '';
if ($us['user_colour']) {
$color = 'style="font-weight:bold;color:#' . $us['user_colour'] . '"';
}
$username = '<a href=' . generate_board_url() . '/memberlist.php?mode=viewprofile&u=' . $uid . '" ' . $color . '>' . $us['username'] . '</a>';
}
return $username;
}
function getgame($gameid) {
global $db;
global $request;
$gameoutput = '';
$request->enable_super_globals();
if ($gameid) {
$games = $db->sql_query('SELECT * FROM phpbb_games WHERE id = ' . $gameid);
$game = $db->sql_fetchrow($games);
$gameoutput = <<<HTML
<a href="{$_SERVER['BOARD_URL']}/arcadeoa.php?mode=game&id={$game['id']}"><img src="pics/{$game['picture']}" style="width:24px;height:24px;display:inline-block;vertical-align:middle;"> {$game['name']}</a>
HTML;
}
return $gameoutput;
}
Code : Tout sélectionner
//-- mod : fix by abdev --------------------------------------------------------
//-- delete
/*-MOD
Code : Tout sélectionner
MOD-*/
//-- add
function getuser($this_user_id, $this_username, $this_user_colour)
{
global $request;
$request->enable_super_globals();
if ($this_user_id == ANONYMOUS)
{
global $user;
return $this_username ? $this_username : $user->lang['GUEST'];
}
return '<a href=' . generate_board_url() . '/memberlist.php?mode=viewprofile&u=' . $this_user_id . '"' . ($this_user_colour ? ' style="font-weight:bold;color:#' . $this_user_colour . '"' : '') . '>' . $this_username . '</a>';
}
function getgame($this_game_id, $this_gamename, $this_game_picture)
{
global $request;
$request->enable_super_globals();
if ($this_gamename === '')
{
return '';
}
$board_url = generate_board_url();
return <<<HTML
<a href="{$board_url}/arcadeoa.php?mode=game&id={$this_game_id}"><img src="pics/{$this_game_picture}" style="width:24px;height:24px;display:inline-block;vertical-align:middle;"> {$this_gamename}</a>
HTML;
}
//-- end mod : fix by abdev ----------------------------------------------------
Code : Tout sélectionner
$totalgames = mysqli_num_rows($db->sql_query('SELECT * FROM phpbb_games'));
$totalparty = mysqli_num_rows($db->sql_query('SELECT * FROM phpbb_scores'));
$totalplayers = mysqli_num_rows($db->sql_query('SELECT * FROM phpbb_scores GROUP BY gamer_id'));
$totalcups = mysqli_num_rows($db->sql_query('SELECT * FROM phpbb_scores WHERE is_first = 1'));
$ultimscores = mysqli_num_rows($db->sql_query('SELECT * FROM phpbb_ultim_scores'));
$ultimplayers = mysqli_num_rows($db->sql_query('SELECT * FROM phpbb_ultim_scores GROUP BY gamer_id'));
$favoplayers = mysqli_num_rows($db->sql_query('SELECT * FROM phpbb_games_bookmarks GROUP BY gamer_id'));
$favofavos = mysqli_num_rows($db->sql_query('SELECT * FROM phpbb_games_bookmarks'));
$longnew = $db->sql_query('SELECT * FROM phpbb_scores WHERE is_first = 1 ORDER BY score_date');
$lg = $db->sql_fetchrow($longnew);
$totalausgabe = sprintf($user->lang('TOTAL_STATS'), $totalgames, $totalparty, $totalplayers, $totalcups, $ultimscores, $ultimplayers, $favoplayers, $favofavos, getuser($lg['gamer_id']), $lg['points'], getgame($lg['game_id']), elapsed_time($lg['score_date']));
Code : Tout sélectionner
//-- mod : fix by abdev --------------------------------------------------------
//-- delete
/*-MOD
Code : Tout sélectionner
MOD-*/
//-- add
$sql = 'SELECT main.cnt_jeux, main.cnt_parties, main.cnt_joueurs, main.cnt_coupes, main.cnt_scores_ultimes, main.cnt_joueurs_ultimes, main.cnt_favoris, main.cnt_favoris_joueurs, main.gamer_id, u.username AS gamer_username, u.user_colour AS gamer_colour, main.points, main.game_id, g.name AS game_name, g.picture AS game_picture, main.score_date
FROM (
SELECT MAX(sub.cnt_jeux) AS cnt_jeux, MAX(sub.cnt_parties) AS cnt_parties, MAX(sub.cnt_joueurs) AS cnt_joueurs, MAX(sub.cnt_coupes) AS cnt_coupes, MAX(sub.cnt_scores_ultimes) AS cnt_scores_ultimes, MAX(sub.cnt_joueurs_ultimes) AS cnt_joueurs_ultimes, MAX(sub.cnt_favoris) AS cnt_favoris, MAX(sub.cnt_favoris_joueurs) AS cnt_favoris_joueurs, MAX(sub.gamer_id) AS gamer_id, MAX(sub.points) AS points, MAX(sub.game_id) AS game_id, MAX(sub.score_date) AS score_date
FROM (
SELECT COUNT(id) AS cnt_jeux, 0 AS cnt_parties, 0 AS cnt_joueurs, 0 AS cnt_coupes, 0 AS cnt_scores_ultimes, 0 AS cnt_joueurs_ultimes, 0 AS cnt_favoris, 0 AS cnt_favoris_joueurs, 0 AS gamer_id, 0 AS points, 0 AS game_id, 0 AS score_date FROM phpbb_games
UNION
SELECT 0 AS cnt_jeux, COUNT(id) AS cnt_parties, 0 AS cnt_joueurs, 0 AS cnt_coupes, 0 AS cnt_scores_ultimes, 0 AS cnt_joueurs_ultimes, 0 AS cnt_favoris, 0 AS cnt_favoris_joueurs, 0 AS gamer_id, 0 AS points, 0 AS game_id, 0 AS score_date FROM phpbb_scores
UNION
SELECT 0 AS cnt_jeux, 0 AS cnt_parties, COUNT(DISTINCT gamer_id) AS cnt_joueurs, 0 AS cnt_coupes, 0 AS cnt_scores_ultimes, 0 AS cnt_joueurs_ultimes, 0 AS cnt_favoris, 0 AS cnt_favoris_joueurs, 0 AS gamer_id, 0 AS points, 0 AS game_id, 0 AS score_date FROM phpbb_scores
UNION
SELECT 0 AS cnt_jeux, 0 AS cnt_parties, 0 AS cnt_joueurs, COUNT(DISTINCT id) AS cnt_coupes, 0 AS cnt_scores_ultimes, 0 AS cnt_joueurs_ultimes, 0 AS cnt_favoris, 0 AS cnt_favoris_joueurs, 0 AS gamer_id, 0 AS points, 0 AS game_id, 0 AS score_date FROM phpbb_scores WHERE is_first = 1
UNION
SELECT 0 AS cnt_jeux, 0 AS cnt_parties, 0 AS cnt_joueurs, 0 AS cnt_coupes, COUNT(id) AS cnt_scores_ultimes, 0 AS cnt_joueurs_ultimes, 0 AS cnt_favoris, 0 AS cnt_favoris_joueurs, 0 AS gamer_id, 0 AS points, 0 AS game_id, 0 AS score_date FROM phpbb_ultim_scores
UNION
SELECT 0 AS cnt_jeux, 0 AS cnt_parties, 0 AS cnt_joueurs, 0 AS cnt_coupes, 0 AS cnt_scores_ultimes, COUNT(DISTINCT gamer_id) AS cnt_joueurs_ultimes, 0 AS cnt_favoris, 0 AS cnt_favoris_joueurs, 0 AS gamer_id, 0 AS points, 0 AS game_id, 0 AS score_date FROM phpbb_ultim_scores
UNION
SELECT 0 AS cnt_jeux, 0 AS cnt_parties, 0 AS cnt_joueurs, 0 AS cnt_coupes, 0 AS cnt_scores_ultimes, 0 AS cnt_joueurs_ultimes, COUNT(id) AS cnt_favoris, 0 AS cnt_favoris_joueurs, 0 AS gamer_id, 0 AS points, 0 AS game_id, 0 AS score_date FROM phpbb_games_bookmarks
UNION
SELECT 0 AS cnt_jeux, 0 AS cnt_parties, 0 AS cnt_joueurs, 0 AS cnt_coupes, 0 AS cnt_scores_ultimes, 0 AS cnt_joueurs_ultimes, 0 AS cnt_favoris, COUNT(DISTINCT gamer_id) AS cnt_favoris_joueurs, 0 AS gamer_id, 0 AS points, 0 AS game_id, 0 AS score_date FROM phpbb_games_bookmarks
UNION
(SELECT 0 AS cnt_jeux, 0 AS cnt_parties, 0 AS cnt_joueurs, 0 AS cnt_coupes, 0 AS cnt_scores_ultimes, 0 AS cnt_joueurs_ultimes, 0 AS cnt_favoris, 0 AS cnt_favoris_joueurs, gamer_id, points, game_id, score_date FROM phpbb_scores WHERE is_first = 1 ORDER BY score_date LIMIT 1)
) AS sub)
AS main
LEFT JOIN phpbb_users u
ON main.gamer_id = u.user_id
LEFT JOIN phpbb_games g
ON main.game_id = g.id';
$result = $db->sql_query($sql);
// totaux
$cnt_jeux = (int) $db->sql_fetchfield('cnt_jeux');
$cnt_parties = (int) $db->sql_fetchfield('cnt_parties');
$cnt_joueurs = (int) $db->sql_fetchfield('cnt_joueurs');
$cnt_coupes = (int) $db->sql_fetchfield('cnt_coupes');
$cnt_scores_ultimes = (int) $db->sql_fetchfield('cnt_scores_ultimes');
$cnt_joueurs_ultimes = (int) $db->sql_fetchfield('cnt_joueurs_ultimes');
$cnt_favoris_joueurs = (int) $db->sql_fetchfield('cnt_favoris_joueurs');
$cnt_favoris = (int) $db->sql_fetchfield('cnt_favoris');
// informations
$gamer_id = (int) $db->sql_fetchfield('gamer_id');
$gamer_username = (string) $db->sql_fetchfield('gamer_username');
$gamer_colour = (string) $db->sql_fetchfield('gamer_colour');
$game_id = (int) $db->sql_fetchfield('game_id');
$game_name = (string) $db->sql_fetchfield('game_name');
$game_picture = (string) $db->sql_fetchfield('game_picture');
$game_points = (int) $db->sql_fetchfield('points');
$game_score_date = (int) $db->sql_fetchfield('score_date');
$db->sql_freeresult($result);
$totalausgabe = sprintf($user->lang('TOTAL_STATS'), $cnt_jeux, $cnt_parties, $cnt_joueurs, $cnt_coupes, $cnt_scores_ultimes, $cnt_joueurs_ultimes, $cnt_favoris_joueurs, $cnt_favoris, getuser($gamer_id, $gamer_username, $gamer_colour), $game_points, getgame($game_id, $game_name, $game_picture), elapsed_time($game_score_date));
//-- fin mod : fix by abdev ----------------------------------------------------
Ce qui va soulager le serveur de base de données
Désolé pour les plantages, j'avais oublié depuis le temps que phpBB n'aimait pas certaines méthodes d'écriture
Edit : Je referai une petite optimisation du code, surtout par rapport au nombre de variables, dès que possible.
On peut normalement tout concaténer.
Et moins il y a de code, mieux c'est.