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(1, 100) < 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, $uname, time(), $xoopsModule->getVar('mid'), $_SERVER['REMOTE_ADDR']);
} else {
$online_handler->write($uid, $uname, time(), 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.