Forum verrouillé Forum verrouillé Imprimer Syndication RSS 2.0

[MODV] Utilisateurs connectés du jour

Volcan
Avatar de Eagle
  • Age : 34 ans
  • Messages : 1105
  • Inscrit : 22 Janvier 2005
Message édité 1 fois, dernière édition par Grummfy, 07 Janvier 2008, 22:20     Lien vers ce message 22 Janvier 2005, 16:30
Hello tout le monde,

En suivant les conseils de DDril je finis par posté ce petit mod ici.

/*******************************************************************************
*   Utilisateurs connectés du jour :: version 0.0.1
*
*   ---------- Auteur --------------------------------------------------------
*   Auteur ::           Eagle
*   Email ::            eagle-22@bluewin.ch
*   Site Web ::         http://www.loutan.net/~eagle
*
*   ---------- Mod -----------------------------------------------------------
*   Nom ::                Utilisateurs connecté du jour
*   Version ::            0.0.1
*   Compatible ::         FSB rc3
*
*   Description ::        Ce mod ajoute la visibilité des utilisateurs qui se 
*			  sont connectés durant la journée
*
*   Temps d'installation ::      ~5 minutes
*   Requete ::            Non
*   Cache ::            Non
*   Fichiers joints ::         0
*   Fichiers à  modifier ::      3
*
*   ---------- Note ----------------------------------------------------------
*
*   ---------- Historique ----------------------------------------------------
*   Commencé ::            Le 22 / 01 / 2005
*   Dernière modification ::   Le 22 / 01 / 2005
*
*   Le 22 / 01 / 2005 ::
*      Première version du mod
*
*******************************************************************************/

#
# [1] ---------- ouvrir ---------------------------------------------------------
#
includes/functions/fonctions_session.php

#
# [2] ---------- chercher -------------------------------------------------------
#
	$sql = 'DELETE FROM ' . SESSIONS_TABLE . ' 
			WHERE session_temps < \'' . ( time() - ( 4 * $config['session_temps'] ) ) . '\'';

#
# [3] ---------- remplacer par --------------------------------------------------
#
	$sql = 'DELETE FROM ' . SESSIONS_TABLE . ' 
			WHERE session_temps < \'' . mktime(0, 0, 0, date('n'), date('d'), date('Y')) . '\'';

#
# [4] ---------- ouvrir ---------------------------------------------------------
#
includes/boite_online.php

#
# [5] ---------- chercher -------------------------------------------------------
#
$legende_aut = '<span class="admin">%s</span> - <span class="modosup">%s</span> - <span class="modo">%s</span>';

#
# [6] ---------- apres, ajouter -------------------------------------------------
#
$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 > \'' . ( mktime(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); 
} 
$online = array(); 
$nb_onlinej = 0; $nb_invitej = 0; $nb_membrej = 0; $nb_invisiblej = 0; $liste_onlinej = ''; 
$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_membrej++; } 
		else if ( $online[$a]['invisible'] && $online[$a]['id'] != INVITE ) { $nb_invisiblej++; } 
		else { $nb_invitej++; } 
		$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 ) ? '' . $online[$b]['login'] . '' : ''; 
		} 
		else { 
			$online_login = $online[$b]['login']; 
		} 
		$liste_onlinej .= ( $b > 0 && $online_login != '' ? ', ' : '' ) . '<a href="' . ajout_sid('profil_public.php?id=' . $online[$b]['id']) . '" class="' . $class_aut . '">' . $online_login . '</a>'; 
	} 
} 
$nb_total_onlinej = $nb_membrej + $nb_invisiblej + $nb_invitej; 

#
# [7] ---------- chercher -------------------------------------------------------
#
	'MEMBRES_ONLINE' =>	( trim($liste_online) != '' ) ? $langue['session_online'] . ': ' . $liste_online : $langue['aucune_session_online'],

#
# [8] ---------- apres, ajouter -------------------------------------------------
#
	'JOUR_STAT' => sprintf($langue['jour_stat'], $nb_total_onlinej, $nb_invitej, $nb_membrej, $nb_invisiblej), 
	'MEMBRES_JOUR' => ( trim($liste_onlinej) != '' ) ? $langue['session_online'] . ': ' . $liste_onlinej : $langue['aucune_session_online'], 

