Temps de connexion total d'un membre

3 participants

Voir le sujet précédent Voir le sujet suivant Aller en bas

Résolu Temps de connexion total d'un membre

Message par Night Elensar Mer 31 Oct 2018 - 12:41

Détails techniques

Version du forum : phpBB2
Poste occupé : Fondateur
Navigateur(s) concerné(s) : Mozilla Firefox, Google Chrome
Personnes concernées par le problème : Tous les utilisateurs
Problème apparu depuis : - - -
Lien du forum : http://elfs-school.forumactif.com/

Description du problème

Bonjour à tous !

Je n'ai présentement pas de "problème" avec mon Forum, mais pour l'améliorer je souhaiterais pouvoir ajouter un message (personnalisé - avec les codes) aux membres connectés sous le menu de navigation. Du style "Bonjour [USERNAME]".

Jusque là, rien de bien folichon, je sais faire. Mais dans ce message je souhaiterais également ajouter le temps de connexion TOTAL que le joueur a passé sur le Forum depuis son inscription - ou au moins depuis l'installation de ce compteur...

Je ne sais pas si un tel code existe, si oui, quel est-il ?

Merci pour votre aide !


Dernière édition par Night Elensar le Ven 2 Nov 2018 - 10:29, édité 2 fois
Night Elensar

Night Elensar
Nouveau membre

Féminin
Messages : 17
Inscrit(e) le : 20/08/2017

http://elfs-school.forumactif.com/
Night Elensar a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Temps de connexion total d'un membre

Message par Ea Mer 31 Oct 2018 - 18:30

Bonjour,


Voici un exemple de script:

Code:
$(function () {
    if (!window.localStorage || !window._userdata || _userdata["user_id"] === -1) return; 
    var intervalTime = 19000;
    var savingField = 12;
    var updateLastSeen = function () {
        var now = +new Date();
        var lastSeen = parseInt(localStorage.lastSeenCT);
        localStorage.lastSeenCT = now;
        if (!lastSeen || now - intervalTime - 1000 > lastSeen) {
            return;
        } 
        localStorage.timeToAddCT = parseInt(localStorage.timeToAddCT || 0) + now - lastSeen;
        if (localStorage.timeToAddCT > 300000) {
            var timeToAdd = parseInt(localStorage.timeToAddCT / 60000);
            $.get('/u'+uid).then(function (profil) {
                var currentVal = parseInt($('[name="profile_field_10_'+savingField+'"]', profil).val() || 0);
                localStorage.fullCT = currentVal + timeToAdd;
                $.post("/ajax_profile.forum?jsoncallback=?", {
                    user: uid, id: savingField,
                    content: '[["profile_field_10_'+savingField+'", "' + (currentVal + timeToAdd) +'"]]', tid: tid, 'active': 1,
                }, undefined, 'json').then(function () {
                    localStorage.timeToAddCT %= 60000;
                });
            });
        }
    };
    var tid = $("input[name=tid]:first").val() || ($("a[href*='&tid=']:first").attr("href") || "").replace(/^.*&tid=([a-z0-9]*)?.*$/, "$1");
    var uid = _userdata["user_id"];
    // update connection time
    setInterval(updateLastSeen, intervalTime);
    updateLastSeen();
    // display connection time
    var $el = $('#displayCT');
    if (!$el.length) return;
    var def = $.when();
    if (localStorage.fullCT === undefined) {
        def = $.get('/u'+uid).then(function (profil) {
            var currentVal = parseInt($('[name="'+savingField+'"]', profil).val() || 0);
            localStorage.fullCT = currentVal;
        });
    }
    def.then(function () {
        var connectionTime = parseInt(localStorage.fullCT || 0);
        var minutes = connectionTime % 60;
        var hours = parseInt(connectionTime / 60) % 24;
        var days = parseInt(connectionTime / 1440);
        $el.text((days ? days + " jour" + (days > 1 ? "s" : "") : "") + (hours ? hours + " heure" + (hours > 1 ? "s" : "") : "") + (minutes + " minute" + (minutes > 1 ? "s" : "")));
    })
});

à mettre sur toutes les pages Index > Panneau d'administration > Modules > HTML & JAVASCRIPT | Gestion des codes Javascript > Créer un nouveau javascript.

Avec ce code, il faut:

- ajouter où souhaité:

Code:
<span id="displayCT"/>

Le script mettra à l'intérieur de cet élément le temps de connection.

