Diskuse

Téma: Nedávno aktivní uživatelé

Čau,
na webu mám použitý HCM modul, který mi vypíše uživatele, kteří byli nedávno aktivní. Modul funguje perfektně, jen potřebuji doladit jednu věc .. A to, že pokud není nikdo online, aby se napsal nějaký text, třeba : "V současné době není nikdo online"

Díky za tipy. ;)
postZaslat odpověď
HCM modul zobrazuje tyto uzivatele podle casu posledni aktivity " WHERE " . time() . "-activitytime<1800"ale v systému není možnost jak poznat zda uživatel něco čte, prohlíží, píše nebo zda na webu již není, pokud neprovede aktualizaci stránky a tím neaktualizuje activitytime

já jsem pro jeden klanový web dělal vlastní alteranitivu tohoto modulu kde se zobrazuje status cca takto:

!zadany cas pro vypis se VZDY deli na tretiny

pro cas 15minut plati:

0-5min uzivatel je aktivni
5-10min uzivatel je neaktivni
10-15min uzivatel je uplne pryc
a nad 15min uz se ani nevypisuje

http://prntscr.com/650c0w
<?php

if(!defined('_core')) {
exit;
}

/**
* @param $pocet pocet vypsanych uzivatelu
* @param $minut celkovy pocet minut pro vypis uzivatelu (aktivni, neaktivni, pryc)
* @return string
*/
function _HCM_ba_baonline($pocet=5, $minut=30)
{

$result = "";
$pocet = abs(intval($pocet));
$minut = abs(intval($minut));

$online=ceil(($minut*60)*0.33);
$away=ceil(($minut*60)*0.66);

$query=DB::query("SELECT u.id as u_id, u.username as u_username, u.publicname as u_publicname, u.activitytime as u_activitytime,
g.id as g_id, g.icon as g_icon, g.color as g_color
FROM `"._mysql_prefix."-users` u
LEFT JOIN `"._mysql_prefix."-groups` g ON (u.group=g.id)
WHERE ".time()."-u.activitytime<({$minut}*60) ORDER BY u.activitytime DESC LIMIT ".$pocet
);

$result.="<ul class='baonline-list'>";
while($user = DB::row($query)){

$ikona="offline";
$cas=(strtotime('now')-intval($user['u_activitytime']));
switch($cas){
case ($cas < $online): $ikona = "online"; $status="aktivní";break;
case ($cas > $online && $cas < $away): $ikona = "away"; $status="neaktivní více než ".ceil($minut*0.33)."min."; break;
default: $ikona = "offline"; $status="neaktivní více než ".ceil($minut*0.66)."min."; break;
}

$result.= "<li><img src='./pictures/groupicons/{$user['g_icon']}' alt='icon' class='icon'> <a href='./index.php?m=profile&amp;id={$user['u_username']}' class='user-link-{$user['u_id']} user-link-group-{$user['g_id']}' style='color:{$user['g_color']};'>".(!empty($user['u_publicname'])?$user['u_publicname']:$user['u_username'])."</a> "
. "<span class='baonline-action'>"
.(
$user['u_id']!=_loginid
? "<img src='"._templateImage("{$ikona}.png")."' name='status-icon' class='status-icon' alt='status-{$ikona}' title='{$status}'> "
: "")
.(
$user['u_id']!=_loginid
? "<a href='./index.php?m=messages&a=new&subject=PM&receiver={$user['u_username']}' class='useronline-pm'><acronym title='Napsat soukromou zprávu'>[ PM ]</acronym></a>"
: ""
)
. "</span>"
."</li>\n";
}
$result.="</ul>";
return $result;
}
Vypadá to zajímavě. Ale jak mám uvedený kód použít ? :)
Je to HCM modul. Vytvoř si složku plugins/hcm/ba a v ni soubor baonline.php s tímto obsahem, a následně provedeš zápis HCM [hcm]ba/baonline,<pocet_uzivatelu>,<cas>[/hcm]

a samozrejme je potreba ostylovat a pridat ikonky stavu do slozky plugins/templates/<nazev_sablony>/images/ (online.png, away.png, offline.png)
Udělal jsem vše, podle návodu, ale po vložení HCM zápisu, se mi ze stránky zobrazí pouze logo a horní menu. Zbytek stránky zmizí. :(
promiň moje chyba, špatně jsem zkopíroval ten soubor, OPRAVENO!
Děkuju, všechno v pořádku funguje ;)