#
# [9] ---------- ouvrir ---------------------------------------------------------
#
themes/IceCold/boite_online_corps.tpl

#
# [10] ---------- chercher -------------------------------------------------------
#
		<td class="td_clair" width="50" rowspan="3">{IMG_BOITE_ONLINE}</td>

#
# [11] ---------- remplacer par --------------------------------------------------
#
		<td class="td_clair" width="50" rowspan="4">{IMG_BOITE_ONLINE}</td>

#
# [12] ---------- chercher -------------------------------------------------------
#
</table>

#
# [13] ---------- avant, ajouter -------------------------------------------------
#
        <tr>
		<td class="td_stats"><span class="petit">{JOUR_STAT}<br />{MEMBRES_JOUR}<br /></span></td>
	</tr>

#
# [14] ---------- ouvrir ---------------------------------------------------------
#
langues/fr/langue_module.php

#
# [15] ---------- chercher -------------------------------------------------------
#
//
// Pour les variables de langue des mods
// -------------------------------------

#
# [16] ---------- apres, ajouter -------------------------------------------------
#
// --- début ajout mod Utilisateurs connectés en ce jour
$langue['jour_stat'] = 'Il y a eu <span class="b">%d</span> visiteurs sur le forum aujourd\'hui. <span class="b">%d</span> invité(s), <span class="b">%d</span> membre(s) visible(s) et <span class="b">%d</span> membre(s) invisible(s).';
// --- fin ajout mod Utilisateurs connectés en ce jour



J'espère qu'il sera utile à beaucoup 8)


Dans les hauteurs des cieux, par delà les nuages et les sommets enneigés, l'aigle majestueux survole la terre...

Kosmos & Eagle homepage ^^
 
Chef du projet FSB
Avatar de Genova
  • Age : 26 ans
  • Messages : 14944
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 22 Janvier 2005, 16:46
Salut :)
pas mal comme MOD, en plus il me semble bien plus légé que celui de phpBB ;)


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Volcan
Avatar de Eagle
  • Age : 34 ans
  • Messages : 1105
  • Inscrit : 22 Janvier 2005
  Lien vers ce message 22 Janvier 2005, 16:50
Le but était de faire au plus simple et avec le moins de changement possible.

Seul défaut, la durée de vie d'une session dans la base de données est augmentée. C'est le seul point qui me déplait vraiment je dois dire.


Dans les hauteurs des cieux, par delà les nuages et les sommets enneigés, l'aigle majestueux survole la terre...

Kosmos & Eagle homepage ^^
 
Chef du projet FSB
Avatar de Genova
  • Age : 26 ans
  • Messages : 14944
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 22 Janvier 2005, 16:52
La durée de vie passe à une journée au lieu de 20 minutes en gros, sur des gros forums ca peut être chiant en effet. pourquoi ne pas te baser plutot dans ce cas sur la date de derniere visite d'un membre dans la table membres ?


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Volcan
Avatar de Eagle
  • Age : 34 ans
  • Messages : 1105
  • Inscrit : 22 Janvier 2005
  Lien vers ce message 22 Janvier 2005, 16:59
Oui, sauf que ça fonctionne pas avec les invités...


Dans les hauteurs des cieux, par delà les nuages et les sommets enneigés, l'aigle majestueux survole la terre...

Kosmos & Eagle homepage ^^
 
Chef du projet FSB
Avatar de Genova
  • Age : 26 ans
  • Messages : 14944
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 22 Janvier 2005, 17:03
Comment ça les invités ?
Si par exemple tu ne cherches dans la table membres que les membres dont la derniere date de visite est supérieure au début de la journée même, ça marchera non ?


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Volcan
Avatar de Eagle
  • Age : 34 ans
  • Messages : 1105
  • Inscrit : 22 Janvier 2005
  Lien vers ce message 22 Janvier 2005, 17:05
Oui, pour tous les membres... mais le compteur indique aussi le nombre d'invité connecté dans la journée, et pour ce faire le seul moyen c'est la table session car tous les invités ont le même ID de membre, soit 0 8)


Dans les hauteurs des cieux, par delà les nuages et les sommets enneigés, l'aigle majestueux survole la terre...

Kosmos & Eagle homepage ^^
 
Chef du projet FSB
Avatar de Genova
  • Age : 26 ans
  • Messages : 14944
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 22 Janvier 2005, 17:13
Ah oui tu as raison, logique. De toute facon c'est pas si grave que ca :)


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Brasier
Avatar de DDril
  • Messages : 756
  • Inscrit : 03 Janvier 2005
  Lien vers ce message 22 Janvier 2005, 18:51
Lol en suivant mon conseil? c'était juste que je pensais que le mod méritait d'être connu car je le trouve utile ;)

sinon c'est un bon mod :P


Webmaster de l'Organisation Très Secrète
 
Chef du projet FSB
Avatar de Genova
  • Age : 26 ans
  • Messages : 14944
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 22 Janvier 2005, 18:53
Oui clair, je n'ai plus le temps de tester aujourd'hui mais je m'en occupe demain ;)


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Flammeche
Avatar de yoda
  • Messages : 52
  • Inscrit : 26 Décembre 2004
  Lien vers ce message 23 Janvier 2005, 1:03
Mod adopté :happy: Merci
 
Chef du projet FSB
Avatar de Genova
  • Age : 26 ans
  • Messages : 14944
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 23 Janvier 2005, 13:36
Il y a un problème, lorsque je me suis déconnecté manuellement mon login a disparu de la liste des gens ayant visités le forum aujourd'hui ...


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Brasier
Avatar de DDril
  • Messages : 756
  • Inscrit : 03 Janvier 2005
  Lien vers ce message 23 Janvier 2005, 13:43
faudrais peut être faire avec une requête sql différente de celle des membres non?


Webmaster de l'Organisation Très Secrète
 
Volcan
Avatar de Eagle
  • Age : 34 ans
  • Messages : 1105
  • Inscrit : 22 Janvier 2005
  Lien vers ce message 30 Janvier 2005, 14:35
Bon, j'ai réfléchi un peu au problème.
Les sessions sont identifiées par le session_id qui est le même qu'on soit connecté ou non du moment qu'on a pas redémarré le navigateur.

Cas 1: identifier les membres connectés
C'est vraiment simple, on utilise simplement la date de dernière connexion.

Cas 2: les invités
Et c'est là que tout s'écroule. Un invité pur (pas un membre qui vient de se déconnecter ou qui ne s'est pas encore connecté) ne peut être identifié que par sa session. Maintenant un invité qui vient deux fois dans la journée donnera comme résultat 2 invités connecté (à moins qu'il n'ait pas redémarrer son navigateur entre deux). Un membre pas encore connecté ajoutera un invité qui disparaà®tra après. Donc si on regarde bien il y aura l'adresse IP qui serait utilisable pour identifier un invité d'un autre... mais avec l'ADSL par exemple, les adresses IP peuvent changer (tout comme pour les personnes comme moi qui se connecte depuis différents endroits).

En conclusion il n'y a pas de solution pour indiquer le nombre d'invité durant la journée. Je vais donc changer le mod pour le baser sur la date de dernière connexion pour indiquer la liste des membres connectés et il n'y aura plus de compteur pour les invités. Comme ça: 1. les sessions retrouveront leur taille initiale; 2. il n'y aura plus d'erreur d'indication pour les membres


Dans les hauteurs des cieux, par delà les nuages et les sommets enneigés, l'aigle majestueux survole la terre...

Kosmos & Eagle homepage ^^
 
Chef du projet FSB
Avatar de Genova
  • Age : 26 ans
  • Messages : 14944
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 30 Janvier 2005, 15:34
Oui clair, mais en fait le seul probleme qui actuellement m'empeche de valider le MOD c'est jusement le fait que quand on se deconnecte on apparait plus dans la liste en question :O Il faudrait prevoir dans connexion.php ce cas de figure en fait.


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Forum verrouillé


.