PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : vBIndex OnlineUser Anzeige


Archimedes
05.05.2005, 19:47
Hallo zusammen!

Bekanntlich stimmt ja die OnlineUser Anzeige von vBIndex nicht so ganz.

Zuerst ein Tipp für diejenigen, bei denen die UserOnline Box zwischendrin abreißt (an unsichtbaren Usern):
In Zeile 389 das "break 1;" auskommentieren und es geht.

Meine Frage:
Die OnlineUser Anzeige zwischen vBindex und vBulletin stimmt nicht überein - woran liegt das?

Hier mal der Quellcode
// ####################### PROCESS vBindex WOL ##########################
if ($vbindex['options'] & VBI_WOL) {
$online['datecut'] = TIMENOW - $vboptions['cookietimeout'];
$buddies = explode(' ', $bbuserinfo['buddylist']);

$onlineusers = $DB_site->query("
## GET ONLINE USERS ##
SELECT user.username, (user.options & $_USEROPTIONS[invisible]) AS invisible,
user.usergroupid, session.userid, session.lastactivity,
IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid
FROM ".TABLE_PREFIX."session AS session
LEFT JOIN ".TABLE_PREFIX."user AS user ON (user.userid = session.userid)
WHERE session.lastactivity > $online[datecut]
ORDER BY ".iif($permissions['genericpermissions'] & CANSEEHIDDEN, 'invisible ASC, ')."username ASC");

$home['onlinetotal'] = 0;
$home['onlineguesttotal'] = 0;
$home['onlinemembertotal'] = 0;
$done = array();
while($onlineuser = $DB_site->fetch_array($onlineusers)) {

if ($onlineuser['userid'] && !$done["$onlineuser[userid]"]) {

$done["$onlineuser[userid]"] = true;

$home['onlinetotal']++;
$home['onlinemembertotal']++;

// do invisible users
if (($permissions['genericpermissions'] & CANSEEHIDDEN) && $onlineuser['invisible']) {
$onlineuser['invisiblemark'] = '*';
} elseif ($onlineuser['invisible']) {
$home['onlineguesttotal']++;
$home['onlinemembertotal']--;
break 1;
}

// do buddies
if (in_array($onlineuser['userid'], $buddies)) {
$onlineuser['buddymark'] = '+';
}

$onlineuser['musername'] = fetch_musername($onlineuser);
eval("\$home[onlineusers] .= \", ".fetch_template('vbindex_onlineuser')."\";");

} elseif ($onlineuser['userid'] == 0) {
$home['onlineguesttotal']++;
$home['onlinetotal']++;
}
}

if ($vbindex['options'] & VBI_24WOL) {
// show users from the last 24 hours
$show['last24'] = true;
unset($onlineuser);
$starttime = mktime(0, 0, 0, date('m'), date('d'), date('Y'));


if ($vbindex['options'] & VBI_24WOLUSER) {

// show user names and count
$show['last24user'] = true;

$fetchusers = $DB_site->query("
## USERS IN PAST 24HRS ##
SELECT username, userid, usergroupid,
(user.options & $_USEROPTIONS[invisible]) AS invisible,
IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid
FROM ".TABLE_PREFIX."user AS user
WHERE lastactivity >= $starttime
ORDER BY username ASC
");

while($onlineuser = $DB_site->fetch_array($fetchusers)) {

$home['last24count']++;
$onlineuser['musername'] = fetch_musername($onlineuser);

if (($permissions['genericpermissions'] & CANSEEHIDDEN) && $onlineuser['invisible']) {
$onlineuser['invisiblemark'] = '*';
} elseif ($onlineuser['invisible']) {
$onlineuser['musername'] = '';
$home['last24count']--;
}

eval("\$home[last24] .= \", ".fetch_template('vbindex_onlineuser')."\";");
}
// removed inital comma in online list
$home['last24'] = substr($home['last24'], 2);
// memory saving
unset($user);
$DB_site->free_result($fetchusers);

} else {

// show count only
$show['last24user'] = false;
$onlinetoday = $DB_site->query_first(" ## USERS IN LAST 24HRS COUNT ##
SELECT COUNT(*) AS count
FROM ".TABLE_PREFIX."user
WHERE lastactivity >= $starttime
");
$home['last24count'] = $onlinetoday['count'];
}
}

// removed inital comma in online list
$home['onlineusers'] = substr($home['onlineusers'], 2);
eval("\$side[onlineusers] .= \"".fetch_template('vbindex_onlineusers')."\";");
// memory saving
unset($onlineuser, $done, $online, $buddies);
$DB_site->free_result($onlineusers);
}