PDA

View Full Version : Help !!!!


shoreham1
01-23-2003, 08:31 AM
Not sure if anyone can help but I'm trying to add a "whos online now" (with usernames & number of guests) section on my www........com/index.php NOT in my www......com/forums/index.php.
Does anyone know of a script that does this ? I'm VERY new to both php & vbulletin so any help at all would be gratefully appreciated.

Neo
01-23-2003, 08:42 AM
well that would take porting over the code that does the whos online

and it would be this..


$activeusers = "";
$loggedinusers = "";
if ($displayloggedin) {
$datecut=time()-$cookietimeout;

$loggedins=$DB_site->query_first("SELECT COUNT(*) AS sessions FROM session WHERE userid=0 AND lastactivity>$datecut");
$numberguest=$loggedins['sessions'];

$numbervisible=0;
$numberregistered=0;

$loggedins=$DB_site->query("SELECT DISTINCT session.userid,username,invisible,usergroupid
FROM session
LEFT JOIN user ON (user.userid=session.userid)
WHERE session.userid>0 AND session.lastactivity>$datecut
ORDER BY invisible ASC, username ASC");
if ($loggedin=$DB_site->fetch_array($loggedins)) {
$numberregistered++;
if ($loggedin['invisible']==0 or $bbuserinfo['usergroupid']==6) {
$numbervisible++;
$userid = $loggedin['userid'];
if ($loggedin['invisible'] == 1) { // Invisible User but show to Admin
$invisibleuser = '*';
} else {
$invisibleuser = '';
}
if ($loggedin['usergroupid'] == 6 and $highlightadmin) {
$username = "<b><i>$loggedin[username]</i></b>";
} else if (($mod["$userid"] or $loggedin['usergroupid'] == 5) and $highlightadmin) {
$username = "<b>$loggedin[username]</b>";
} else {
$username = $loggedin['username'];
}
eval("\$activeusers = \"".gettemplate('forumhome_loggedinuser')."\";");
}

while ($loggedin=$DB_site->fetch_array($loggedins)) {
$numberregistered++;
$invisibleuser = '';
if ($loggedin['invisible']==1 and $bbuserinfo['usergroupid']!=6) {
continue;
}
$numbervisible++;
$userid=$loggedin['userid'];
if ($loggedin['invisible'] == 1) { // Invisible User but show to Admin
$invisibleuser = '*';
}
if ($loggedin['usergroupid'] == 6 and $highlightadmin) {
$username = "<b><i>$loggedin[username]</i></b>";
} else if (($mod["$userid"] or $loggedin['usergroupid'] == 5) and $highlightadmin) {
$username = "<b>$loggedin[username]</b>";
} else {
$username = $loggedin['username'];
}
eval("\$activeusers .= \", ".gettemplate('forumhome_loggedinuser')."\";");
}
}
$DB_site->free_result($loggedins);

$totalonline=$numberregistered+$numberguest;
$numberinvisible=$numberregistered-$numbervisible;

$maxusers=explode(" ", gettemplate('maxloggedin',0,0));
if ((int)$maxusers[0] <= $totalonline) {
$time = time();
$maxloggedin = "$totalonline " . $time;
$DB_site->query("UPDATE template SET template='$maxloggedin' WHERE title='maxloggedin'");
$maxusers[0] = $totalonline;
$maxusers[1] = $time;
}
$recordusers = $maxusers[0];
$recorddate = vbdate($dateformat,$maxusers[1]);
$recordtime = vbdate($timeformat,$maxusers[1]);
eval("\$loggedinusers = \"".gettemplate('forumhome_loggedinusers')."\";");
}


but first you want to place this (i think)


require("./../global.php");


to connect to the database...

and you can place $loggedinusers anywhere you want the whos online to show up..

shoreham1
01-23-2003, 11:06 AM
NEO,
Many thanks for this - as I said I'm VERY new to both PHP & VB , but I placed require("./../global.php"); into my www.shorehambysea.com/index.php page without a porblem. However I'm not too sure where to place the other "$activeusers = "";" script.
Sorry to be a pain, but again help would be appreciated.
Cheers

Sebastian
01-25-2003, 06:07 AM
Hi.

I have this hack a long time ago, you will have to use only the parts you want.

this hack will display

1) total registered members using variable: $totalmembers
2) show total threads using variable: $totalthreads
3) show total post made today using variable : $totalpoststoday
4) show total post using variable: $totalposts
5) show TOTAL users online using variable: $totalon

If you want to show how many user and guest seperate then use: $regmemberson for members online, and $guestson for guests online.

all you have to do is copy the code into a file then include(); it and use the variables above to show what you want.


<?php
$usernames = "off"; // this will show their names if they are registered
$path = "/forums/admin"; // path to forum/admin directory
$dbservertype='mysql';
$servername='localhost';
$dbusername='****';
$dbpassword='****';
$dbname='vbulletin'; // database name

$db=mysql_connect($servername,$dbusername,$dbpassw ord);
mysql_select_db($dbname);

if(isset($bbuserinfo["username"]) && ($bbuserinfo["username"] != "Unregistered")) {
}
$username = $bbuserinfo["username"];

$cookievalue = mysql_query("SELECT value FROM setting WHERE varname = 'cookietimeout'") or die("Error");
$cookietimeout = mysql_result($cookievalue, 0, 0);
$datecut = time()-$cookietimeout;

$invisibleregmember = "0";

if ($usernames == "on") {
$regmembers = mysql_query("SELECT DISTINCT username,invisible FROM user,session WHERE session.userid=user.userid AND session.lastactivity>$datecut AND invisible='0' ORDER BY username ASC") or die("Error");
while($regmember = mysql_fetch_array($regmembers)):
++$regmembercomma;
if ($regmember[invisible] == 0) {
$regmemberson .= $regmember[username];
} else {
++$regmembercomma;
}
if ($regmembercomma < mysql_num_rows($regmembers)):
$regmemberson .= ", ";
endif;
endwhile;
} else {

$regmemberson=0;
$loggedins=mysql_query("SELECT DISTINCT session.userid,username,invisible,usergroupid FROM session LEFT JOIN user ON (user.userid=session.userid) WHERE session.userid>0 AND session.lastactivity>$datecut ORDER BY invisible ASC, username ASC");
while ($loggedin=mysql_fetch_array($loggedins)) {
$regmemberson++;}
}

// get who is online
$guests = mysql_query("SELECT COUNT(userid) AS guestsonline FROM session WHERE userid=0 AND lastactivity>$datecut") or die("oops3");
while($guest = mysql_fetch_array($guests)):
$guestson = number_format($guest[guestsonline]);
endwhile;
$totalon = $regmemberson+$guestson;

// get total posts
$countposts = mysql_query("SELECT COUNT(postid) AS posts FROM post");
while($countpost = mysql_fetch_array($countposts)):
$totalposts = number_format($countpost[posts]);
endwhile;

$countthreads = mysql_query("SELECT COUNT(threadid) AS threads FROM thread");
while($countthread = mysql_fetch_array($countthreads)):
$totalthreads = number_format($countthread[threads]);
endwhile;

// number of posts today
$datecut = mktime(0,0,0,date("m"), date("d"), date("y"));
$getpoststoday = mysql_query("SELECT count(postid) AS count FROM post WHERE dateline>='$datecut'");
while($getposttoday = mysql_fetch_array($getpoststoday)):
$totalpoststoday = number_format($getposttoday[count]);
endwhile;

?>

shoreham1
01-25-2003, 08:30 AM
Seb,
Your a star !!!!!!
Many thanks :)