Page 1 sur 1

ADDON Group_time MOD

MessagePosté: Dim 5 Aoû 2012 01:03
par roberto
Bonjour,

j'utilise votre (excellent) mod Group_time qui permet de placer durant un temps selectionné des membres dans un groupe et de les redeplacer automatiquement apres le temps donné.

J'aimerai si possible que vous m'aidiez a devellopper une extension a ce mod qui permettrait d'afficher aux membres du groupe le temps restant sur le header du forum

"Il vous reste XX jours et XX heures XX minutes dans le groupe XXX"

J'ai bien vu le column "user_time_entrance" dans la table "user_group"
Celui ci indique la date/heure d'entrée dans le groupe (en TIMESTAMP)
Il faudrait comparer ce TIMESTAMP avec la date/heure actuel (TIMESTAMP actuel) ce qui permettrait d'afficher le temps restant

Mes competences de programmation sont faibles ... Je m'en remet a vous, merci ;)

Re: ADDON Group_time MOD

MessagePosté: Lun 6 Aoû 2012 08:38
par lolovoisin
Bonjour,

effectivement l'idée est bonne.
Par contre il va falloir que je m'y remette dessus pour coder quelque chose mais ça devrait etre faisable.
il me manque aussi pas mal de temps, mais je vais y réfléchir pour rajouter un affichage.

Bon j'ai fait un petit truc pour faire apparaitre le jour ou le membre quittera le groupe sur la première page de son panneau utilisateur.

Procédure:
    Ouvrir styles/prosilver/template/ucp_main_front.html
    cherchez:
    Code: Tout sélectionner
    <dt>{L_VISITED}:</dt> <dd>{LAST_VISIT_YOU}</dd>       

    Aprés ajoutez :
    Code: Tout sélectionner
    <!-- MODs group_time -->
            <dt>{L_GROUP_TIME_REMAIN}:</dt> <dd>{GROUP_TIME_REMAIN}</dd>
            <!-- Fin MODs group_time -->       

    Ouvrir language/fr/ucp.php
    cherchez:
    Code: Tout sélectionner
    'GLOBAL_ANNOUNCEMENT'   => 'Annonce globale',        

    Aprés ajoutez :
    Code: Tout sélectionner
    //MODs group_time
        'GROUP_TIME_REMAIN'                => 'Temps restant dans le groupe',
        'GROUP_TIME_REMAIN_STATUS'        => 'Vous quitterez le groupe %1$s le %2$s',
        'GROUP_TIME_REMAIN_STATUS_NONE'   => 'Aucun groupe temporaire',
        //Fin MODs group_time    

    Ouvrir includes/ucp/ucp_main.php
    cherchez:
    Code: Tout sélectionner
    // Do the relevant calculations   

    Avant ajoutez :
    Code: Tout sélectionner
    // MODs group_time    
                    $sql = $db->sql_build_query('SELECT', array(
                        'SELECT'    => 'g.group_id, g.group_name, g.group_nbre_jour_limit, ug.user_id, ug.user_time_entrance',

                        'FROM'        => array(
                            GROUPS_TABLE    => 'g'
                        ),

                        'LEFT_JOIN'    => array(
                            array(
                                'FROM'    => array(USER_GROUP_TABLE => 'ug'),
                                'ON'    => 'g.group_id = ug.group_id'
                                )
                        ),

                        'WHERE'        => 'g.group_nbre_jour_limit > 0 ' . '
                            AND ug.user_id = '. $user->data['user_id']
                    ));        
                    $result = $db->sql_query($sql);
                    while ($row = $db->sql_fetchrow($result))
                    {
                        $group_time_remain = ($row['user_time_entrance'] + ($row['group_nbre_jour_limit'] * 86400) - time());
                        $group_time_name = $row['group_name'];
          if ($row['user_time_entrance'] == 0)
          {
                  $group_time_limit = 0;
          }
          else
          {
             $group_time_limit = 1;
          }
                    }
                    $db->sql_freeresult($result);
                    // Fin MODs group_time      
cherchez:
Code: Tout sélectionner
'JOINED'            => $user->format_date($user->data['user_regdate']),  

après ajoutez:
Code: Tout sélectionner
// MODs group_time
                    'GROUP_TIME_REMAIN'   => ($group_time_limit == 0) ? $user->lang['GROUP_TIME_REMAIN_STATUS_NONE'] : sprintf($user->lang['GROUP_TIME_REMAIN_STATUS'], $group_time_name, date('d/m/Y',time() + $group_time_remain )),
                    // Fin MODs group_time  


regardez si ça vous va.
Bon c'est assez simple j'ai pas trop cherché à optimiser, mais ça devrait faire ce que vous voulez :mrgreen:

Re: ADDON Group_time MOD

MessagePosté: Lun 6 Aoû 2012 13:56
par roberto
Merci c'est parfait !

Il manque juste ce que vous avez dit sur la fin, savoir si c'est un group temporaire, car pour un groupe normal, il est noté "Temps restant dans le groupe: Vous quitterez le groupe le 06/08/2012"

En tout cas c'est parfait !

Y a t'il un moyen que cela affiche l'heure de fin egalement ?

"Vous quitterez le groupe ViP le 21/05/2013 à XX h XX minutes" ?

Un grand merci pour ce mod et cette extension et votre reactivité ! ;)

Re: ADDON Group_time MOD

MessagePosté: Lun 6 Aoû 2012 14:07
par lolovoisin
code modifié et premier post édité

Pour l'heure je vais regarder ça.

Re: ADDON Group_time MOD

MessagePosté: Lun 6 Aoû 2012 14:21
par roberto
c'est parfait merci !!

j'ai noté quelques erreurs dans ce code
Code: Tout sélectionner
    // MODs group_time
                        ''GROUP_TIME_REMAIN'   => ($group_time_limit == 0) ? $user->lang['GROUP_TIME_REMAIN_STATUS_NONE'] : sprintf($user->lang['GROUP_TIME_REMAIN_STATUS'], $group_time_name, date('d/m/Y',time() + $group_time_remain )) ,
                        // Fin MODs group_time 


Code: Tout sélectionner
    // MODs group_time
                        'GROUP_TIME_REMAIN'   => ($group_time_limit == 0) ? $user->lang['GROUP_TIME_REMAIN_STATUS_NONE'] : sprintf($user->lang['GROUP_TIME_REMAIN_STATUS'], $group_time_name, date('d/m/Y',time() + $group_time_remain )),
                        // Fin MODs group_time 


Il y avait 2 ' avant GROUP_TIME_REMAIN et la virgule de fin n'etait pas collé a la parenthese ;)

Merci encore ! je repasserai voir si vous avez pu ajouter l'heure, mais ce n'est pas le plus important :)

Re: ADDON Group_time MOD

MessagePosté: Lun 6 Aoû 2012 14:24
par lolovoisin
roberto a écrit:Il y avait 2 ' avant GROUP_TIME_REMAIN

copier/coller un peu trop rapide :mrgreen:
roberto a écrit:et la virgule de fin n'etait pas collé a la parenthese

pas grave mais ça fait plus propre, c'est vrai ;)

edit: pour l'heure faut juste que je règle le problème du décalage de l'heure de +2 ou +1 suivant l'été ou l'hiver et un autre petit truc bizarroïde :mrgreen:

Re: ADDON Group_time MOD

MessagePosté: Jeu 9 Aoû 2012 09:54
par lolovoisin
tenez testez ceci:

remplacez:
Code: Tout sélectionner
$group_time_remain = ($row['user_time_entrance'] + ($row['group_nbre_jour_limit'] * 86400) - time());

par:
Code: Tout sélectionner
$group_time_remain = $row['user_time_entrance'] + ($row['group_nbre_jour_limit'] * 86400);


puis remplacez:
Code: Tout sélectionner
'GROUP_TIME_REMAIN'   => ($group_time_limit == 0) ? $user->lang['GROUP_TIME_REMAIN_STATUS_NONE'] : sprintf($user->lang['GROUP_TIME_REMAIN_STATUS'], $group_time_name, date('d/m/Y',time() + $group_time_remain )),

par:
Code: Tout sélectionner
'GROUP_TIME_REMAIN'   => 'GROUP_TIME_REMAIN'   => ($group_time_limit == 0) ? $user->lang['GROUP_TIME_REMAIN_STATUS_NONE'] : sprintf($user->lang['GROUP_TIME_REMAIN_STATUS'], $group_time_name, $user->format_date($group_time_remain)),