Quick Chat

License

Quick Chat is released under GPLv2 license.

Quick Chat Demo

LOADING...

Description

WordPress has given a lot to the Linux community and to me personally so I've decided to give something back by making WordPress plugin for all of us to use. We all like to chat so I've decided to extend WordPress with quick and lightweight Ajax chat plugin. I've also decided to name this WordPress plugin "Quick Chat".

Features

Here are some of the features of Quick Chat WordPress chat plugin:

  • New in v4.10: Implement automatic private messages and chat rooms daily cleanup using WordPress cron API
  • Add PHP caching WordPress plugins like WP Super Cache or W3 Total Cache compatibility (See FAQ for more)
  • Add feature to configure which WordPress user role has Quick Chat moderator capability
  • Avoid losing CSS customizations after Quick Chat update (See FAQ for more)
  • Supports Quick Flag WordPress plugin to display country flag icons next to chat nicknames
  • You can set timeout for disabling updates to inactive user
  • Supports multiple private 1 on 1 chat sessions
  • Can filter bad words from your chat rooms
  • Admin users can easily download chat room transcripts
  • Besides gravatar.com avatars, local avatar plugins are also supported
  • Includes admin dashboard widget to chat with other admin users from your site backend
  • Has message input box character counter to limit message size
  • Allows admin users to instantly ban chat participant IP from chat
  • Has chat participants list for both sidebar and embedded chat
  • Site registered users can have their chat nicknames reserved
  • Site admins can reserve additional list of chat nicknames
  • Supports incoming messages sound notification for modern browsers
  • Supports unlimited number of separate chat rooms
  • User interface is translation friendly (translation template, Croatian, Italian, Czech, Romanian, Spanish, Dutch, Chinese, Russian, Brazilian Portuguese, Danish, German, Slovenian, Ukrainian, Estonian, French, Finnish and Welsh (some partial) translation files provided)
  • Integrates with WordPress user accounts to use login name as chat nickname
  • Comes with quality set of emoticons to spice up your chat experience
  • Saves your website bandwidth by sending AJAX requests only when there are new messages

Requirements

  • PHP 5
  • Requires at least: WordPress 3.3
  • Tested up to: WordPress 3.6
  • Current version: Quick Chat 4.13

Installation

You can find up to date installation instructions on Quick Chat WordPress.org installation page.

FAQ

You can find up to date FAQ on Quick Chat WordPress.org FAQ page.

Changelog

You can find up to date change log on Quick Chat WordPress.org changelog page.

Your donations

Quick Chat is open source web application created by single person and released under GPLv2 license. This means that you can use or even modify Quick Chat free of charge. Open source development and user support for my WordPress plugins takes at least few hours of my every day so if you find Quick Chat useful you can donate to help it's development. Thanks in advance.

Your feedback

Your feedback would be very appreciated. If you discover any bugs please describe your problem here or using Contact form and I will do my best to resolve it. Feature requests and comments are also welcome and I will try to fulfill any feature requests.

Quick Chat stable version

Quick Chat is hosted by official WordPress plugin directory so that is where you can get it:

DOWNLOAD Quick Chat 4.13 from WordPress.org

Quick Chat next version

If you have time and want to help making Quick Chat better you can test Quick Chat testing versions on your server and post feedback. Quick Chat version posted here will be uploaded to WordPress.org once it is reasonably stable.

Not yet available.

Changelog:

  • Not yet available.

Download:

  • Not yet available.

Quick Chat old versions

If latest Quick Chat version isn't working for you, here you can find download links to some of the older Quick Chat versions. I recommend that you use latest version if possible:

DevGenii

A quality focused Magento specialized web development agency. Get in touch!

