Archives FluxBB.fr

Les archives de FluxBB.fr

Recherche rapide

Vous n'êtes pas identifié(e).

Version 1.4.13 : [.tar.gz][.zip] (maj 20/10/2014)
Pack langue française pour 1.4.x : [.zip] (maj 06/01/2012)

Branche 1.5.x : fluxbb.org

Version 1.2.24 fr (entièrement en français) : [.zip] (maj 26/08/2011)
Pack langue française pour 1.2.x : [.zip] [.rar] (maj 15/10/2006)

Vous avez un problème ?
Avant de poser votre question sur les forums d'entraide nous vous invitons à consulter :

#1 05-02-2008 21:55:13

foxmask
Lugo

User Online Today Colored

J'ai un peu fait joujou avec les Hook.

Celui ci permet d'afficher la liste des utilisateurs en ligne avec une couleur différente selon leur groupe.

A noter que ce qui suit n'est qu'à titre d'illustration et à ne pas faire wink j'expliquerai pourquoi ensuite wink


Comment procéder
1) ouvir le fichier  footer.php
2) ligne 92
remplacer

 if ($pun_config['o_users_online'] == '1'  )

par

 ($hook = get_hook('ft_get_users_online_colored')) ? eval($hook) : null;

    if ($pun_config['o_users_online'] == '1' and $hook == '' )

Voilà notre hook en place, il ne nous reste plus qu'à l'exploiter.

Dans notre dossier extensions, créez un dossier nommé
online_today_colored et créez un fichier manifest.xml avec le contenu suivant :

<?xml version="1.0" encoding="utf-8"?>

<extension engine="1.0">
  <id>online_today_colored</id>
  <title>Users Online Today (Colored)</title>
  <version>1.0</version>
  <description>Display the users online list with the color of their group</description>
  <author>FoxMaSk</author>
  <minversion>1.3 Beta</minversion>
  <maxtestedon>1.3 Beta</maxtestedon>

  <note type="install">This will display the Online list of users in place of the default PunBB 1.3.</note>

  <install><![CDATA[

  ]]></install>

  <uninstall><![CDATA[


  ]]></uninstall>

  <hooks>
    <hook id="ft_get_users_online_colored"><![CDATA[
        $date = getdate(time());
        $todaystamp = mktime(0,0,0, $date['mon'], $date['mday'], $date['year']);
            
        // fetch the users that came today.
        $query = array(
            'SELECT'    => 'username, id, group_id, last_visit',
            'FROM'        => 'users',
               'WHERE'        => "last_visit >='".$todaystamp."'",
            'ORDER BY'    => 'last_visit DESC'
        );
        
        $result = $db->query_build($query, true) or error(__FILE__, __LINE__);
        $users_today = array();
        while ($pun_user_online_today = $db->fetch_assoc($result)) 
        {
            if ($pun_user_online_today['group_id'] == '1')
                $users_today[] .=  "\n\t\t\t\t".'<a href="'.pun_link($pun_url['user'],$pun_user_online_today['id']).'" title="Last visit of '.htmlspecialchars($pun_user_online_today['username']).' : '.format_time($pun_user_online_today['last_visit']).'"><span style="color: green;font-weight:bold;">'.$pun_user_online_today['username'].'</span></a>';
            else
                $users_today[] .=  "\n\t\t\t\t".'<a href="'.pun_link($pun_url['user'],$pun_user_online_today['id']).'" title="Last visit of '.htmlspecialchars($pun_user_online_today['username']).' : '.format_time($pun_user_online_today['last_visit']).'">'.$pun_user_online_today['username'].'</a>';
        }
       
    
        // Fetch users online info and generate strings for output
        $query = array(
            'SELECT'    => 'o.user_id, o.ident, u.group_id',
            'FROM'        => 'online AS o',
            'JOINS'     => array(
                    array(
                        'LEFT JOIN' => 'users AS u',
                        'ON'    => 'o.user_id=u.id'
                        ),
                    ),
               'WHERE'        => 'o.idle=0',
            'ORDER BY'    => 'o.ident'
        );

        $result = $db->query_build($query, true) or error(__FILE__, __LINE__);
        $num_guests = 0;
        $users = array();

        while ($pun_user_online = $db->fetch_assoc($result))
        {
            if ($pun_user_online['user_id'] > 1) {
                if ( $pun_user_online['group_id'] == '1' ) 
                    $users[] = '<a href="'.pun_link($pun_url['user'], $pun_user_online['user_id']).'"><span style="color:red; font-weight:bold;">'.htmlspecialchars($pun_user_online['ident']).'</span></a>';
                else 
                    $users[] = '<a href="'.pun_link($pun_url['user'], $pun_user_online['user_id']).'">'.htmlspecialchars($pun_user_online['ident']).'</a>';
                
            }
            else
                ++$num_guests;
        }
    
        echo "\t".'<div id="onlinelist">'."\n".
            "\t\t".'<h3>'. printf($lang_index['Online'], $num_guests, count($users)) .'</h3>'."\n";

        // If there are registered users logged in, list them
        if (count($users) > 0)
            echo "\t\t\t".'<p>'.implode(', ', $users).'</p>'."\n";

        echo "\t".'</div>'."\n";

        echo "\t".'<div id="onlinetoday">'."\n".
            "\t\t".'<h3> Online Today : ( '. count($users_today)  .') </h3>'."\n";
        if (count($users_today) > 0)
            echo "\t\t\t".'<p>'.implode(',', $users_today).'</p>'."\n";
        else
            echo '<p><em>None</em></p>'."\n";
            
        echo "\t".'</div>'."\n";

        
    ]]></hook>
  </hooks>
</extension>

puis aller dans l'administration de punBB et installez le.

Voilà le hook est en place big_smile


Maintenant, une mauvaise habitude à proscrire est de modifier le "core" (le coeur du code ) de punBB.  Mauvaises habitudes que nous avons tous prises avec les MODs.

Donc ce hook fonctionne mais je n'aurai pas dû vous suggerer de modifier footer.php.

Pourquoi l'ai-je fait ?
Parceque je voulais afficher les membres A LA PLACE de la liste des membres que fourni punBB


Mais rassurez-vous j'ai demandé sur punbb.org à ce que ce genre de code

 
    if ($pun_config['o_users_online'] == '1' and $hook == '' )

soit possible, ce qui permettrait d'utiliser le hook "standard" .


http://www.foxmask.info
HaveFnuBB! le seul forum produit avec le framework PHP5 Jelix
(dé)pot de miel
Membre de la CoreTeam Jelix

Hors ligne

#2 02-03-2008 15:46:41

achtungbaby
Habitué

Re : User Online Today Colored

En lisant le début, j'ai eu peur de ne pas avoir compris le fonctionnement du Hook, mais la fin du message me rassure. C'est vrai que pouvoir remplacer le standard affiché par un hook devrait aussi être pris en compte dans le développement de la nouvelle version.

Ce Hook est intéressant, car sous punbb on n'a pas cette signalétique de qui est qui.


« la biere c'est de l'amitié liquide » - Ronny Coutteure.

Dartybox-news

Hors ligne

#3 06-12-2009 02:38:22

General Otacon
Membre

Re : User Online Today Colored

Merci tout d'abord mais je ne trouve pas dans footer sa:

if ($pun_config['o_users_online'] == '1'  )

Hors ligne

Pied de page des forums