OK, for those of you who would like to put a "Users In Chat" block on your vBadvanced portal pages.....
First of all, this assumes that you have "Users Currently In vBChat" already working properly on your forum home page.
I have vb 3.0.3 and PHP 4.3.10 installed on mine.
First, go to the Style Manager > Common Templates
In the phpinclude_start field paste the following code:
PHP Code:
// For vBChat
require_once('./includes/functions_bigthree.php');
// ### LOGGED IN USERS ###
if ($vboptions['displayloggedin'])
{
$datecut = TIMENOW - $vboptions['cookietimeout'];
$numbervisible = 0;
$numberregistered = 0;
$numberguest = 0;
$forumusers = $DB_site->query("
SELECT
user.username, (user.options & $_USEROPTIONS[invisible]) AS invisible, user.usergroupid,
session.userid, session.inforum, session.lastactivity, session.location,
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 > $datecut
" . iif($vboptions['displayloggedin'] == 1, "ORDER BY username ASC") . "
");
// Get the users in vBChat
$vbchat_users = array();
while ($loggedin = $DB_site->fetch_array($forumusers))
{
$userid = $loggedin['userid'];
if (empty($userinfos["$userid"]) OR ($userinfos["$userid"]['lastactivity'] < $loggedin['lastactivity']))
{
$userinfos["$userid"] = $loggedin;
}
if(preg_match("/vBChat.php/",$loggedin['location']) && $loggedin['userid']){
$vbchat_users[$loggedin['userid']] = $loggedin;
}
}
// Configure Peeps In vBChat
$invBChat = "";
if(is_array($vbchat_users)){
foreach($vbchat_users as $invbc){
if($invBChat == ""){
$extra = "";
} else {
$extra = ", ";
}
// Get Username Style
$invbc['musername'] = fetch_musername($invbc);
$invBChat .= "{$extra}<a href='member.php?{$session['sessionurl']}&u={$invbc['userid']}'>{$invbc['musername']}</a>";
}
}
if($invBChat == ""){
$invBChat = "<i>None</i>";
}
}
Then create a new custom template called adv_portal_inchat and place the following code in it:
PHP Code:
<!-- Start vBChat Users -->
<if condition="$show['member']">
<table align="center" border="0" cellpadding="4" cellspacing="$stylevar[cellspacing]" class="tborder"width="100%">
<tbody>
<tr>
<td class="tcat" colspan="2">
<span class="smallfont"><strong><a href='vBChat.php?$session[sessionurl]'>Users In Chat</a></strong></span>
</td>
</tr>
</tbody>
<tbody id="collapseobj_forumhome_chatusers" style="$vbcollapse[collapseobj_forumhome_chatusers]">
<tr>
<td class="alt2"><a href="vBChat.php?$session[sessionurl]"><img src="$stylevar[imgdir_statusicon]/forum_link.gif" alt="Chat" border="0" /></a></td>
<td class="alt1" width="100%">
<div class="smallfont">
{$GLOBALS[invBChat]}
</div>
</td>
</tr>
</tbody>
</table><br>
<else /></if>
<!-- End vBChat Users -->
Then add a new cmps module with the following options:
Module Title: Who's In Chat
Template to include: inchat
Active: yes
That's it!!!
This code will only show the block to registered users. If you want guests to be able to see it just comment out the <if condition="$show['member']"> and <else /></if> tags from the template.
Now you can put it on any of your CMPS pages just like the other modules.
I'm sure that there's a better way to do it by including a file or something and someone who knows what they're doing can probably do it without adding a query but I couldn't. I just started messing around with this PHP stuff about 6 days ago when I installed vBulletin.
Hope it helps. It works on my board. :squareeyed:
CD