XOOPS WAP Mobile
Fóruns
XOOPS Cube
- Legacy
- Bloco de membros online
Detalhes:
Título: Versão 1.1
Autor: topet05
Data: 2004-02-12 11:47
Conteúdo:

VERSÃO 1.1
Como eu já disse antes mesmo de fazer esta função, 3 colunas em um bloco pode quebrar o layout facilmente... e foi o que aconteceu... por isso mando a mesma função um pouco modificada (é aconselhável utilizar esta, mas para quem quiser trocar a coluna de MP pela coluna de módulo, por exemplo, teria que pegar a antiga):
Alterações:
- Agora o Nome do Módulo que o membro se encontra aparece ABAIXO do nome do usuário (economizando espaço)
- Colocado tags (diminui o tamanho do texto) no nome do módulo e no IP

function Membros_Online ($numero,$ip=0,$mp=1,$avatar=1,$módulo=1)
{
Global $xoopsUser, $xoopsModule, $HTTP_SERVER_VARS;
//abaixo o valor para Coldspan nas célular que ocupam uma linha inteira.
$colspan = $mp + $módulo + 1;
$online_handler =& xoops_gethandler('online');
Mt_srand((double)microtime()*1000000);
// Abaixo vai remover TODOS as informações da tabela Online que não foram atualizadas durante um certo período.
If (mt_rand(1, 100) < 11) {
$online_handler->gc(300);
}
// Início da rotina que grava as informações do user/navegação na tabela 'online'
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'), $HTTP_SERVER_VARS['REMOTE_ADDR']);
} else {
$online_handler->write($uid, $uname, time(), 0, $HTTP_SERVER_VARS['REMOTE_ADDR']);
}
//Fim da Rotina.
//Pega todo o conteúdo da tabela 'online'
$onlines =& $online_handler->getAll();
// Exibe o título do bloco.
Echo '
';
// Se não tem ninguém usuário online... então o bloco está sendo visualizado por um fantasma.
If (false != $onlines) {
// Conta quantos registros tem na tabela 'online'
$total = count($onlines);
//Prepara visitantes e membros para loop pela tabela.
$visitantes = 0;
$membros = 0;
//Início do Loop.
For ($i = 0; $i < $total; $i++) {
If ($onlines[$i]['online_uid'] > 0) {
$membros++;
} else {
$visitantes++;
}
}
// Fim do loops resultando nas variáveis $visitantes e $membros prontas para uso.
//Exibe o número de pessoas online, dividido por membros, visitantes e total.
Echo '';
$module_handler =& xoops_gethandler('module');
//Agora pega apenas os membros da tabela 'online'
$somembros = $online_handler->getAll(new Criteria('online_uid', 0, '>'));
If (false != $somembros) {
// Conta quantos membros tem online.
$total_membros = count($somembros);
// Gera lista de módulos ativos.
$modules =& $module_handler->getList(new Criteria('isactive', 1));
//Início do Loop que listará os Membros Online.
For ($i = 0; $i < $total_membros; $i++) {
If ($somembros[$i]['online_uid'] == 0) {
$onlineUsers[$i]['user'] = '';
} else {
$onlineUsers[$i]['user'] =& new XoopsUser($somembros[$i]['online_uid']);
}
$onlineUsers[$i]['ip'] = $somembros[$i]['online_ip'];
$onlineUsers[$i]['updated'] = $somembros[$i]['online_updated'];
$onlineUsers[$i]['module'] = ($somembros[$i]['online_module'] > 0) ? $modules[$somembros[$i]['online_module']] : 'Home';
}
//Fim do Loop.
//Verifica se quem está vendo o bloco é administrador--- ? 1 : 0
$administrador = ($xoopsUser && $xoopsUser->isAdmin()) ? 1 : 0;
//Agora faz o Loop Listando somente o número de utilizadores que serão exibidos no bloco.
For ($i = 0; $i < $numero; $i++) {
If (is_object($onlineUsers[$i]['user'])) {
echo '';
//Se está definido para mostrar o avatar.
If ($avatar == 1){
$oavatar = $onlineUsers[$i]['user']->getVar('user_avatar') ? '' : ' ';
echo '';
}else{
Echo '';
}
//Confere se está definido para mostrar a coluna de mensagem privada ou e-mail.
If ($mp == 1) {
//Se quem está vendo o bloco for usuário registrado.
If ($xoopsUser != '') {
//Mostra endereço para MP
Echo '';
//Caso contrário.
}else{
//Confere se o Membro online autorizou a exibição de seu e-mail.
If ($onlineUsers[$i]['user']->getVar('user_viewemail')) {
Echo '';
//Se não está autorizado a exibição do e-mail.
}else{
//Não mostra NADA na coluna.
Echo '';
}
}
}
Echo '';
}
//Fim do Loop.
}
//Se não encontrou nenhum membro online, mostra uma frase.
}else{
Echo '';
}
}
//Exibe o Link para mostrar TODOS os utilizadores online.
Echo '
Membros Online
Total: '.$total.'
Membros: '.$membros.'
Visitantes: '.$visitantes.'
'.$oavatar.'
'.$onlineUsers[$i]['user']->getVar('uname').'';
// Se não está definido para mostrar o avatar, mostra só o nome.
}else{
Echo '
'.$onlineUsers[$i]['user']->getVar('uname').'';
}
//Confere se está definido para mostrar o Módulo no qual o membro se encontra.
If ($módulo == 1){
Echo '
'.$onlineUsers[$i]['module'].'';
}
//Confere se está definido para mostrar o IP e se quem está vendo o bloco é administrador.
If ($administrador == 1 && $ip == 1) {
echo '
('.$onlineUsers[$i]['ip'].')
Nenhum Membro Online
Mais...
';
}

Por favor, quando forem divulgar no xoops.org, divulguem esta e não a antiga, porque se a antiga ficou inviável para este portal, provavelmente ficará para muitos outros.
Falow!

<< 1 ..4 (5) 6 ..9 >>
Responder Editar Remover