1,481 thoughts on “Quick Chat

  1. Marko Author

    @jl

    Hi, I agree. I’m one of those users wanting list of chat users:) But now I don’t have time to start something like that, maybe in a few days. If anyone is interested to assist please do πŸ™‚ WP useronline is great and can be used until then. The bad thing is that list of chat users will increase Quick Chat bandwidth consumption and strain on server but there will be an option to turn it off. Cheers!

    Reply
  2. Austin

    @Marko Hello Again, Marko Can you please give me the code you used to print the username of the user who posted that message. I want to replace the default link of the user name (that reply feature @username) with a link to Buddypress profile of the user. I tried the Current_user->User_login thing but it printed the username of the current logged in member instead of the user posted the message… If I get that code then I’ll be able to complete Quick Chat for Buddypress user.. Or I( should Say a Buddypress Edition)

    Thanks!

    Reply
  3. fastharry

    Hi Marko…

    looks like 7000 in the value was the sweet spot….The website loads in 4 seconds and has been great all morning. I will continue testing but I don’t foresee any problem…

    If anyone is having that spinning wheel problem with Chrome, even after updating to the latest plug in version, try the advice Marko gave me a few posts back…

    Thanks for the great support!….do me a favor, try the site on your end and let me know what you think…

    Reply
  4. Austin

    @Marko
    Thanks for the help via email, I need to tell you that the line number you told me and the line number I see are completely different, I have figured out most of the lines that needs to be edited except the one you refereed as line 332, after which the ‘foreach’ variable is to be given, I think it is after the ‘exit;’ command of the quick-chat.php file, but not sure. Can you please tell me the line after which the Variable is to be defined.

    Thank you!

    Reply
    1. Marko Author

      Here are the lines 329 to 334 from quick-chat.php 1.72:


      // there is an update
      foreach($history as $v){
      $v->timestring = date_i18n(...);
      }
      echo json_encode(array('success'=>1,'updates'=>$history));
      exit;

      echo json_encode sends the array of message updates called $history. You need to modify $history array with your url string before being sent to the browser. So you should place your in the existing foreach I’m using for time display, all like this:


      // there is an update
      foreach($history as $v){
      $v->timestring = date_i18n(...);

      // YOUR CODE HERE
      $v->profilelink = link to this users profile using BP functions;
      }
      echo json_encode(array('success'=>1,'updates'=>$history));
      exit;

      Reply
  5. fastharry

    Marko :
    @fastharry
    Great you got it working! Lets hope Google resolves this problem with Chrome / Chromium for good . Cheers!

    Just tested it again, works like a charm….It is a shame about google, but I think that is the way of the world. I notice google browser takes longer to load than FF and X, and the favicons in the bookmarks take even longer.

    I have been playing with other sites besides mine and there are some that take longer to load with over 1 meg of info. And these are modern popular sites.There is definitely a trend in designing sites that is favoring high speed connections and PC’s that have up to date modern processors. You can see it with browsers, pages with a ton of graphics, even the anti virus software is written with modern specs in mind…Heck, xbox live takes 3 times longer to load than my site with all the graphics on display…and MS is a software company.

    I tell you something else I learned. All the facebook like buttons and social media connects are slowing sites down too….They all have to connect to the source page so it is almost like you are loading 20 pages when you are really loading one…

    The way of the world I guess…

    Reply
  6. Marko Author

    @fastharry

    Yes all those like buttons slow page drastically. That is why TechyTalk have none of them. Yesterday I’ve added Google plusone (manually, no bloated plugin) but I’m considering to remove it. Also the problem is that people are using say 10 WP plugins that have say 100 features and they use 15 of those features. But everything has to load every time. So the best way is to avoid unnecessary stuff and if you need some functionality to make your own plugin or strip existing plugins of excess functionality. Cheers!

    Reply
  7. Marko Author

    @Austin

    $v->profilelink is nothing more than string containing url if that is what you ask? For example $v->profilelink = 'http://www.techytalk.info'; could be example of string you send to the browser and access it using updates[i].profilelink from javascript part. Your job is to construct that string using BuddyPress functions or manually if you can find regular pattern in BP user profile URLs (I don’t know how those BP urls look like). In this process you will probably need $v->alias or something unique to be a part of this string.

    Reply
  8. fastharry

    Austin :
    @fastharry Harry I have a Gzip code to be placed in .htaccess of your WordPress Blog that will magically speed up your website, if you want then I can give it to you.

    Hi Austin…I read up on gzip…but I am not real savvy when it comes to code. I went into my file manager on hostgator and found this file under hta access…

    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    # END WordPress

    is that the right file and where exactly do I place the gzip code…..Thanks

    Reply
  9. fastharry

    Marko :
    @fastharry
    Yo have that option in Cpanel, something like Gzip compression, sniff around. It will ad that code to the appropriate place…

    Thanks marko…I saw their are also plug ins for WP too….I have to tell you, all this stuff is amazing!

    Reply
  10. Austin

    @fastharry
    Yeah that’s the one, it’s the Htaccess file or simply you can find it in the root directory of your WordPess install via FTP (Not Cpanel File manager). The code you see in this file is actually code placed by WordPress for Permalink structure and you can paste the code after the #END WordPress line after pressing enter.

    @Marko
    The option in Cpanel is actually for compressing the site content, which is like very slow and Lzip compression, which is not better then Gzip.

    Reply
  11. bien

    help i get this error

    Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in /homepages/33/d356211435/htdocs/wp-pesoexchanger/wp-content/plugins/quick-chat/quick-chat.php on line 119

    Reply
  12. Austin

    @bien
    Have you tried deactivating the plugin and re-installing it? Or Maybe you have edited the original coding of your QC version, that is causing the problem.

    Try Re-installing it.

    Reply
  13. mike

    Hi Marko,

    I just installed the latest quick chat, and wow! It’s great! My little jQuery issue is resolved, and the new features are great. Thanks again for all your hard work.

    I hope all is well…

    Regards,
    Mike.

    Reply
  14. DaveStrand

    Hello, I was hoping you could help me resolve that footer issue you were talking about where the chat window doesn’t show text entered until I refresh the page, and then it’s okay. The site is linked above, and I tried to paste the

    but it didn’t work.

    Thanks much,
    -Dave

    Reply
  15. Shep

    I love the looks and feel – but it has slowed my site down considerably – is there a fix or tweek. I would love to keep it on my site….

    Reply
  16. Marko Author

    @Shep

    Hi Shep, can you please elaborate? Are the pages loading longer? Every browser or just one of them? Can you post link or send it to me using contact form if it is private site? Thanks

    Reply
  17. Shep

    I am using Chrome – theme is compatible (footer etc). When I activate Quick Chat (widget) – which by-the-way is beautiful on my site – it slows down every page because it appears with every page in the sidebar.

    When disabled – speed is back up. I am a bit bummed because I have tried just about every chat out there and by far your is the slickest.

    The site is very private and I don’t want to activate the widget unless I am sure you will be right on the site to check it out. I can create a “test account” but it would have limited access. Let me know what to do next πŸ™‚

    Thanks,
    Shep

    Reply
  18. Marko Author

    @Shep

    I don’t understand what you mean by slow down? If you count Google Chrome loading circle spinning for a long time as slow down, this is a Google Chrome bug with types of web applications like QC that use long polling technique (http://code.google.com/p/chromium/issues/detail?id=77060). The fact that Google Chrome is spinning its loading indicator doesn’t mean that your page hasn’t loaded, just that Google Chrome has a little bug that I hope will be fixed soon. Is this the problem?

    Reply
  19. Shep

    @Marko

    Thanks Marko for trying to help. What I mean is that each and every page takes longer to load. My index page alone takes 2-3times as long to load as it does without the plugin. Once I disable the widget – quick load time come right back.

    Reply
  20. Marko Author

    @Shep

    This behavior isn’t typical. Maybe if you send me your page link using contact form I might be able to help. I’ve got reports of Quick Chat working fine on sites with as much as 100 concurrent users chatting, does your site has more than that?

    Reply
  21. A Fan

    Marko,

    I have been using the plugin with good success on my website. I have one important suggestion that I believe would improve page load times, and thus Google Page rankings. This would be to load all of Quick Chat’s JavaScript asynchronously, and only on the pages it needs.

    Right now, all the Quick Chat JS is loaded on *every* page on a site, even if only one page actually has the quick chat widget or shortcode. For high performance sites, this is not ideal. Here is my suggested remedy:

    1. Remove all the wp_enqueque_script calls for the 3 JavaScript files. This will eliminate the loading on every page problem.

    2. In whatever function you are using to write out the “quick_chat_js_vars” add this type of code right below that:

    ===========

    // Load JavaScript asynchronously and only when needed
    jQuery(document).ready(function() {
    jQuery.getScript( “script1-url” );
    jQuery.getScript( “script2-url” );
    jQuery.getScript( “script1-url” );
    ));

    ===========

    This will ensure the JS only gets loaded when needed (only on a page with the shortcode/widget) and will be loaded asynchronously.

    Reply
  22. Marko Author

    @A Fan

    Hi! I thought about this a lot. In the “next” version I’m loading all scripts with wp_enqueue but I’m not doing any processing if there isn’t any chat on page. This what you have recommend sounds even better. I will do some goggling and if I manage to integrate async js loading it would be great. You always have good tips, thanks for helping out i appreciate it πŸ™‚

    Reply
  23. A Fan

    @Marko

    I’m happy to help, Marko. I have been learning about the power of asynchronous JavaScript recently and have been trying to put it to good use.

    With WordPress, it is so easy to load up a site on plugins, but I find that then the clients end up loading all these JavaScript files they don’t need all the time. One factor is Google page ranking is the page load speed, so anything we can do to decrease that should improve not only the user experience, but also the site’s ranking. It’s a win-win.

    Reply
  24. Marko Author

    @A Fan

    All you write is true. The problem with wp_enqueue is that it must go very early during page load and at that time I can’t know is there QC on the page or not. To pull Js from the client side looks like brilliant idea but I must work out the details. I’m puzzled that I must wp_equeue one little script that checks is there QC on the page and then pulls the real thing from the server, am I correct? Thanks

    Reply
  25. Anonymous

    @Marko

    Marko,

    You shouldn’t need to use wp_enqueue_script at all. I would simply manually code up the sample I provided in your Quick_Chat::widget() PHP function. You could actually print out the script anywhere in your function. It might make sense to do so around line 410, right before you print out the widget.

    Also, you may want to look into displaying all the emoticons as a CSS sprite rather than a bunch of individual images. That would speed up load time as well by reducing the number of HTTP requests (probably the #1 factor in page load time).

    Reply
  26. Marko Author

    @Anonymous

    Isn’t echoing jQuery.getScript jQuery calls in my JS php function practically same as WP enqueueing little script named like qcjsloader.js with the same jQuery.getScript stuff that loads real QC logic? Also I’m afraid that the speed difference would be small and pause between loading page and QC becoming operational would increase because of .getScript ajax calls? About using CSS sprite I totally agree and I will implement this for sure.

    Thanks for your comments and ideas πŸ™‚

    Reply
  27. A Fan

    @Marko

    Marko,

    I was looking at an older version of your code, so the line number was incorrect. Sorry for any confusion. This code should go on line 718 of the quick_chat_display_chat() function. Here is the PHP code for you:

    ======
    echo ‘
    jQuery(document).ready(function() {
    jQuery.getScript( “‘ . $quick_chat_url. ‘js/modernizr.min.js’ . ‘” );
    jQuery.getScript( “‘ . $quick_chat_url. ‘js/quickchat.js’ . ‘” );
    ));
    ‘;
    ======

    To the point you bring up above, by default, all calls to wp_enqueue_script generate a tag in the HTML . This means the browser will “block” and download these scripts in a synchronous manner before loading all the remaining page elements such as images and other scripts. You seem to load the Quick Chat JS in the footer, which is good. But the browser still has to wait to load that JavaScript before the page load is complete.

    In practical purposes, this means the more plugins that use wp_enqueue_script, the slower each WordPress site becomes. And by slower, I mean the page loading takes more time.

    Having any script loaded by wp_enqueue_script will slow down page load by increasing the number of blocking HTTP requests. Essentially, no matter how small your “qcjsloader.js” script would be, it would still be preventing the browser from performing another more important task, such as the page load event.

    Quick Chat doesn’t need to be loaded immediately upon page load. Or you could have an administration option that says “Load Quick Chat Asynchronously” that would enable asynchronous loading.

    Asynchronous loading does not block the browser from downloading any other elements. The Quick Chat JavaScript loading can take place after the page load event, hence the use of jQuery(document).ready(). This means that the page will load faster since it won’t download your three JS files before this event takes place. Which also means better user experience and better search rankings.

    See additional details on improving performance here:

    http://developer.yahoo.com/performance/rules.html

    You may also want to look into minifying your JavaScript before you distribute it with your plugin. This may help with performance slightly by reducing the JS file size. I know it’s a nit-picky detail, but then you would really be adhering to the best practices.

    You can use Google’s awesome Closure Compiler to minify JS. Here is a link to the online version of it:

    http://closure-compiler.appspot.com/home

    Just copy and paste all your JS in there and it will spit out the optimized version.

    Reply
  28. Marko Author

    @A Fan

    Thanks for detailed instructions. I totaly agree about providing minified version of JS, I have a few minifies at hand and I will decide which one to use. What I haven’t decided yet is to use async JS loading or not because I don’t know the degree of performance improvement and does it justify added complexity. If the getscript ajax call fails for any reason QC is dead in the water without JS. I must think about it, anyways thanks again and wish you all best.

    Reply
  29. Marko Author

    Quick Chat development update – littleantz user from WP.org forum proposed something like following Quick Chat options: “Disallow logged in users user names to be used by other users” and I plan to add “Reserved chat user names list (comma separated)”. Thanks littleantz for your input πŸ™‚ If anyone have any suggestions about this features feel free to share. For the “Reserved chat user names list” I’ve planed to add “admin” and “moderator” by the default, anything else to add?

    Reply
  30. jl

    Hi Marko,
    The users at the site are chatting up a storm every day and night, which is writing an enormous log. If I don’t go in the once a day and delete all the messages, peopel report long load times. What do you guys do? Do you have to delete the contents of the chat rooms manually, or do you have something else in place to do this. Seems like that might be useful to have something that deletes the messages at a specified interval.
    Many people that use to chat there are returning to the site and since they can chat on iPads, etc. even better. I implemented the WP users plugin as a temp fix for a list of people on the page, but that does not keep track in real time. You hae to reload the page once in a while. A user list in quick chat would be the best.

    Reply
  31. Marko Author

    @jl

    Hi jl. If you look at Quick Chat admin options in the “General options” section you will find option named “Keep number of messages(all rooms combined) automatically around this value”. There you enter number of messages and QC will keep message count around this number.

    As for user list I’m doing it all in my free time so I can’t promise timing but this feature will find its way into QC in not so distant future. Wish you all best πŸ™‚

    Reply
  32. Marko Author

    Hi people. After spending three days, 8-10 hours a day working on it, here on TechyTalk info you can see beta for Quick Chat v1.80. Code-wise it is one of the biggest changes in QC history so it requires little testing before I upload it to WordPress.org. Here is short changelog:

    * Add “Protect registered users user names from being used by other users” admin option
    * Add “Restricted chat user names list (comma separated)” admin option
    * Additional steps to protect chat against malicious users
    * Ajax logic rewritten to use admin-ajax.php
    * Ajax calls secured using WordPress nounces

    Please test and report here on your findings. You can try to use usernames “admin”, “moderator” that are on the “Restricted chat user names list” by default. This way you can test how it works. Also you can try to use name “marko” (registered user), note that all names are not case sensitive so if “marko” is restricted so is “mArKo”. If new logic works fine, you shouldn’t be allowed to use those names. Thanks for any donation, it would be appreciated πŸ˜‰

    Reply
  33. Dmitriy

    Hi!
    I want to use QC widget, but in my case I need different “room” for each page/post.
    I tried to customize your php-code, by replace “default” room by $url, but I have failed.

    Do you have any opinion how I can do different “room” for each page/post?

    Reply
  34. Marko Author

    @Dmitriy

    Hi! Using url for room name would be the best approach. Try to replace “$content = quick_chat_display_chat($height, $room);” from line 891 in Quick Chat 1.73 with “$content = quick_chat_display_chat($height, the_permalink());” but this is not the most efficient way tho go. I might implement this the proper way in one of the next QC versions πŸ˜‰
    Enjoy!

    Edit: Using $post->ID might be a better idea, more on WP codex http://codex.wordpress.org/Template_Tags/the_ID πŸ™‚

    Reply
  35. Marko Author

    @Dmitriy

    Hi, I’ve added this functionality to the Quick Chat 1.80 that I will publish today or tomorrow. I’ve implemented this in a way that if you put string “unique” as sidebar widget chat room name it triggers the behavior that this sidebar chat widget shows unique chat rooms for every post/page. When in home page it shows the “default” chat πŸ™‚

    Reply
  36. IgorOkCJ

    Hello! I have a problem: the administrator can delete the messages of other users! It seems as if the Delete button does not work! What would it be??

    Reply
  37. IgorOkCJ

    @Marko
    Administrator can not delete other posts! It seems everything is being done correctly: marked messages that I want to remove – Press “Delete” and as a result nothing happens! Messages are not deleted!

    Reply
  38. Marko Author

    @IgorOkCJ

    Hi! Unfortunately I can’t debug this without admin account on your site. I suppose you can’t provide me with one and I understand if you can’t. But I don’t know how else to see what goes wrong when you try to delete messages?

    Edit:Currently your page layout is totally broken. Also you should update Quick Chat to the latest version 1.82 uploaded today because you might be affected by QC CSS layout bug I’ve fixed today. Cheers

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *