Voici le code de la boite Online.
<?php
/*******************************************************************************
*
* [ ./includes/boite_online.php (français) ]
*
* --------------------------------------------------------------------------
* Commencé le : 30 aout 2004
* Copyright : Groupe Fire Soft Board
* Site Web : http://www.fire-soft-board.com
* E-mail : support@fire-soft-board.com
* --------------------------------------------------------------------------
* Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les
* termes de la Licence Publique Générale GNU publiée par la Free Software Foundation
* (version 2). Reportez-vous à la Licence Publique Générale GNU pour plus de détails.
* Vous devez avoir reçu une copie de la Licence Publique Générale GNU en même temps
* que ce programme ; si ce n'est pas le cas, écrivez à la Free Software Foundation,
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, àtats-Unis.
* --------------------------------------------------------------------------
*
* Dernière modification le 2 février 2005 par Genova vRC3-00012
* Templates : 1
* - boite_online_corps.tpl
*
*******************************************************************************/
if ( ! defined('ADMINISTRATION') && ! defined('FORUM') )
{
die('-[interdit]-');
}
// On compte le nombre total de membre, en excluant l'invité, ainsi que le nombre total de message et de sujet
$sql = 'SELECT COUNT(membre_id) AS inscrits FROM ' . MEMBRES_TABLE . '
WHERE membre_id <> \'0\'';
if( ! $result = $bdd->requete($sql) )
{
info($langue['er_titre'], sprintf($langue['er_select'], 'membres'), __LINE__, __FILE__, $sql);
}
$compte_membres = $bdd->tableau($result);
//
// On récupère le nombre de personne sur le forum en séparant bien invités/connectés/invisibles
//
$sql = 'SELECT m.membre_id, m.membre_login, m.membre_aut, s.membre_id, s.session_invisible, s.session_temps FROM ' . MEMBRES_TABLE . ' m, ' . SESSIONS_TABLE . ' s
WHERE m.membre_id = s.membre_id
AND s.session_temps > \'' . ( time() - $config['session_temps'] ) . '\'
ORDER BY m.membre_aut DESC, m.membre_login ASC, m.membre_id ASC';
if ( ! $result = $bdd->requete($sql) )
{
info($langue['er_titre'], sprintf($langue['er_select'], 'membres, sessions'), __LINE__, __FILE__, $sql);
}
$online = array();
$nb_online = 0;
$nb_invite = 0;
$nb_membre = 0;
$nb_invisible = 0;
$liste_online = '';
$a = 0;
$t_id = array();
while ( $online_donnees = $bdd->tableau($result ) )
{
if ( ! in_array($online_donnees['membre_id'], $t_id) )
{
$t_id[] = $online_donnees['membre_id'];
$online[$a]['id'] = $online_donnees['membre_id'];
$online[$a]['login'] = $online_donnees['membre_login'];
$online[$a]['aut'] = $online_donnees['membre_aut'];
$online[$a]['invisible'] = $online_donnees['session_invisible'];
if ( $online[$a]['id'] != INVITE && ! $online[$a]['invisible'] )
{
$nb_membre++;
}
else if ( $online[$a]['invisible'] && $online[$a]['id'] != INVITE )
{
$nb_invisible++;
}
else
{
$nb_invite++;
}
$a++;
}
}
for ( $b = 0; $b < count($online); $b++ )
{
// Couleur assignée au membre dans la liste des connectés
switch ( $online[$b]['aut'] )
{
case MEMBRE:
$class_aut = 'membre';
break;
case MODO:
$class_aut = 'modo';
break;
case MODOSUP:
$class_aut = 'modosup';
break;
case ADMIN:
$class_aut = 'admin';
break;
default:
$class_aut = 'membre';
break;
}
if ( $online[$b]['id'] != INVITE )
{
if ( $online[$b]['invisible'] )
{
$online_login = ( $online[$b]['id'] == $membre['membre_id'] || $membre['membre_aut'] == MODOSUP || $membre['membre_aut'] == ADMIN ) ? '<em>' . $online[$b]['login'] . '</em>' : '';
}
else
{
$online_login = $online[$b]['login'];
}
$liste_online .= ( $b > 0 && $online_login != '' ? ', ' : '' ) . '<a href="' . ajout_sid($racine . 'profil_public.php?id=' . $online[$b]['id']) . '" class="' . $class_aut . '">' . $online_login . '</a>';
}
}
$nb_total_online = $nb_membre + $nb_invisible + $nb_invite;
$legende_aut = '<span class="admin">%s</span> - <span class="modosup">%s</span> - <span class="modo">%s</span>';
// Début du mod: Utilisateurs connectés du jour
$online = array();
$nb_membre_visible_connecte = 0;
$nb_membre_invisible_connecte = 0;
$liste_membre_connecte = '';
$a = 0; $t_id = array();
$sql = 'SELECT m.membre_id, m.membre_login, m.membre_aut, m.invisible FROM ' . MEMBRES_TABLE . ' m
WHERE m.derniere_visite > \'' . ( gmmktime(0, 0, 0, date('n'), date('d'), date('Y'))) . '\' ORDER BY m.membre_aut DESC, m.membre_login ASC, m.membre_id ASC';
if ( ! $result = $bdd->requete($sql) ) {
info($langue['er_titre'], sprintf($langue['er_select'], 'membres, sessions'), __LINE__, __FILE__, $sql);
}
while ( $online_donnees = $bdd->tableau($result ) ) {
if ( ! in_array($online_donnees['membre_id'], $t_id) ) {
$t_id[] = $online_donnees['membre_id'];
$online[$a]['id'] = $online_donnees['membre_id'];
$online[$a]['login'] = $online_donnees['membre_login'];
$online[$a]['aut'] = $online_donnees['membre_aut'];
$online[$a]['invisible'] = $online_donnees['invisible'];
if ( $online[$a]['id'] != INVITE ) {
if ($online[$a]['invisible'] ) { $nb_membre_invisible_connecte++; }
else { $nb_membre_visible_connecte++; }
}
$a++;
}
}
for ( $b = 0; $b < count($online); $b++ ) {
// Couleur assignée au membre dans la liste des connectés
switch ( $online[$b]['aut'] ) {
case MEMBRE: $class_aut = 'membre'; break;
case MODO: $class_aut = 'modo'; break;
case MODOSUP: $class_aut = 'modosup'; break;
case ADMIN: $class_aut = 'admin'; break;
default: $class_aut = 'membre'; break;
}
if ( $online[$b]['id'] != INVITE ) {
if ( $online[$b]['invisible'] ) {
$online_login = ( $online[$b]['id'] == $membre['membre_id'] || $membre['membre_aut'] == MODOSUP || $membre['membre_aut'] == ADMIN ) ? '<em>' . $online[$b]['login'] . '</em>' : '';
}
else {
$online_login = $online[$b]['login'];
}
$liste_membre_connecte .= ( $b > 0 && $online_login != '' ? ', ' : '' ) . '<a href="' . ajout_sid('profil_public.php?id=' . $online[$b]['id']) . '" class="' . $class_aut . '">' . $online_login . '</a>';
}
}
// Fin du mod: Utilisateurs connectés du jour
// On récupère le dernier inscrit
$sql = 'SELECT membre_id, membre_login FROM ' . MEMBRES_TABLE . '
WHERE membre_id != \'' . INVITE . '\'
ORDER BY date_enregistrement DESC
LIMIT 1';
if ( ! $result = $bdd->requete($sql) )
{
info($langue['er_titre'], sprintf($langue['er_select'], 'membres'), __LINE__, __FILE__, $sql);
}
$dern_mem = $bdd->tableau($result);
if ($nb_total_online > $config['record_connexions'])
{
$config['record_connexions'] = $nb_total_online;
$config['date_record'] = time();
$cache->write_in_cache($config, 'config', count($config));
}
$tpl->set_filenames(array('boite_online' => 'boite_online_corps.tpl'));
$tpl->assign_vars( array(
'L_BOITE_ONLINE' => $langue['boite_online'],
'L_LEGENDE_AUT' => sprintf($legende_aut, $langue['admin'], $langue['modosup'], $langue['modo']),
'DERNIER_MEMBRE' => sprintf($langue['dernier_membre'], '<a href="' . ajout_sid($racine . 'profil_public.php?id=' . $dern_mem['membre_id']) . '" class="petit">' . $dern_mem['membre_login'] . '</a>'),
'ONLINE_STAT' => sprintf($langue['online_stat'], $nb_total_online, $nb_invite, $nb_membre, $nb_invisible),
'MEMBRES_ONLINE' => ( trim($liste_online) != '' ) ? $langue['session_online'] . ': ' . $liste_online : $langue['aucune_session_online'],
// Début du mod: Utilisateurs connectés du jour
'JOUR_STAT' => sprintf($langue['jour_stat'], $nb_membre_visible_connecte, $nb_membre_invisible_connecte),
'MEMBRES_JOUR' => ( trim($liste_membre_connecte) != '' ) ? $langue['session_online'] . ': ' . $liste_membre_connecte : $langue['aucune_session_online'],
// Fin du mod: Utilisateurs connectés du jour
'NB_MEMBRES' => sprintf($langue['membres_enr'], $compte_membres['inscrits'], $total_messages, $total_sujets),
'RECORD_CONNEXIONS' => sprintf($langue['record_connexions'], $config['record_connexions'], aff_date($config['date_record'])),
'IMG_BOITE_ONLINE' => sprintf($theme['img'], $racine . 'themes/' . $membre['membre_theme'] . 'images/boite_online.gif', $langue['img_boite_online'], $langue['img_boite_online'])
));
$tpl->pparse('boite_online');
?>