Chat loading ...
Please wait

PHP FREE CHAT [powered by phpFreeChat-1.1]

The source code

/home/www/phpfreechat-1.1/demo/demo50_customized_usermetadata.php


<?php

require_once dirname(__FILE__)."/../src/phpfreechat.class.php";

$params["serverid"]    = md5(__FILE__); // calculate a unique id for this chat
$params["title"]       = "A chat which shows how to use user metadata : add avatar (images) to each connected users";
$params["nick"]        = "guest".rand(1,1000);
$params["nickmeta"]    = array("avatar" => "demo50_data/avatar".rand(1,9).".jpg");
$params["theme_path"]  = dirname(__FILE__)."/demo50_data";
$params["theme"]       = "mytheme";
$chat = new phpFreeChat$params );

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <title>phpFreeChat demo</title>
  </head>

  <body>
    <?php $chat->printChat(); ?>

<?php
  
// print the current file
  
echo "<h2>The source code</h2>";
  
$filename __FILE__;
  echo 
"<p><code>".$filename."</code></p>";
  echo 
"<pre style=\"margin: 0 50px 0 50px; padding: 10px; background-color: #DDD;\">";
  
$content file_get_contents($filename);
  
highlight_string($content);
  echo 
"</pre>";
?>
  
<?php
  
// print the current file
  
echo "<h2>The customized javascript</h2>";
  
$filename dirname(__FILE__).'/demo50_data/mytheme/customize.js.php';
  echo 
"<p><code>".$filename."</code></p>";
  echo 
"<pre style=\"margin: 0 50px 0 50px; padding: 10px; background-color: #DDD;\">";
  
$content file_get_contents($filename);
  
highlight_string($content);
  echo 
"</pre>";
?>

  </body>
</html>

The customized javascript

/home/www/phpfreechat-1.1/demo/demo50_data/mytheme/customize.js.php


pfcClient.prototype.updateNickWhoisBox = function(nickid)
{
    var className = (! is_ie) ? 'class' : 'className';

    var usermeta = this.getAllUserMeta(nickid);

    var div  = document.createElement('div');
    div.setAttribute(className, 'pfc_nickwhois');

    var p = document.createElement('p');
    p.setAttribute(className, 'pfc_nickwhois_header');
    div.appendChild(p);

    // add the close button
    var img = document.createElement('img');
    img.setAttribute(className, 'pfc_nickwhois_close');
    img.pfc_parent = div;
    img.onclick = function(evt){
      this.pfc_parent.style.display = 'none';
      return false;
    }
    img.setAttribute('src', this.res.getFileUrl('images/close-whoisbox.gif'));
    img.alt = this.res.getLabel('Close');
    p.appendChild(img);
    p.appendChild(document.createTextNode(usermeta['nick'])); // append the nickname text in the title

    // add the whois information table
    var table = document.createElement('table');
    var tbody = document.createElement('tbody');
    table.appendChild(tbody);
    var um_keys = usermeta.keys();
    var msg = '';
    for (var i=0; i<um_keys.length; i++)
    {
      var k = um_keys[i];
      var v = usermeta[k];
      if (v && k != 'nickid'
            && k != 'nick' // useless because it is displayed in the box title
            && k != 'isadmin' // useless because of the gold shield icon
            && k != 'floodtime'
            && k != 'flood_nbmsg'
            && k != 'flood_nbchar'
            && k != 'avatar'
         )
      {
        var tr = document.createElement('tr');
        var td1 = document.createElement('td');
        td1.setAttribute(className, 'pfc_nickwhois_c1');
        var td2 = document.createElement('td');
        td2.setAttribute(className, 'pfc_nickwhois_c2');
        td1.appendChild(document.createTextNode(k));
        td2.appendChild(document.createTextNode(v));
        tr.appendChild(td1);
        tr.appendChild(td2);
        tbody.appendChild(tr);
      }
    }
    div.appendChild(table);

    // append the avatar image
    if (this.getUserMeta(nickid,'avatar'))
    {
      var img = document.createElement('img');
      img.setAttribute('src',this.getUserMeta(nickid,'avatar'));
      img.setAttribute(className, 'pfc_nickwhois_avatar');
      div.appendChild(img);
    }
    
    // add the privmsg link (do not add it if this button is yourself)
    if (pfc.getUserMeta(nickid,'nick') != this.nickname)
    {
      var p = document.createElement('p');
      p.setAttribute(className, 'pfc_nickwhois_pv');
      var a = document.createElement('a');
      a.setAttribute('href', '');
      a.pfc_nickid = nickid;
      a.pfc_parent = div;
      a.onclick = function(evt){
        var nick = pfc.getUserMeta(this.pfc_nickid,'nick');
        pfc.sendRequest('/privmsg "'+nick+'"');
        this.pfc_parent.style.display = 'none';
        return false;
      }
      var img = document.createElement('img');
      img.setAttribute('src', this.res.getFileUrl('images/openpv.gif'));
      img.alt = document.createTextNode(this.res.getLabel('Private message'));
      a.appendChild(img);
      a.appendChild(document.createTextNode(this.res.getLabel('Private message')));
      p.appendChild(a);
      div.appendChild(p);
    }

    this.nickwhoisbox[nickid] = div;  
}