Il faut aussi ajouter un champ de profil (Index > Panneau d'administration > Utilisateurs & Groupes > Utilisateurs | Profils > +) comme ceci:

Temps de connexion total d'un membre D0DwJO4

Les parties qu'il faut pour ce champ sont:

- Type: Nombre
- Affichage: [V] Profil
- Qui peut modifier la valeur de son contenu? [V] L'utilisateur lui-même
- Afficher ce champs pour les utilisateurs ayant au moins le statut : Membres

Une fois créé, il faut retourner sur le champ et dans la barre d'adresse il devrait y avoir "id=12" ou un autre chiffre:

Temps de connexion total d'un membre 4SXJtHD

Il faut remplacer le chiffre que vous avez dans votre cas dans cette ligne du script donné plus haut:

Code:
    var savingField = 12;

Cordialement.


Dernière édition par Ea le Ven 2 Nov 2018 - 13:04, édité 1 fois (Raison : correction du script)
Ea

Ea
Aidactif
Aidactif

Messages : 23583
Inscrit(e) le : 04/04/2008

Ea a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Temps de connexion total d'un membre

Message par Night Elensar Ven 2 Nov 2018 - 9:59

Bonjour !

Merci pour ce tuto express ! Je l'ai appliqué et j'ai essayé de faire des modifications afin d'avoir les secondes également, sans succès !

Quoi qu'il en soit, merci encore !

Bonne journée à toi !
Night Elensar

Night Elensar
Nouveau membre

Féminin
Messages : 17
Inscrit(e) le : 20/08/2017

http://elfs-school.forumactif.com/
Night Elensar a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Temps de connexion total d'un membre

Message par Night Elensar Ven 2 Nov 2018 - 10:29

Je constate que le compteur reste bloqué à 5 minutes......
Night Elensar

Night Elensar
Nouveau membre

Féminin
Messages : 17
Inscrit(e) le : 20/08/2017

http://elfs-school.forumactif.com/
Night Elensar a été remercié(e) par l'auteur de ce sujet.
  • 0

Résolu Re: Temps de connexion total d'un membre

Message par Ea Ven 2 Nov 2018 - 13:02

Oui désolé, j'ai fait une simplification juste avant de poster et j'avais oublié d'adapté une partie.

Avec ce code ça ne devrait pas être bloqué à 5 minutes et il devrait y avoir les secondes:

Code:
$(function () {
    if (!window.localStorage || !window._userdata || _userdata["user_id"] === -1) return;
    var intervalTime = 19000;
    var savingField = 12;
    var updateLastSeen = function () {
        var now = +new Date();
        var lastSeen = parseInt(localStorage.lastSeenCT);
        localStorage.lastSeenCT = now;
        if (!lastSeen || now - intervalTime - 1000 > lastSeen) {
            return;
        }
        localStorage.timeToAddCT = parseInt(localStorage.timeToAddCT || 0) + now - lastSeen;
        if (localStorage.timeToAddCT > 300000) {
            var timeToAdd = parseInt(localStorage.timeToAddCT / 60000);
            $.get('/u'+uid).then(function (profil) {
                var currentVal = parseInt($('[name="profile_field_10_'+savingField+'"]', profil).val() || 0);
                localStorage.fullCT = currentVal + timeToAdd;
                $.post("/ajax_profile.forum?jsoncallback=?", {
                    user: uid, id: savingField,
                    content: '[["profile_field_10_'+savingField+'", "' + (currentVal + timeToAdd) +'"]]', tid: tid, 'active': 1,
                }, undefined, 'json').then(function () {
                    localStorage.timeToAddCT %= 60000;
                });
            });
        } 
    }; 
    var tid = $("input[name=tid]:first").val() || ($("a[href*='&tid=']:first").attr("href") || "").replace(/^.*&tid=([a-z0-9]*)?.*$/, "$1");
    var uid = _userdata["user_id"];
    // update connection time
    updateLastSeen();
    setInterval(updateLastSeen, intervalTime);
    // display connection time
    var $el = $('#displayCT');
    if (!$el.length) return;
    var def = $.when();
    if (localStorage.fullCT === undefined) {
        def = $.get('/u'+uid).then(function (profil) {
            var currentVal = parseInt($('[name="'+savingField+'"]', profil).val() || 0);
            localStorage.fullCT = currentVal;
        });
    } 
    def.then(function () {
        var connectionTime = parseInt(localStorage.fullCT || 0) * 60 + parseInt((new Date() - localStorage.lastSeenCT + parseInt(localStorage.timeToAddCT || 0)) / 1000) - 1;
        var updateTime = function () {
            connectionTime++;
            var days = parseInt(connectionTime / 86400);
            var hours = parseInt(connectionTime / 3600) % 24;
            var minutes = parseInt(connectionTime / 60) % 60;
            var seconds = connectionTime % 60;
            var show = [];
            if (days) show.push(days+' jour'+(days > 1 ? 's':''));
            if (hours) show.push(hours+' heure'+(hours > 1 ? 's':''));
            if (minutes) show.push(minutes+' minute'+(minutes > 1 ? 's':''));
            if (seconds) show.push(seconds+' seconde'+(seconds > 1 ? 's':''));
            $el.text(show.length ? show.join(' ') : 'aucune');
        }; 
        updateTime();
        setInterval(updateTime, 1000);
    }) 
});
Cordialement.
Ea

Ea
Aidactif
Aidactif

Messages : 23583
Inscrit(e) le : 04/04/2008

Ea a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Temps de connexion total d'un membre

Message par Chacha Jeu 8 Nov 2018 - 9:53

Temps de connexion total d'un membre UmaslZ4Bonjour,

Attention, cela fait 6 jours que nous n'avons pas de nouvelles concernant votre demande, si vous ne voulez pas voir votre sujet déplacé à la corbeille, merci de poster dans les 24h qui suivent ce message.

Si votre sujet est résolu, merci d'éditer votre premier message et de cocher l'icône « résolu »
Chacha

Chacha
Modéractif
Modéractif

Masculin
Messages : 69301
Inscrit(e) le : 21/08/2010

https://forum.forumactif.com/
Chacha a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Temps de connexion total d'un membre

Message par Night Elensar Jeu 8 Nov 2018 - 19:33

Malheureusement, le compteur se remet à zéro à chaque connexion...il n'y a pas de réel "temps total".
Night Elensar

Night Elensar
Nouveau membre

Féminin
Messages : 17
Inscrit(e) le : 20/08/2017

http://elfs-school.forumactif.com/
Night Elensar a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Temps de connexion total d'un membre

Message par Ea Lun 12 Nov 2018 - 3:22

Bonjour,


En me déconnectant et reconnectant au même compte, ça me redonne bien le temps passé.

Le champ affiché dans le profil est bien changé pour un chiffre après plusieurs minutes ? Et il est remi à 0 après la reconnection ?

Sur un forum de test, si j'ai par exemple 31 minutes de connexion ( screenshot: https://i.imgur.com/4MfGBAI.png) je me déconnecte et reconnecte et je n'ai pas perdu le temps (screenshot: https://i.imgur.com/lZjOCZy.png).

Cordialement.
Ea

Ea
Aidactif
Aidactif

Messages : 23583
Inscrit(e) le : 04/04/2008

Ea a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Temps de connexion total d'un membre

Message par Night Elensar Lun 12 Nov 2018 - 14:38

Oui, il me remet le compte à zéro ou alors il reprend à 5 minutes ou 9 minutes...alors que ça devrait faire facilement 2h ! xD
Pourtant j'ai bien suivi la procédure !
Night Elensar

Night Elensar
Nouveau membre

Féminin
Messages : 17
Inscrit(e) le : 20/08/2017

http://elfs-school.forumactif.com/
Night Elensar a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Temps de connexion total d'un membre

Message par Ea Lun 12 Nov 2018 - 15:44

Sur le forum indiqué dans le demande je vois dans le script:

Code:
var savingField=12;

C'est le bon ID de champ ? C'est celui dans le script que j'ai indiqué mais c'est étrange que ce soit le même.

Cordialement.
Ea

Ea
Aidactif
Aidactif

Messages : 23583
Inscrit(e) le : 04/04/2008

Ea a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Temps de connexion total d'un membre

Message par Chacha Dim 18 Nov 2018 - 9:54

Temps de connexion total d'un membre UmaslZ4Bonjour,

Attention, cela fait 6 jours que nous n'avons pas de nouvelles concernant votre demande, si vous ne voulez pas voir votre sujet déplacé à la corbeille, merci de poster dans les 24h qui suivent ce message.

Si votre sujet est résolu, merci d'éditer votre premier message et de cocher l'icône « résolu »
Chacha

Chacha
Modéractif
Modéractif

Masculin
Messages : 69301
Inscrit(e) le : 21/08/2010

https://forum.forumactif.com/
Chacha a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Temps de connexion total d'un membre

Message par Night Elensar Dim 18 Nov 2018 - 17:20

Bonjour!


Désolée pour al réponse tardive ! Tout va bien c'était effectivement un problème d'ID ! Mes excuses !  Sorry

Mille mercis pour votre aide !!!  Very Happy
Night Elensar

Night Elensar
Nouveau membre

Féminin
Messages : 17
Inscrit(e) le : 20/08/2017

http://elfs-school.forumactif.com/
Night Elensar a été remercié(e) par l'auteur de ce sujet.

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum