Fork me on GitHub

Rapport de message :*
 

Re: Besoin d'aide pour le bloc qui est en ligne...

Titre du sujet : Re: Besoin d'aide pour le bloc qui est en ligne...
par philou sur 14/07/2005 12:35:05

Dans le fichier /module/system/blocks/system_blocks.php

voici la fonction modifiée pour afficher le champ "name" a la place de l'uid (j'ai juste mis dans le champ name mon nom et prenom. donc a adapter si tu as choisi 2 champs differents):
function b_system_online_show()
{
    global 
$xoopsUser$xoopsModule$xoopsDB;
    
$online_handler =& xoops_gethandler('online');
    
mt_srand((double)microtime()*1000000);
    
// set gc probabillity to 10% for now..
    
if (mt_rand(1100) < 11) {
        
$online_handler->gc(300);
    }
    if (
is_object($xoopsUser)) {
        
$uid $xoopsUser->getVar('uid');
        
$uname $xoopsUser->getVar('uname');
    } else {
        
$uid 0;
        
$uname '';
    }
    if (
is_object($xoopsModule)) {
        
$online_handler->write($uid$unametime(), $xoopsModule->getVar('mid'), $_SERVER['REMOTE_ADDR']);
    } else {
        
$online_handler->write($uid$unametime(), 0$_SERVER['REMOTE_ADDR']);
    }
    
$onlines =& $online_handler->getAll();

    if (
false != $onlines) {
        
$total count($onlines);
        
$block = array();
        
$guests 0;
        
$members '';
        for (
$i 0$i $total$i++) {
            if (
$onlines[$i]['online_uid'] > 0) {

    
$sql=sprintf("SELECT name FROM ".$xoopsDB->prefix('users')." WHERE uid='$uid'");
    
$res $xoopsDB->query($sql) or die ('erreur requete :'.$sql.'<br>');
    if ( 
$res ) {
        
$tab[1] = "";
        while ((
$row $xoopsDB->fetchArray($res)) != false) {
            
$tab[1] = $row['name'];
        }
    }

                
$members .= ' <a href="'.XOOPS_URL.'/userinfo.php?uid='.$onlines[$i]['online_uid'].'">'.$tab[1].'</a>,';
            } else {
                
$guests++;
            }
        }
        
$block['online_total'] = sprintf(_ONLINEPHRASE$total);
        if (
is_object($xoopsModule)) {
            
$mytotal $online_handler->getCount(new Criteria('online_module'$xoopsModule->getVar('mid')));
            
$block['online_total'] .= ' ('.sprintf(_ONLINEPHRASEX$mytotal$xoopsModule->getVar('name')).')';
        }
        
$block['lang_members'] = _MEMBERS;
        
$block['lang_guests'] = _GUESTS;
        
$block['online_names'] = $members;
        
$block['online_members'] = $total $guests;
        
$block['online_guests'] = $guests;
        
$block['lang_more'] = _MORE;
        return 
$block;
    } else {
        return 
false;
    }
}


en résumé : appel à "$xoopsDB" au debut de la fonction pour pouvoir faire une requète
ensuite la requete en elle meme :
$sql=sprintf("SELECT name FROM ".$xoopsDB->prefix('users')." WHERE uid='$uid'");
    
$res $xoopsDB->query($sql) or die ('erreur requete :'.$sql.'<br>');
    if ( 
$res ) {
        
$tab[1] = "";
        while ((
$row $xoopsDB->fetchArray($res)) != false) {
            
$tab[1] = $row['name'];
        }
    }

puis pour l'affichage j'ai remplacé $onlines[$i]['online_uname'] par : $tab[1]

Ce n'est pas forcément optimum mais cela à l'air de fonctionner.
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

66 Personne(s) en ligne (44 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 66 | Plus ...