![]() |
I am using JPilot for a chat client on my websites. I haven't found a great solution for showing what users are in the chat so I decided to code my own.
Live demo at : http://www.cgchat.com The users are listed at the top. The script seems to work well, but I haven't had time to take a look at much of the vbulletin code, so it does maybe need some work. Instructions: !Backup your vbulletin and site! Modify user table with the fallowing lines ALTER TABLE user ADD lastchatactivity int(10) unsigned DEFAULT '0' not null ALTER TABLE user ADD inchat smallint(4) DEFAULT '0' not null Whatever chat software you are using, you have to have it open in a new browser window. Create a page that has two frames. ============================= <html> <head> <title>Site Title.com</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <frameset rows="1,*" frameborder="NO" border="0" framespacing="0"> <frame name="topFrame" scrolling="NO" noresize src="mainchat_top.php" > <frame name="mainFrame" src="main_chat.php"> </frameset> <noframes><body bgcolor="#FFFFFF" text="#000000"> </body></noframes> </html> ============================= main_chat.php: This page has your chat client, in my case jpilot. mainchat_top.php: The top page has a page with this code: ============================= <?php require("global.php"); if( $bbuserid ) { $DB_site->query("UPDATE user SET inchat='1' WHERE userid='$bbuserinfo[userid]'"); $DB_site->query("UPDATE user SET lastchatactivity=$ourtimenow WHERE userid='$bbuserinfo[userid]'"); } else { } // end if ?><html> <head> <meta http-equiv="refresh" content="100; url=http://www.cgchat.com/board/mainchat_top.php"> </head> <body bgcolor="#0F1D2D"> <center><font face="Arial, Helvetica, sans-serif" size="2" color="#FFFFFF">Please leave this window open when you are in the CG Live Chat </font></center></body> </html> ============================= What this does is the top hidden frame refreshes every 100 seconds updating the database with the user in the chat. So if the users are using a chat client like mirc this won't show them that they are on the chat, unless you make a new page and point them to the code that updates the db like the code above. Now the printing isn't very well optimized for vbulletin. This is because I get confused when working with templates in vb , didn't have much time to play around with them yet. Anyway this is what I do: Create a new page call it : displaychatusers.php and place this code ------------------------------------------------ <? if ($showforumusers) { $datecut = $ourtimenow - $cookietimeout; $chatters = ''; $comma = ''; $forumusers = $DB_site->query("SELECT username, invisible, userid FROM user WHERE inchat = 1 AND lastchatactivity > $datecut"); while ($forumuser = $DB_site->fetch_array($forumusers)) { if (!$forumuser['invisible'] or $bbuserinfo['usergroupid'] == 6) { $userid = $forumuser['userid']; $username = $forumuser['username']; if ($forumuser['invisible'] == 1) { // Invisible User but show to Admin $invisibleuser = '*'; } else { $invisibleuser = ''; } eval("\$chatters .= \"".$comma.gettemplate('forumdisplay_loggedinuser' )."\";"); $comma = ', '; } } } ?> ------------------------------------------------ Now I include this page in the header of vbulletin, and echo $chatters in one of the templates. That's it. If you want to display the users in the forums I used GeorgeofCS previous code from his hack on digichat. Here is a paste: in forumdisplay.php at the very bottom the right above: eval("dooutput(\"".gettemplate('forumdisplay')."\" );"); add: // Get users chatting if ($showforumusers) { $datecut = $ourtimenow - $cookietimeout; $chatters = ''; $comma = ''; $forumusers = $DB_site->query("SELECT username, invisible, userid FROM user WHERE inchat = 1 AND lastchatactivity > $datecut"); while ($forumuser = $DB_site->fetch_array($forumusers)) { if (!$forumuser['invisible'] or $bbuserinfo['usergroupid'] == 6) { $userid = $forumuser['userid']; $username = $forumuser['username']; if ($forumuser['invisible'] == 1) { // Invisible User but show to Admin $invisibleuser = '*'; } else { $invisibleuser = ''; } eval("\$chatters .= \"".$comma.gettemplate('forumdisplay_loggedinuser' )."\";"); $comma = ', '; } } if ($chatters) { if (!$moderatedby) { $onlineusers = "<br>"; } eval("\$onlineusers .= \"".gettemplate('forumdisplay_loggedinusers')."\"; "); } } Next in forumdisplay_loggedinusers template change: <br>(Users Browsing this Forum: $browsers) to: <br>(Users Browsing this Forum: $browsers) <br>(Users In Chat: $chatters) Thats it, if you have any suggestions or extra info let me know. It seem to be a little delayed, and sometimes when a user leaves a chat it still prints there name in chatters , it has to do something with the lastactivity and cookietimeout. I stole that from GeorgeofCS code and it seems to work quite well. Let me know what you think. Cheers Dom dominik@insidecg.com www.insidecg.com www.cgchat.com |
Hi Dom,
This hack looks hugely encouraging. I'm not keen to be the first person to try it. I'm also using vbPortal and would like to include this information in a side block, if possible. My main concern before installing it would be speed - how does this affect loading time of your forums? Have you noticed much difference? What has been the response of your users? Cheers for now, Ross |
I know solution to the delay, but seeing that everyone just "steals" my code and re-releases it without asking first I'll keep the information for myself. :mad: Cause frankly if you had asked I would have told you the code doesn't work quite well for refreshing.
|
If part of this hack hack does user GeorgeofCS's code, and he hasn't been asked or credited then this hack should be removed.
|
The reason I posted this is no body has made a good solution for showing who is in the chat when using vbulletin.
The code works fine with reloading and I don't see any performance changes. It works well. As for the code I stole, it was only the ---- if ($showforumusers) { $datecut = $ourtimenow - $cookietimeout; $chatters = ''; $comma = ''; $forumusers = $DB_site->query("SELECT username, invisible, userid FROM user WHERE inchat = 1 AND lastchatactivity > $datecut"); while ($forumuser = $DB_site->fetch_array($forumusers)) { if (!$forumuser['invisible'] or $bbuserinfo['usergroupid'] == 6) { $userid = $forumuser['userid']; $username = $forumuser['username']; if ($forumuser['invisible'] == 1) { // Invisible User but show to Admin $invisibleuser = '*'; } else { $invisibleuser = ''; } eval("\$chatters .= \"".$comma.gettemplate('forumdisplay_loggedinuser' )."\";"); $comma = ', '; } } } ------ I would have rewrote, but why do it if one is already main availble. I have noted it's your code. I really don't care if you or I made it. I am not here for competition! I am here to offer some sort of solution to your problems. I mentioned your name. ITS GEORGEOFCS CODE!!! Yes those 10 lines are his code. It works well. If he won't allow you to use it, I will write my own. I am sorry for the missunderstanding, I thought this is a community for sharing ideas. Seems to me it's a popularity spike. I am not selling the code, so don't worry no million is going to arrive at my door. Cheers -Dom |
Dom- great script im deffinetly going to use it but can you please post a link to the jpilot hack you used? I have a copy of jpilot and have been using it in a different way on my board and want to intergreat it like you did.
Hi stan |
You are going to have to tell me exacthly what you mean. All you have to do is make a button in one of the templates to open a new window that frame window.
|
Great! Thanks for sharing. Gonna install this one later.
|
The point of my post is at least you could have asked me first. Not so much because I don't want you taking my hack, but rather there's bugs in my code and the better version was to be release within the next day or so, and it's bug free and not beta.
|
I am sorry Goerge , I should have asked you are right. If you do have a new version do share it with us if you like. I didn't proclaim the code as being mine, so I really didn't think it would matter to you even if I mentioned your name.
Again sorry. There seems to be a slight delay in a post however. It displays the users in the chat, but they are no longer there. It does have something to do with your code and cookietimeout time stamp. -Dom |
Dom,
I'm trying to install this hack but having difficulty now. Quote:
I've tried to put them in phpinclude by adding a line of "include (./displaychatusers.php)" and it works only in forumdisply.php but showtread.php can't be viewed since then. Thanks in adv. Jisung |
Just wondering. I saw the word refresh. I would like to have someway to see who's in chat but the refresh thing bothers me. Can you here the refresh clicks while you are in chat? If not I will install this and try it on 2.2.2 .. I just dont like that clicking sound from the refresh. Thanks :)
|
No clicking sound.. Great!!.. You have to wait on the cookie to clear to be shown as logged out of the chat. I found an alternative and that was to add a popup on exit to the frameset. Then I created another php file I named chat_logout.php ..
The frameset looks like this: <html> <head> <title>Site Title.com</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <SCRIPT LANGUAGE="JavaScript"> <!-- Begin function leave() { window.open('http://www.Your-Site.com/chat_logout.php','','toolbar=no,menubar=no,locatio n=no,height=204,width=700'); } // End --> </SCRIPT> </head> <frameset onUnload="leave()" rows="1,*" frameborder="NO" border="0" framespacing="0"> <frame name="topFrame" scrolling="NO" noresize src="mainchat_top.php" > <frame name="mainFrame" src="main_chat.php"> </frameset> <noframes><body bgcolor="#FFFFFF" text="#000000"> </body></noframes> </html> The new php file looks like this: <?php require("global.php"); if( $bbuserid ) { $DB_site->query("UPDATE user SET inchat='0' WHERE userid='$bbuserinfo[userid]'"); $DB_site->query("UPDATE user SET lastchatactivity=$ourtimenow WHERE userid='$bbuserinfo[userid]'"); } else { } // end if ?> <head> <title>Chat Log-Out</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <BODY onLoad="setTimeout(window.close, 5000)" </body> </html> The chat_logout.php is the pop up. The settings above are for 5 seconds. You can customize the body of the pop up to look like you want.. I made mine match my vb and it basically says that you have succesfully logged out of chat. The pop up above is blank. This logs you straight out of the chat with no waiting on cookies and will do me till I see a better solution. |
im having the same problem as jisung
How do i include displaychatusers.php in the header and isnt $chatters already echo'd later on in the hack. Any way any help is appreciated. |
Quote:
It depends on where you want it to be.. Mine is at the bottom of my boards under private messages. I included mine in my forumhome_pmloggedin template but I wanted mine where it wasnt visible unless you are looged in. Guest dont see it. I just added this to the bottom of the template. <tr id="cat"> <td bgcolor="#606096" colspan="6"><smallfont color="#FFF788"><b>Current Chatters </b></smallfont><smallfont color="#FFF788"></smallfont></td> <tr> <td bgcolor="#F1F1F1" colspan="6"><smallfont>$chatters</smallfont></td> </tr></tr> in root/index.php I put: require('./displaychatusers.php'); right under: require('./global.php'); and thats all the changes I made to index.php. the second problem I was having problems with was when I added the part to show chatters in threads. If chatters were in chat. It would add everything twice to the top of the threads Instead of looking like this: (Moderated by: milo) (Users Browsing this Forum: Dave) (Users In Chat: Dave) it looked like this: (Moderated by: milo) (Users Browsing this Forum: Dave) (Users In Chat:) (Users Browsing this Forum: Dave) (Users In Chat: Dave) .. I got mine fixed. If you have this problem just pm me and I'll tell you what I did. Anyway, hope this helped you. :) My chat is open to guest if you would like to check it out:) It will not show guest as logged in though :( |
Is there anyway to make jpilot automatically log the chat users in under there name on the board.
Somthing like what is done in other scripts like <param name="NickName" value="{$bbuserinfo[username]}"> in the jpilot script. The way this current hack is set up the user gets to manually enter his name in. I want to know if its possiable to log them in automatically. Thanks in advance And thanks to PhotoGenie for the help it worked great |
Your param for that should look like this:
<param name="NickName" value="$bbuserinfo[username]"> Here is whate my applet code looks like: <applet archive="jirc_nss.zip" code=Chat.class width=700 height=365 > <param name="CABBASE" value="jirc_mss.cab"> <param name="LicenseKey" value="Your License key"> <param name="ServerPort" value="6667"> <param name="ServerName1" value="Your server"> <param name="Channel1" value="Your Channel name"> <param name="AllowURL" value="true"> <param name="AllowIdentd" value="true"> <param name="WelcomeMessage" value="Your Welcome message"> <param name="RealName" value="Use anything here"> <param name="NickName" value="$bbuserinfo[username]"> <param name="UserName" value=""> <param name="isLimitedServers" value="true"> <param name="isLimitedChannels" value="true"> <param name="ChannelPasword" value=""> <param name="IgnoreLevel" value="3"> <param name="FilterKeys" value=":) :( :D :p ;) (cry) :B :O :o) :zz :{ (b) (coffee) (m) (cake) (h) (l) (moon) (note) (rose) (*) (d) (p) (gift)" /> <param name="FilterVals" value="smile.gif sad.gif biggrin.gif tounge.gif wink_smile.gif cry_smile.gif embaressed_smile.gif omg_smile.gif shades_smile.gif sleepy.gif angry_smile.gif beer_yum.gif coffee.gif martini_shaken.gif cake.gif heart.gif lightbulb.gif moon.gif musical_note.gif rose.gif star.gif thumbs_up.gif thumbs_down.gif present.gif" /> <param name="MessageCol" value="80"> <param name="BackgroundColor" value="99,132,181"> <param name="TextColor" value="black"> <param name="TextScreenColor" value="white"> <param name="ListTextColor" value="blue"> <param name="ListScreenColor" value="lightgray"> <param name="TextFontName" value="MS Sans Serif"> <param name="TextFontSize" value="11"> <param name="ConfigNickOnly" value="false"> <param name="NickNChannelOnly" value="true"> <param name="LogoBgColor" value="white"> <param name="BorderVsp" value="3"> <param name="DirectStart" value="true"> <param name="FGColor" value="black"> <param name="TitleBackgroundColor" value="black"> <param name="TitleForegroundColor" value="white"> <param name="InputTextColor" value="black"> <param name="InputScreenColor" value="white"> <param name="IgnoreLevel" value="3"> <param name="DisplayConfigRealName" value="false"> <param name="DisplayConfigServer" value="false"> <param name="DisplayConfigPort" value="false"> <param name="DisplayConfigMisc" value="false"> <param name="InitCommands" value="/clear;/me enters"> <param name="UserListWidth" value="160"> <param name="RefreshColorCode" value="false"> <param name="DisplaySoundControl" value="true"> <param name="NoConfig" value="true"> <param name="DisplayAbout" value="false"> <param name="IgnoreServerMsg" value="true"> <param name="IgnoreModeMsg" value="true"> <param name="IgnoreMOTD" value="true"> <param name="IgnoreChannelChangeMsg" value="true"> <param name="AllowSound" value="true"> </applet></td> </tr> </table> </td></tr></table> </body> </html> |
thanks for the help PhotoGenie
I just have one more problem i still keep getting erroneus name when loggin into the chat rooms It has somthing to do with <param name="NickName" value="$bbuserinfo[username]"> and it not calling the vb database correctly is there anyone that can help with this PLEASE thanks alot sk187 |
I got jpilot integrated and trying to figure out how to integrate this into it. my files are named different and I already have a pop up. Will this every be released?
The only things I may have to integrate is: Quote:
Can someone help me on this? I use this integration chat: https://vborg.vbsupport.ru/showthrea...threadid=33050 |
...I had a need for this sort of thing last year and the majority of the regular users in my chat now don't use the java client anymore so there was no accurate way to do it with mysql :) - So I just set up an eggdrop bot in the channel and have it running a simple TCL script I wrote that writes out the # of people in the channel to disk every time someone joins (didn't bother to have it do it when someone leaves - but that's easy to add too)
..then set up a crontab to copy the file over to my web directory (since the bot runs as user nobody) and within global.php have: $fd = fopen ("path/to/file_with_number_in_chat", "r"); $num_in_chat = fgets($fd, 3); fclose ($fd); ...then just insert $num_in_chat in a template or wherever and I have easy access to it.. |
Quote:
|
Quote:
|
Here is my crontab:
* * * * * root /path/to/file_to_run contents of file_to_run: /bin/cp /path/to/eggdrop/numchat.txt /path/to/yoursite.com/wherever Make sure to chmod 755 the file_to_run afterwards... I modified the peak eggdrop script (announces in channel whenever a new record is set for # of ppl in the channel) - I just added to line 31: Code:
set fid [open "numchat.txt" "WRONLY CREAT"] Then in your bot config file add: source scripts/peak1.5.tcl That's it :) Enjoy |
I followed the instructions for jPilot, added the include for displachatusers.php in my index.php the way explained and added the $chatters to my header, but nothing happens... Any idea why I can't see the people ?
|
Hm , is it possible that since 2.2.5 the $chatters wont work? I changed nothing, use the same templates, but the chatters are shown no more ... ??? I cant see any reason for this... but now noone is shown as chatting
|
Ok..so I'm working on a better integration with IRC.
Can I do the following: I want to pass a channel name as a parameter, and I want to know who is in that channel. This way, all the users are in "#ForumChat" will be displayed and there is also a "#ForumsAdmin" Channel, which will also be displayed. I DO NOT want to have one bot per channel, as the number of channels that I want to do this for can be infinite. So..it will show you who is in chat for all users, plus moderators can see who is in the #forumchat and if there is people in another channel, say #forumsadmin. Any thoughts? |
Just installed this hack, and I just can't get it working. I can get a chat section to come up on my forum's main page, but it's not listing any of the users in the chatroom at the time.
Help!!! Also, how would you get the number of users currently in the chat to display like the number of users online? |
Well whaddya know, I got it working! :)
Forgetting about displaychatusers.php I decided to go straight for index.php, into which I added this code... PHP Code:
PHP Code:
I managed to get the number of users currently in chat displayed as well. I just added this code to index.php: PHP Code:
Then added this to the bottom of the forumhome_loggedinusers template: Code:
<tr id="cat"> |
working quite well on 2.2.6 Thank you :)
Amy |
How do I make it so I can show the number of people in the chat? Fantastic hack btw!! :D
|
I'm wondering who has got this to work without having to clear your cookies everytime you leave the chat, in order to get the "who's chatting" updated. I saw the solution with the popup on the first page, but surely there is an automatic way...
|
Never mind, after awhile tinkering with the code I have finally got it to work :)
Simply perfect, I have it working with the IRC Bocazas chat hack and everything works fine. This hack causes no performance drop either, for those questioning this. Only thing I wish could be possible is if users using mIRC, or another chat client, could be picked up also..ofcourse that logically isn't possible with this hack. |
Quote:
[edit] Ok, I figured out how to find it in phpmyadmin, and my usergoupid's are the same, so now I don't know what I'm doing wrong....unless the db needs to be modified? I keep getting this db error when I try this: Invalid SQL: SELECT username,invisible,userid,usergroupid FROM user WHERE inchat=1 AND lastchatactivity>1041116216 ORDER BY invisible ASC, username ASC mysql error: Unknown column 'inchat' in 'where clause' mysql error number: 1054 Do I need to modify the db with this? ALTER TABLE user ADD lastchatactivity int(10) unsigned DEFAULT '0' not null ALTER TABLE user ADD inchat smallint(4) DEFAULT '0' not null If so, how do I do that? I do have phpmyadmin installed, but don't know much about it. :ermm: [edit2] AAAARRRRGGGHHHH!!! Well, I added those two to my user table, but it still didn't do anything. |
Yes, use phpMyAdmin. If you enter it, use this:
ALTER TABLE user ADD lastchatactivity int(10) unsigned DEFAULT '0' not null; ALTER TABLE user ADD inchat smallint(4) DEFAULT '0' not null A ";" was missing. Works great for me now.. but messes up another script. |
Thanks, I'll try it again then. What other script does it mess up, though? :disappointed:
|
The Top 5 Statistics hack.
In the "Top 5 Newest Members:", whenever someone joins the chat, it will put their name before the first new user. Conflict with $username. |
Ok cool. I don't use that hack anyway. :)
|
Hm, in VB 3 this gives a database eroor?
$DB_site->query("UPDATE user SET inchat='0' WHERE userid='$bbuserinfo[userid]'"); $DB_site->query("UPDATE user SET lastchatactivity=$ourtimenow WHERE userid='$bbuserinfo[userid]'"); |
Wahhh isnt it possible to rewrite that to VB3???
|
All times are GMT. The time now is 05:57 AM. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
![]() |
|
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|