WordPress.org

Plugin Directory

Changeset 381641


Ignore:
Timestamp:
05/06/11 09:27:27 (3 years ago)
Author:
mohanjith
Message:

Plugin file rename

Location:
chat/trunk
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • chat/trunk/chat.php

    r381183 r381641  
    1 <?php 
    2 /* 
    3  Plugin Name: Chat Lite 
    4  Plugin URI: http://premium.wpmudev.org/project/wordpress-chat-plugin 
    5  Description: Provides you with a fully featured chat area either in a 
    6 post, page or bottom corner of your site - once activated configure <a 
    7 href="options-general.php?page=chat">here</a> and drop into a post or 
    8 page by clicking on the new chat icon in your post/page editor. 
    9  Author: S H Mohanjith (Incsub) 
    10  WDP ID: 223 
    11  Version: 1.0.4 
    12  Stable tag: trunk 
    13  Author URI: http://premium.wpmudev.org 
    14 */ 
    15 /** 
    16  * @global  object  $chat   Convenient access to the chat object 
    17  */ 
    18 global $chat; 
    19  
    20 /** 
    21  * Chat object (PHP4 compatible) 
    22  *  
    23  * Allow your readers to chat with you 
    24  *  
    25  * @since 1.0.0 
    26  * @author S H Mohanjith <moha@mohanjith.net> 
    27  */ 
    28 if (!class_exists('Chat')) { 
    29     class Chat { 
    30         /** 
    31          * @todo Update version number for new releases 
    32          *  
    33          * @var     string  $chat_current_version   Current version 
    34          */ 
    35         var $chat_current_version = '1.0.3'; 
    36          
    37         /** 
    38          * @var     string  $translation_domain Translation domain 
    39          */ 
    40         var $translation_domain = 'chat'; 
    41          
    42         /** 
    43          * @var     array   $auth_type_map      Authentication methods map 
    44          */ 
    45         var $auth_type_map = array(1 => 'current_user', 2 => 'network_user', 3 => 'facebook', 4 => 'twitter', 5 => 'public_user'); 
    46          
    47         /** 
    48          * @var     array   $fonts_list     List of fonts 
    49          */ 
    50         var $fonts_list = array( 
    51             "Arial" => "Arial, Helvetica, sans-serif", 
    52             "Arial Black" => "'Arial Black', Gadget, sans-serif", 
    53             "Bookman Old Style" => "'Bookman Old Style', serif", 
    54             "Comic Sans MS" => "'Comic Sans MS', cursive", 
    55             "Courier" => "Courier, monospace", 
    56             "Courier New" => "'Courier New', Courier, monospace", 
    57             "Garamond" => "Garamond, serif", 
    58             "Georgia" => "Georgia, serif", 
    59             "Impact" => "Impact, Charcoal, sans-serif", 
    60             "Lucida Console" => "'Lucida Console', Monaco, monospace", 
    61             "Lucida Sans Unicode" => "'Lucida Sans Unicode', 'Lucida Grande', sans-serif", 
    62             "MS Sans Serif" => "'MS Sans Serif', Geneva, sans-serif", 
    63             "MS Serif" => "'MS Serif', 'New York', sans-serif", 
    64             "Palatino Linotype" => "'Palatino Linotype', 'Book Antiqua', Palatino, serif", 
    65             "Symbol" => "Symbol, sans-serif", 
    66             "Tahoma" => "Tahoma, Geneva, sans-serif", 
    67             "Times New Roman" => "'Times New Roman', Times, serif", 
    68             "Trebuchet MS" => "'Trebuchet MS', Helvetica, sans-serif", 
    69             "Verdana" => "Verdana, Geneva, sans-serif", 
    70             "Webdings" => "Webdings, sans-serif", 
    71             "Wingdings" => "Wingdings, 'Zapf Dingbats', sans-serif" 
    72         ); 
    73          
    74         /** 
    75          * @var     array   $_chat_options          Consolidated options 
    76          */ 
    77         var $_chat_options = array(); 
    78          
    79         /** 
    80          * Get the table name with prefixes 
    81          *  
    82          * @global  object  $wpdb 
    83          * @param   string  $table  Table name 
    84          * @return  string          Table name complete with prefixes 
    85          */ 
    86         function tablename($table) { 
    87             global $wpdb; 
    88             // We use a single table for all chats accross the network 
    89             return $wpdb->base_prefix.'chat_'.$table; 
    90         } 
    91          
    92         /** 
    93          * Initializing object 
    94          *  
    95          * Plugin register actions, filters and hooks.  
    96          */ 
    97         function Chat() { 
    98          
    99             // Activation deactivation hooks 
    100              
    101             register_activation_hook(__FILE__, array(&$this, 'install')); 
    102             register_deactivation_hook(__FILE__, array(&$this, 'uninstall')); 
    103          
    104             // Actions 
    105              
    106             add_action('init', array(&$this, 'init')); 
    107             add_action('wp_head', array(&$this, 'wp_head'), 1); 
    108             add_action('wp_head', array(&$this, 'output_css')); 
    109             add_action('wp_footer', array(&$this, 'wp_footer'), 1); 
    110             // add_action('admin_head', array($this, 'admin_head')); 
    111             add_action('save_post', array(&$this, 'post_check')); 
    112             add_action('edit_user_profile', array(&$this, 'profile')); 
    113             add_action('show_user_profile', array(&$this, 'profile')); 
    114              
    115             add_action('admin_print_styles-settings_page_chat', array(&$this, 'admin_styles')); 
    116             add_action('admin_print_scripts-settings_page_chat', array(&$this, 'admin_scripts')); 
    117              
    118             // Filters 
    119             // From process.php 
    120             add_action('wp_ajax_chatProcess', array(&$this, 'process')); 
    121             add_action('wp_ajax_nopriv_chatProcess', array(&$this, 'process')); 
    122              
    123             // Only authenticated users (admin) can clear and archive 
    124             add_action('wp_ajax_chatArchive', array(&$this, 'archive')); 
    125             add_action('wp_ajax_chatClear', array(&$this, 'clear')); 
    126              
    127             // TinyMCE options 
    128             add_action('wp_ajax_chatTinymceOptions', array(&$this, 'tinymce_options')); 
    129              
    130             add_filter('wp_redirect', array(&$this, 'profile_process'), 1, 1); 
    131             add_filter('admin_menu', array(&$this, 'admin_menu')); 
    132              
    133             // White list the options to make sure non super admin can save chat options  
    134             add_filter('whitelist_options', array(&$this, 'whitelist_options')); 
    135              
    136             // Add shortcode 
    137             add_shortcode('chat', array(&$this, 'process_shortcode')); 
    138              
    139             $this->_chat_options['default'] = get_option('chat_default', array( 
    140                 'sound'         => 'enabled', 
    141                 'avatar'        => 'enabled', 
    142                 'emoticons'     => 'disabled', 
    143                 'date_show'     => 'disabled', 
    144                 'time_show'     => 'disabled', 
    145                 'width'         => '', 
    146                 'height'        => '', 
    147                 'background_color'  => '#FFFFFF', 
    148                 'date_color'        => '#6699CC', 
    149                 'name_color'        => '#666666', 
    150                 'moderator_name_color'  => '#6699CC', 
    151                 'special_color'     => '#660000', 
    152                 'text_color'        => '#000000', 
    153                 'code_color'        => '#FFFFCC', 
    154                 'font'          => '', 
    155                 'font_size'     => '12', 
    156                 'log_creation'      => 'disabled', 
    157                 'log_display'       => 'disabled', 
    158                 'login_options'     => array('current_user'), 
    159                 'moderator_roles'   => array('administrator','editor','author') 
    160                 )); 
    161              
    162             $this->_chat_options['site'] = get_option('chat_site', array( 
    163                 'site'          => 'enabled', 
    164                 'sound'         => 'enabled', 
    165                 'avatar'        => 'enabled', 
    166                 'emoticons'     => 'disabled', 
    167                 'date_show'     => 'disabled', 
    168                 'time_show'     => 'disabled', 
    169                 'width'         => '', 
    170                 'height'        => '', 
    171                 'border_color'      => '#4b96e2', 
    172                 'background_color'  => '#FFFFFF', 
    173                 'date_color'        => '#6699CC', 
    174                 'name_color'        => '#666666', 
    175                 'moderator_name_color'  => '#6699CC', 
    176                 'special_color'     => '#660000', 
    177                 'text_color'        => '#000000', 
    178                 'code_color'        => '#FFFFCC', 
    179                 'font'          => '', 
    180                 'font_size'     => '12', 
    181                 'log_creation'      => 'disabled', 
    182                 'log_display'       => 'disabled', 
    183                 'login_options'     => array('current_user'), 
    184                 'moderator_roles'   => array('administrator','editor','author'))); 
    185         } 
    186          
    187         /** 
    188          * Activation hook 
    189          *  
    190          * Create tables if they don't exist and add plugin options 
    191          *  
    192          * @see     http://codex.wordpress.org/Function_Reference/register_activation_hook 
    193          *  
    194          * @global  object  $wpdb 
    195          */ 
    196         function install() { 
    197             global $wpdb; 
    198          
    199             /** 
    200              * WordPress database upgrade/creation functions 
    201              */ 
    202             require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 
    203                  
    204             // Get the correct character collate 
    205             if ( ! empty($wpdb->charset) ) 
    206                 $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; 
    207             if ( ! empty($wpdb->collate) ) 
    208                 $charset_collate .= " COLLATE $wpdb->collate"; 
    209                  
    210             if($wpdb->get_var("SHOW TABLES LIKE '". Chat::tablename('message') ."'") != Chat::tablename('message')) 
    211             { 
    212                 // Setup chat message table 
    213                 $sql_main = "CREATE TABLE ".Chat::tablename('message')." ( 
    214                                 id BIGINT NOT NULL AUTO_INCREMENT, 
    215                                 blog_id INT NOT NULL , 
    216                                 chat_id INT NOT NULL , 
    217                                 timestamp TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' , 
    218                                 name VARCHAR( 255 ) CHARACTER SET utf8 NOT NULL , 
    219                                 avatar VARCHAR( 1024 ) CHARACTER SET utf8 NOT NULL , 
    220                                 message TEXT CHARACTER SET utf8 NOT NULL , 
    221                                 moderator ENUM( 'yes', 'no' ) NOT NULL DEFAULT 'no' , 
    222                                 archived ENUM( 'yes', 'no' ) NOT NULL DEFAULT 'no' , 
    223                                 PRIMARY KEY (`id`), 
    224                                 KEY `blog_id` (`blog_id`), 
    225                                 KEY `chat_id` (`chat_id`), 
    226                                 KEY `timestamp` (`timestamp`), 
    227                                 KEY `archived` (`archived`) 
    228                             ) ENGINE = InnoDB {$charset_collate};"; 
    229                 dbDelta($sql_main); 
    230             } else { 
    231                 $wpdb->query("ALTER TABLE ".Chat::tablename('message')." CHANGE name name VARCHAR( 255 ) CHARACTER SET utf8 NOT NULL;"); 
    232                 $wpdb->query("ALTER TABLE ".Chat::tablename('message')." CHANGE avatar avatar VARCHAR( 1024 ) CHARACTER SET utf8 NOT NULL;"); 
    233                 $wpdb->query("ALTER TABLE ".Chat::tablename('message')." CHANGE message message TEXT CHARACTER SET utf8 NOT NULL;"); 
    234                  
    235                 if ($wpdb->get_var("SHOW COLUMNS FROM ".Chat::tablename('message')." LIKE 'moderator'") != 'moderator') { 
    236                     $wpdb->query("ALTER TABLE ".Chat::tablename('message')." ADD moderator ENUM( 'yes', 'no' ) NOT NULL DEFAULT 'no' AFTER message;"); 
    237                 } 
    238             } 
    239              
    240             // Setup the chat log table 
    241             $sql_main = "CREATE TABLE ".Chat::tablename('log')." ( 
    242                             id BIGINT NOT NULL AUTO_INCREMENT, 
    243                             blog_id INT NOT NULL , 
    244                             chat_id INT NOT NULL , 
    245                             start TIMESTAMP DEFAULT '0000-00-00 00:00:00' , 
    246                             end TIMESTAMP DEFAULT '0000-00-00 00:00:00' , 
    247                             created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    248                             PRIMARY KEY (`id`), 
    249                             KEY `blog_id` (`blog_id`), 
    250                             KEY `chat_id` (`chat_id`) 
    251                         ) ENGINE = InnoDB {$charset_collate};"; 
    252             dbDelta($sql_main); 
    253              
    254             // Default chat options 
    255             $this->_chat_options['default'] = array( 
    256                 'sound'         => 'enabled', 
    257                 'avatar'        => 'enabled', 
    258                 'emoticons'     => 'disabled', 
    259                 'date_show'     => 'disabled', 
    260                 'time_show'     => 'disabled', 
    261                 'width'         => '', 
    262                 'height'        => '', 
    263                 'background_color'  => '#ffffff', 
    264                 'date_color'        => '#6699CC', 
    265                 'name_color'        => '#666666', 
    266                 'moderator_name_color'  => '#6699CC', 
    267                 'special_color'     => '#660000', 
    268                 'text_color'        => '#000000', 
    269                 'code_color'        => '#FFFFCC', 
    270                 'font'          => '', 
    271                 'font_size'     => '12', 
    272                 'log_creation'      => 'disabled', 
    273                 'log_display'       => 'disabled', 
    274                 'login_options'     => array('current_user'), 
    275                 'moderator_roles'   => array('administrator','editor','author')); 
    276              
    277             // Site wide chat options 
    278             $this->_chat_options['site'] = array( 
    279                 'site'          => 'enabled', 
    280                 'sound'         => 'enabled', 
    281                 'avatar'        => 'enabled', 
    282                 'emoticons'     => 'disabled', 
    283                 'date_show'     => 'disabled', 
    284                 'time_show'     => 'disabled', 
    285                 'width'         => '', 
    286                 'height'        => '', 
    287                 'border_color'      => '#4b96e2', 
    288                 'background_color'  => '#ffffff', 
    289                 'date_color'        => '#6699CC', 
    290                 'name_color'        => '#666666', 
    291                 'moderator_name_color'  => '#6699CC', 
    292                 'special_color'     => '#660000', 
    293                 'text_color'        => '#000000', 
    294                 'code_color'        => '#FFFFCC', 
    295                 'font'          => '', 
    296                 'font_size'     => '12', 
    297                 'log_creation'      => 'disabled', 
    298                 'log_display'       => 'disabled', 
    299                 'login_options'     => array('current_user'), 
    300                 'moderator_roles'   => array('administrator','editor','author')); 
    301              
    302             add_option('chat_default', $this->_chat_options['default']); 
    303             add_option('chat_site', $this->_chat_options['site'], null, 'no'); 
    304         } 
    305          
    306         /** 
    307          * Deactivation hook 
    308          *  
    309          * @see     http://codex.wordpress.org/Function_Reference/register_deactivation_hook 
    310          *  
    311          * @global  object  $wpdb 
    312          */ 
    313         function uninstall() { 
    314             global $wpdb; 
    315             // Nothing to do 
    316         } 
    317          
    318         /** 
    319          * Get chat options 
    320          * 
    321          * @param string $key 
    322          * @param mixed $default 
    323          * @param string $type 
    324          * @return mixed 
    325          */ 
    326         function get_option($key, $default = null, $type = 'default') { 
    327             if (isset($this->_chat_options[$type][$key])) { 
    328                 return $this->_chat_options[$type][$key]; 
    329             } else { 
    330                 return get_option($key, $default); 
    331             } 
    332             return $default; 
    333         } 
    334          
    335         /** 
    336          * Initialize the plugin 
    337          *  
    338          * @see     http://codex.wordpress.org/Plugin_API/Action_Reference 
    339          * @see     http://adambrown.info/p/wp_hooks/hook/init 
    340          */ 
    341         function init() { 
    342             if (preg_match('/mu\-plugin/', PLUGINDIR) > 0) { 
    343                 load_muplugin_textdomain($this->translation_domain, dirname(plugin_basename(__FILE__)).'/languages'); 
    344             } else { 
    345                 load_plugin_textdomain($this->translation_domain, false, dirname(plugin_basename(__FILE__)).'/languages'); 
    346             } 
    347              
    348             wp_register_script('chat_soundmanager', plugins_url('chat/js/soundmanager2-nodebug-jsmin.js'), array(), $this->chat_current_version); 
    349             wp_register_script('jquery-cookie', plugins_url('chat/js/jquery-cookie.js'), array('jquery')); 
    350             // wp_register_script('jquery-blockUI', plugins_url('chat/js/jquery.blockUI.js'), array('jquery')); 
    351             wp_register_script('chat_js', plugins_url('chat/js/chat.js'), array('jquery', 'jquery-cookie', 'chat_soundmanager'), $this->chat_current_version, true); 
    352              
    353             if (is_admin()) { 
    354                 wp_register_script('farbtastic', plugins_url('chat/js/farbtastic.js'), array('jquery')); 
    355                 wp_register_script('chat_admin_js', plugins_url('chat/js/chat-admin.js'), array('jquery','jquery-cookie','jquery-ui-core','jquery-ui-tabs','farbtastic'), $this->chat_current_version, true); 
    356                 wp_register_style('chat_admin_css', plugins_url('chat/css/wp_admin.css')); 
    357             } 
    358              
    359             if ((current_user_can('edit_posts') || current_user_can('edit_pages')) && get_user_option('rich_editing') == 'true') { 
    360                 add_filter("mce_external_plugins", array(&$this, "tinymce_add_plugin")); 
    361                 add_filter('mce_buttons', array(&$this,'tinymce_register_button')); 
    362                 add_filter('mce_external_languages', array(&$this,'tinymce_load_langs')); 
    363             } 
    364              
    365             // Need to stop any output until cookies are set 
    366             ob_start(); 
    367         } 
    368          
    369         /** 
    370          * Add the CSS (admin_head) 
    371          *  
    372          * @see     http://codex.wordpress.org/Plugin_API/Action_Reference/admin_head-(plugin_page) 
    373          */ 
    374         function admin_styles() { 
    375             wp_enqueue_style('chat_admin_css'); 
    376         } 
    377          
    378         function admin_scripts() { 
    379             wp_enqueue_script('jquery-cookie'); 
    380             wp_enqueue_script('farbtastic'); 
    381             //wp_enqueue_script('jquery-blockUI'); 
    382             wp_enqueue_script('chat_admin_js'); 
    383         } 
    384          
    385         /** 
    386          * Add the admin menus 
    387          *  
    388          * @see     http://codex.wordpress.org/Adding_Administration_Menus 
    389          */ 
    390         function admin_menu() { 
    391             add_options_page(__('Chat Plugin Options', $this->translation_domain), __('Chat', $this->translation_domain), 8, 'chat', array(&$this, 'plugin_options')); 
    392         } 
    393          
    394         /** 
    395          * Is Twitter setup complete 
    396          *  
    397          * @return  boolean         Is Twitter setup complete. true or false         
    398          */ 
    399         function is_twitter_setup() { 
    400             if ($this->get_option('twitter_api_key', '') != '') { 
    401                 return true; 
    402             } 
    403             return false; 
    404         } 
    405          
    406         /** 
    407          * Is Facebook setup complete 
    408          *  
    409          * @todo    Validate the application ID and secret with Facebook 
    410          *  
    411          * @return  boolean         Is Facebook setup complete. true or false        
    412          */ 
    413         function is_facebook_setup() { 
    414             if ($this->get_option('facebook_application_id', '') != '' && $this->get_option('facebook_application_secret', '') != '') { 
    415                 return true; 
    416             } 
    417             return false; 
    418         } 
    419          
    420         /** 
    421          * TinyMCE dialog content 
    422          */ 
    423         function tinymce_options() { 
    424             ?> 
    425             <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
    426             <html> 
    427                 <head> 
    428                     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    429                     <script type="text/javascript" src="../wp-includes/js/tinymce/tiny_mce_popup.js?ver=327-1235"></script> 
    430                     <script type="text/javascript" src="../wp-includes/js/tinymce/utils/mctabs.js?ver=327-1235"></script> 
    431                     <script type="text/javascript" src="../wp-includes/js/tinymce/utils/validate.js?ver=327-1235"></script> 
    432                      
    433                     <script type="text/javascript" src="../wp-includes/js/tinymce/utils/form_utils.js?ver=327-1235"></script> 
    434                     <script type="text/javascript" src="../wp-includes/js/tinymce/utils/editable_selects.js?ver=327-1235"></script> 
    435                      
    436                     <script type="text/javascript" src="../wp-includes/js/jquery/jquery.js"></script> 
    437                      
    438                     <script type="text/javascript"> 
    439                         var default_options = { 
    440                             id: "<?php print $this->get_last_chat_id(); ?>", 
    441                             sound: "<?php print $this->get_option('sound', 'enabled'); ?>", 
    442                             avatar: "<?php print $this->get_option('avatar', 'enabled'); ?>", 
    443                             emoticons: "<?php print $this->get_option('emoticons', 'disabled'); ?>", 
    444                             date_show: "<?php print $this->get_option('date_show', 'disabled'); ?>", 
    445                             time_show: "<?php print $this->get_option('time_show', 'disabled'); ?>", 
    446                             width: "<?php print $this->get_option('width', ''); ?>", 
    447                             height: "<?php print $this->get_option('height', ''); ?>", 
    448                             background_color: "<?php print $this->get_option('background_color', '#ffffff'); ?>", 
    449                             date_color: "<?php print $this->get_option('date_color', '#6699CC'); ?>", 
    450                             name_color: "<?php print $this->get_option('name_color', '#666666'); ?>", 
    451                             moderator_name_color: "<?php print $this->get_option('moderator_name_color', '#6699CC'); ?>", 
    452                             text_color: "<?php print $this->get_option('text_color', '#000000'); ?>", 
    453                             font: "<?php print $this->get_option('font', ''); ?>", 
    454                             font_size: "<?php print $this->get_option('font_size', '12'); ?>", 
    455                             log_creation: "<?php print $this->get_option('log_creation', 'disabled'); ?>", 
    456                             log_display: "<?php print $this->get_option('log_display', 'disabled'); ?>", 
    457                             login_options: "<?php print join(',', $this->get_option('login_options', array('current_user'))); ?>", 
    458                             moderator_roles: "<?php print join(',', $this->get_option('moderator_roles', array('administrator','editor','author'))); ?>" 
    459                         }; 
    460      
    461                         var current_options = { 
    462                             id: default_options.id+Math.floor(Math.random()*10), 
    463                             sound: "<?php print $this->get_option('sound', 'enabled'); ?>", 
    464                             avatar: "<?php print $this->get_option('avatar', 'enabled'); ?>", 
    465                             emoticons: "<?php print $this->get_option('emoticons', 'disabled'); ?>", 
    466                             date_show: "<?php print $this->get_option('date_show', 'disabled'); ?>", 
    467                             time_show: "<?php print $this->get_option('time_show', 'disabled'); ?>", 
    468                             width: "<?php print $this->get_option('width', ''); ?>", 
    469                             height: "<?php print $this->get_option('height', ''); ?>", 
    470                             background_color: "<?php print $this->get_option('background_color', '#ffffff'); ?>", 
    471                             date_color: "<?php print $this->get_option('date_color', '#6699CC'); ?>", 
    472                             name_color: "<?php print $this->get_option('name_color', '#666666'); ?>", 
    473                             moderator_name_color: "<?php print $this->get_option('moderator_name_color', '#6699CC'); ?>", 
    474                             text_color: "<?php print $this->get_option('text_color', '#000000'); ?>", 
    475                             font: "<?php print $this->get_option('font', ''); ?>", 
    476                             font_size: "<?php print $this->get_option('font_size', '12'); ?>", 
    477                             log_creation: "<?php print $this->get_option('log_creation', 'disabled'); ?>", 
    478                             log_display: "<?php print $this->get_option('log_display', 'disabled'); ?>", 
    479                             login_options: "<?php print join(',', $this->get_option('login_options', array('current_user'))); ?>", 
    480                             moderator_roles: "<?php print join(',', $this->get_option('moderator_roles', array('administrator','editor','author'))); ?>" 
    481                         }; 
    482                          
    483                         parts = tinyMCEPopup.editor.selection.getContent().replace(' ]', '').replace('[', '').split(' '); 
    484                         old_string = ''; 
    485                          
    486                         if (!(parts.length > 1 && parts[0] == 'chat')) { 
    487                             _tmp = tinyMCEPopup.editor.getContent().split('[chat '); 
    488                             if (_tmp.length > 1) { 
    489                                 _tmp1 = _tmp[1].split(' ]'); 
    490                                 old_string = '[chat '+_tmp1[0]+' ]'; 
    491                                 parts = (old_string).replace(' ]', '').replace('[', '').split(' '); 
    492                             } 
    493                         } 
    494      
    495                         if (parts.length > 1 && parts[0] == 'chat') { 
    496                             current_options.id = parts[1].replace('id="', '').replace('"', ''); 
    497      
    498                             for (i=2; i<parts.length; i++) { 
    499                                 attr_parts = parts[i].split('='); 
    500                                 if (attr_parts.length > 1) { 
    501                                     current_options[attr_parts[0]] = attr_parts[1].replace('"', '').replace('"', ''); 
    502                                 }    
    503                             } 
    504                         } 
    505      
    506                         var insertChat = function (ed) { 
    507                             output  ='[chat id="'+current_options.id+'" '; 
    508      
    509                             if (default_options.sound != jQuery.trim(jQuery('#chat_sound').val())) { 
    510                                 output += 'sound="'+jQuery.trim(jQuery('#chat_sound').val())+'" '; 
    511                             } 
    512                             if (default_options.date_show != jQuery.trim(jQuery('#chat_date_show').val())) { 
    513                                 output += 'date_show="'+jQuery.trim(jQuery('#chat_date_show').val())+'" '; 
    514                             } 
    515                             if (default_options.time_show != jQuery.trim(jQuery('#chat_time_show').val())) { 
    516                                 output += 'time_show="'+jQuery.trim(jQuery('#chat_time_show').val())+'" '; 
    517                             } 
    518                             if (default_options.width != jQuery.trim(jQuery('#chat_width').val())) { 
    519                                 output += 'width="'+jQuery.trim(jQuery('#chat_width').val())+'" '; 
    520                             } 
    521                             if (default_options.height != jQuery.trim(jQuery('#chat_height').val())) { 
    522                                 output += 'height="'+jQuery.trim(jQuery('#chat_height').val())+'" '; 
    523                             } 
    524                             if (default_options.font != jQuery.trim(jQuery('#chat_font').val())) { 
    525                                 output += 'font="'+jQuery.trim(jQuery('#chat_font').val())+'" '; 
    526                             } 
    527                             if (default_options.font_size != jQuery.trim(jQuery('#chat_font_size').val())) { 
    528                                 output += 'font_size="'+jQuery.trim(jQuery('#chat_font_size').val())+'" '; 
    529                             } 
    530                             var chat_login_options_arr = []; 
    531                             jQuery('input[name=chat_login_options]:checked').each(function() { 
    532                                 chat_login_options_arr.push(jQuery(this).val()) 
    533                             }); 
    534                             if (default_options.login_options != jQuery.trim(chat_login_options_arr.join(','))) { 
    535                                 output += 'login_options="'+jQuery.trim(chat_login_options_arr.join(','))+'" '; 
    536                             } 
    537                              
    538                             var chat_moderator_roles_arr = []; 
    539                             jQuery('input[name=chat_moderator_roles]:checked').each(function() { 
    540                                 chat_moderator_roles_arr.push(jQuery(this).val()) 
    541                             }); 
    542                             if (default_options.moderator_roles != jQuery.trim(chat_moderator_roles_arr.join(','))) { 
    543                                 output += 'moderator_roles="'+jQuery.trim(chat_moderator_roles_arr.join(','))+'" '; 
    544                             } 
    545                              
    546                             output += ']'; 
    547                              
    548                             if (old_string == '') { 
    549                                 tinyMCEPopup.execCommand('mceReplaceContent', false, output); 
    550                             } else { 
    551                                 tinyMCEPopup.execCommand('mceSetContent', false, tinyMCEPopup.editor.getContent().replace(old_string, output)); 
    552                             } 
    553      
    554                             // Return 
    555                             tinyMCEPopup.close(); 
    556                         }; 
    557                     </script> 
    558                     <style type="text/css"> 
    559                     td.info { 
    560                         vertical-align: top; 
    561                         color: #777; 
    562                     } 
    563                     </style> 
    564      
    565                     <title>{#chat_dlg.title}</title> 
    566                 </head> 
    567                 <body style="display: none"> 
    568                     <form onsubmit="insertChat();return false;" action="#"> 
    569                         <div class="tabs"> 
    570                             <ul> 
    571                                 <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');generatePreview();" onmousedown="return false;">{#chat_dlg.general}</a></span></li> 
    572                                 <li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{#chat_dlg.appearance}</a></span></li> 
    573                                 <li id="logs_tab"><span><a href="javascript:mcTabs.displayTab('logs_tab','logs_panel');" onmousedown="return false;">{#chat_dlg.logs}</a></span></li> 
    574                                 <li id="authentication_tab"><span><a href="javascript:mcTabs.displayTab('authentication_tab','authentication_panel');" onmousedown="return false;">{#chat_dlg.authentication}</a></span></li> 
    575                             </ul> 
    576                         </div> 
    577                  
    578                         <div class="panel_wrapper"> 
    579                             <div id="general_panel" class="panel current"> 
    580                                 <fieldset> 
    581                                     <legend>{#chat_dlg.general}</legend> 
    582                  
    583                                     <table border="0" cellpadding="4" cellspacing="0"> 
    584                                         <tr> 
    585                                             <td><label for="chat_sound">{#chat_dlg.sound}</label></td> 
    586                                             <td> 
    587                                                 <select id="chat_sound" name="chat_sound" > 
    588                                                     <option value="enabled" <?php print ($this->get_option('sound', 'enabled') == 'enabled')?'selected="selected"':''; ?>>{#chat_dlg.enabled}</option> 
    589                                                     <option value="disabled" <?php print ($this->get_option('sound', 'enabled') == 'disabled')?'selected="selected"':''; ?>>{#chat_dlg.disabled}</option> 
    590                                                 </select> 
    591                                             </td> 
    592                                             <td class="info"><?php _e("Play sound when a new message is received?", $this->translation_domain); ?></td> 
    593                                         </tr> 
    594                                          
    595                                          
    596                                         <tr class="chat_lite_disabled" > 
    597                                             <td><label for="chat_avatar">{#chat_dlg.avatar}</label></td> 
    598                                             <td> 
    599                                                 <select id="chat_avatar" name="chat_avatar" disabled="disabled" > 
    600                                                     <option value="enabled" <?php print ($this->get_option('avatar', 'enabled') == 'enabled')?'selected="selected"':''; ?>>{#chat_dlg.enabled}</option> 
    601                                                     <option value="disabled" <?php print ($this->get_option('avatar', 'enabled') == 'disabled')?'selected="selected"':''; ?>>{#chat_dlg.disabled}</option> 
    602                                                 </select> 
    603                                             </td> 
    604                                             <td class="info"><?php _e("Display the user's avatar with the message?", $this->translation_domain); ?></td> 
    605                                         </tr> 
    606                                          
    607                                         <tr class="chat_lite_disabled" > 
    608                                             <td><label for="chat_emoticons">{#chat_dlg.emoticons}</label></td> 
    609                                             <td> 
    610                                                 <select id="chat_emoticons" name="chat_emoticons" disabled="disabled" > 
    611                                                     <option value="enabled" <?php print ($this->get_option('emoticons', 'disabled') == 'enabled')?'selected="selected"':''; ?>>{#chat_dlg.enabled}</option> 
    612                                                     <option value="disabled" <?php print ($this->get_option('emoticons', 'disabled') == 'disabled')?'selected="selected"':''; ?>>{#chat_dlg.disabled}</option> 
    613                                                 </select> 
    614                                             </td> 
    615                                             <td class="info"><?php _e("Display emoticons bar?", $this->translation_domain); ?></td> 
    616                                         </tr> 
    617                                          
    618                                         <tr> 
    619                                             <td><label for="chat_date_show">{#chat_dlg.show_date}</label></td> 
    620                                             <td> 
    621                                                 <select id="chat_date_show" name="chat_date_show" > 
    622                                                     <option value="enabled" <?php print ($this->get_option('date_show', 'disabled') == 'enabled')?'selected="selected"':''; ?>>{#chat_dlg.enabled}</option> 
    623                                                     <option value="disabled" <?php print ($this->get_option('date_show', 'disabled') == 'disabled')?'selected="selected"':''; ?>>{#chat_dlg.disabled}</option> 
    624                                                 </select> 
    625                                             </td> 
    626                                             <td class="info"><?php _e("Display date the message was sent?", $this->translation_domain); ?></td> 
    627                                         </tr> 
    628                                          
    629                                         <tr> 
    630                                             <td><label for="chat_time_show">{#chat_dlg.show_time}</label></td> 
    631                                             <td> 
    632                                                 <select id="chat_time_show" name="chat_time_show" > 
    633                                                     <option value="enabled" <?php print ($this->get_option('time_show', 'disabled') == 'enabled')?'selected="selected"':''; ?>>{#chat_dlg.enabled}</option> 
    634                                                     <option value="disabled" <?php print ($this->get_option('time_show', 'disabled') == 'disabled')?'selected="selected"':''; ?>>{#chat_dlg.disabled}</option> 
    635                                                 </select> 
    636                                             </td> 
    637                                             <td class="info"><?php _e("Display the time  the message was sent?", $this->translation_domain); ?></td> 
    638                                         </tr> 
    639                  
    640                                         <tr> 
    641                                             <td><label for="chat_width">{#chat_dlg.dimensions}</label></td> 
    642                                             <td> 
    643                                                 <input type="text" id="chat_width" name="chat_width" value="<?php print $this->get_option('width', ''); ?>" class="size" size="5" /> x 
    644                                                 <input type="text" id="chat_height" name="chat_height" value="<?php print $this->get_option('height', ''); ?>" class="size" size="5" /> 
    645                                             </td> 
    646                                             <td class="info"><?php _e("Dimensions of the chat box", $this->translation_domain); ?></td> 
    647                                         </tr> 
    648                                     </table> 
    649                                 </fieldset> 
    650                             </div> 
    651                                  
    652                             <div id="appearance_panel" class="panel"> 
    653                                 <fieldset> 
    654                                     <legend>{#chat_dlg.colors}</legend> 
    655                  
    656                                     <table border="0" cellpadding="4" cellspacing="0" class="chat_lite_disabled"> 
    657                                         <tr> 
    658                                             <td><label for="chat_background_color">{#chat_dlg.background}</label></td> 
    659                                             <td> 
    660                                                 <input type="text" id="chat_background_color" name="chat_background_color" value="<?php print $this->get_option('background_color', '#ffffff'); ?>" class="color" size="7" disabled="disabled" /> 
    661                                                 <div class="color" id="chat_background_color_panel"></div> 
    662                                             </td> 
    663                                             <td class="info"><?php _e("Chat box background color", $this->translation_domain); ?></td> 
    664                                         </tr> 
    665                                              
    666                                         <tr> 
    667                                             <td><label for="chat_date_color">{#chat_dlg.date}</label></td> 
    668                                             <td> 
    669                                                 <input type="text" id="chat_date_color" name="chat_date_color" value="<?php print $this->get_option('date_color', '#6699CC'); ?>" class="color" size="7" disabled="disabled" /> 
    670                                                 <div class="color" id="chat_date_color_panel"></div> 
    671                                             </td> 
    672                                             <td class="info"><?php _e("Date background color", $this->translation_domain); ?></td> 
    673                                         </tr> 
    674                                              
    675                                         <tr> 
    676                                             <td><label for="chat_name_color">{#chat_dlg.name}</label></td> 
    677                                             <td> 
    678                                                 <input type="text" id="chat_name_color" name="chat_name_color" value="<?php print $this->get_option('name_color', '#666666'); ?>" class="color" size="7" disabled="disabled" /> 
    679                                                 <div class="color" id="chat_name_color_panel"></div> 
    680                                             </td> 
    681                                             <td class="info"><?php _e("Name background color", $this->translation_domain); ?></td> 
    682                                         </tr> 
    683                                          
    684                                         <tr> 
    685                                             <td><label for="chat_moderator_name_color">{#chat_dlg.moderator_name}</label></td> 
    686                                             <td> 
    687                                                 <input type="text" id="chat_moderator_name_color" name="chat_moderator_name_color" value="<?php print $this->get_option('moderator_name_color', '#6699CC'); ?>" class="color" size="7" disabled="disabled" /> 
    688                                                 <div class="color" id="chat_moderator_name_color_panel"></div> 
    689                                             </td> 
    690                                             <td class="info"><?php _e("Moderator Name background color", $this->translation_domain); ?></td> 
    691                                         </tr> 
    692                                          
    693                                         <tr> 
    694                                             <td><label for="chat_text_color">{#chat_dlg.text}</label></td> 
    695                                             <td> 
    696                                                 <input type="text" id="chat_text_color" name="chat_text_color" value="<?php print $this->get_option('text_color', '#000000'); ?>" class="color" size="7" disabled="disabled" /> 
    697                                                 <div class="color" id="chat_text_color_panel"></div> 
    698                                             </td> 
    699                                             <td class="info"><?php _e("Text color", $this->translation_domain); ?></td> 
    700                                         </tr> 
    701                                     </table> 
    702                                 </fieldset> 
    703                                  
    704                                 <fieldset> 
    705                                     <legend>{#chat_dlg.fonts}</legend> 
    706                  
    707                                     <table border="0" cellpadding="4" cellspacing="0"> 
    708                  
    709                                         <tr> 
    710                                             <td><label for="chat_font">{#chat_dlg.font}</label></td> 
    711                                             <td> 
    712                                                 <select id="chat_font" name="chat_font" class="font" > 
    713                                                 <?php foreach ($this->fonts_list as $font_name => $font) { ?> 
    714                                                     <option value="<?php print $font; ?>" <?php print ($this->get_option('font', '') == $font)?'selected="selected"':''; ?>" ><?php print $font_name; ?></option> 
    715                                                 <?php } ?> 
    716                                                 </select> 
    717                                             </td> 
    718                                             <td class="info"><?php _e("Chat box font", $this->translation_domain); ?></td> 
    719                                         </tr> 
    720                                          
    721                                         <tr> 
    722                                             <td><label for="chat_font_size">{#chat_dlg.font_size}</label></td> 
    723                                             <td> 
    724                                                 <select id="chat_font_size" name="chat_font_size" class="font_size" > 
    725                                                 <?php for ($font_size=8; $font_size<21; $font_size++) { ?> 
    726                                                     <option value="<?php print $font_size; ?>" <?php print ($this->get_option('font_size', '12') == $font_size)?'selected="selected"':''; ?> ><?php print $font_size; ?></option> 
    727                                                 <?php } ?> 
    728                                                 </select> px 
    729                                             </td> 
    730                                             <td class="info"><?php _e("Chat box font size", $this->translation_domain); ?></td> 
    731                                         </tr> 
    732                                     </table> 
    733                                 </fieldset> 
    734                             </div> 
    735                              
    736                             <div id="logs_panel" class="panel"> 
    737                                 <fieldset> 
    738                                     <legend>{#chat_dlg.logs}</legend> 
    739                                      
    740                                     <table border="0" cellpadding="4" cellspacing="0"> 
    741                                         <tr> 
    742                                             <td><label for="chat_log_creation">{#chat_dlg.creation}</label></td> 
    743                                             <td> 
    744                                                 <select id="chat_log_creation" name="chat_log_creation" disabled="disabled" > 
    745                                                     <option value="enabled" <?php print ($this->get_option('log_creation', 'disabled') == 'enabled')?'selected="selected"':''; ?>>{#chat_dlg.enabled}</option> 
    746                                                     <option value="disabled" <?php print ($this->get_option('log_creation', 'disabled') == 'disabled')?'selected="selected"':''; ?>>{#chat_dlg.disabled}</option> 
    747                                                 </select> 
    748                                             </td> 
    749                                             <td class="info"><?php _e("Log chat messages?", $this->translation_domain); ?></td> 
    750                                         </tr> 
    751                                          
    752                                         <tr> 
    753                                             <td><label for="chat_log_display">{#chat_dlg.display}</label></td> 
    754                                             <td> 
    755                                                 <select id="chat_log_display" name="chat_log_display" disabled="disabled"  > 
    756                                                     <option value="enabled" <?php print ($this->get_option('log_display', 'disabled') == 'enabled')?'selected="selected"':''; ?>>{#chat_dlg.enabled}</option> 
    757                                                     <option value="disabled" <?php print ($this->get_option('log_display', 'disabled') == 'disabled')?'selected="selected"':''; ?>>{#chat_dlg.disabled}</option> 
    758                                                 </select> 
    759                                             </td> 
    760                                             <td class="info"><?php _e("Display chat logs?", $this->translation_domain); ?></td> 
    761                                         </tr> 
    762                                     </table> 
    763                                 </fieldset> 
    764                             </div> 
    765                          
    766                             <div id="authentication_panel" class="panel"> 
    767                                 <fieldset> 
    768                                     <legend>{#chat_dlg.authentication}</legend> 
    769                                      
    770                                     <table border="0" cellpadding="4" cellspacing="0"> 
    771                                         <tr> 
    772                                             <td valign="top"><label for="chat_login_options">{#chat_dlg.login_options}</label></td> 
    773                                             <td> 
    774                                                 <label><input type="checkbox" id="chat_login_options_current_user" name="chat_login_options" class="chat_login_options" value="current_user" <?php print (in_array('current_user', $this->get_option('login_options', array('current_user'))) > 0)?'checked="checked"':''; ?> /> <?php _e('Current user', $this->translation_domain); ?></label><br/> 
    775                                                 <?php if (is_multisite()) { ?> 
    776                                                 <label><input type="checkbox" id="chat_login_options_network_user" name="chat_login_options" class="chat_login_options" value="network_user" <?php print (in_array('network_user', $this->get_option('login_options', array('current_user'))) > 0)?'checked="checked"':''; ?> /> <?php _e('Network user', $this->translation_domain); ?></label><br/> 
    777                                                 <?php } ?> 
    778                                                 <label><input type="checkbox" id="chat_login_options_public_user" name="chat_login_options" class="chat_login_options" value="public_user" <?php print (in_array('public_user', $this->get_option('login_options', array('current_user'))) > 0)?'checked="checked"':''; ?> /> <?php _e('Public user', $this->translation_domain); ?></label><br/> 
    779                                                 <?php if ($this->is_twitter_setup()) { ?> 
    780                                                 <label><input type="checkbox" id="chat_login_options_twitter" name="chat_login_options" class="chat_login_options" value="twitter" <?php print (!$this->is_twitter_setup())?'disabled="disabled"':''; ?> <?php print (in_array('twitter', $this->get_option('login_options', array('current_user'))) > 0)?'checked="checked"':''; ?> /> <?php _e('Twitter', $this->translation_domain); ?></label><br/> 
    781                                                 <?php } ?> 
    782                                                 <?php if ($this->is_facebook_setup()) { ?> 
    783                                                 <label><input type="checkbox" id="chat_login_options_facebook" name="chat_login_options" class="chat_login_options" value="facebook" <?php print (!$this->is_facebook_setup())?'disabled="disabled"':''; ?> <?php print (in_array('facebook', $this->get_option('login_options', array('current_user'))) > 0)?'checked="checked"':''; ?> /> <?php _e('Facebook', $this->translation_domain); ?></label><br/> 
    784                                                 <?php } ?> 
    785                                             </td> 
    786                                             <td class="info"><?php _e("Authentication methods users can use", $this->translation_domain); ?></td> 
    787                                         </tr> 
    788                                         <tr> 
    789                                             <td valign="top"><label for="chat_moderator_roles">{#chat_dlg.moderator_roles}</label></td> 
    790                                             <td> 
    791                                                 <?php 
    792                                                 foreach (get_editable_roles() as $role => $details) { 
    793                                                     $name = translate_user_role($details['name'] ); 
    794                                                 ?> 
    795                                                 <label><input type="checkbox" id="chat_moderator_roles_<?php print $role; ?>" name="chat_moderator_roles" class="chat_moderator_roles" value="<?php print $role; ?>" <?php print (in_array($role, $this->get_option('moderator_roles', array('administrator','editor','author'))) > 0)?'checked="checked"':''; ?> /> <?php _e($name, $this->translation_domain); ?></label><br/> 
    796                                                 <?php  
    797                                                 } 
    798                                                 ?> 
    799                                             </td> 
    800                                             <td class="info"><?php _e("Select which roles are moderators", $this->translation_domain); ?></td> 
    801                                         </tr> 
    802                                     </table> 
    803                                 </fieldset> 
    804                             </div> 
    805                         </div> 
    806                  
    807                         <div class="mceActionPanel"> 
    808                             <div style="float: left"> 
    809                                 <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" /> 
    810                             </div> 
    811                  
    812                             <div style="float: right"> 
    813                                 <input type="submit" id="insert" name="insert" value="{#insert}" /> 
    814                             </div> 
    815                         </div> 
    816                     </form> 
    817                     <script type="text/javascript"> 
    818                         jQuery(window).load(function() { 
    819                             for (attr in current_options) { 
    820                                 if (attr == "id") continue; 
    821          
    822                                 if (current_options[attr].match(',')) { 
    823                                     jQuery("#chat_"+attr).val(current_options[attr].split(',')); 
    824                                 } else { 
    825                                     jQuery("#chat_"+attr).val(current_options[attr]); 
    826                                 } 
    827                             } 
    828                         }); 
    829                     </script> 
    830                 </body> 
    831             </html> 
    832             <?php 
    833             exit(0); 
    834         } 
    835          
    836         function whitelist_options($options) { 
    837             $added = array( 'chat' => array( 'chat_default', 'chat_site' ) ); 
    838             $options = add_option_whitelist( $added, $options ); 
    839             return $options; 
    840         } 
    841          
    842         /** 
    843          * Plugin options 
    844          */ 
    845         function plugin_options() {  
    846             ?> 
    847             <div class="wrap"> 
    848             <h2><?php _e('Chat Settings', $this->translation_domain); ?></h2> 
    849             <form method="post" action="options.php"> 
    850                 <?php settings_fields('chat'); ?> 
    851              
    852                 <div id="chat_tab_pane" class="chat_tab_pane"> 
    853                     <ul> 
    854                         <li><a href="#chat_default_panel"><span><?php _e('In post chat options', $this->translation_domain); ?></span></a></li> 
    855                         <li><a href="#chat_site_panel"><span><?php _e('Bottom corner chat', $this->translation_domain); ?></span></a></li> 
    856                         <li class="chat_lite_disabled_tab"><a href="#chat_twitter_api_panel"><span><?php _e('Twitter API', $this->translation_domain); ?></span></a></li> 
    857                         <li class="chat_lite_disabled_tab"><a href="#chat_facebook_api_panel"><span><?php _e('Facebook API', $this->translation_domain); ?></span></a></li> 
    858                         <li class="chat_lite_disabled_tab"><a href="#chat_advanced_panel"><span><?php _e('Advanced', $this->translation_domain); ?></span></a></li> 
    859                     </ul> 
    860                      
    861                     <div id="chat_default_panel" class="chat_panel current"> 
    862                         <p class="info"><b><?php printf(__('Grayed out options available in the full version. <a href="%s" target="_blank">**Upgrade to the full version now &raquo;**</a>', $this->translation_domain), 'http://premium.wpmudev.org/project/wordpress-chat-plugin'); ?></b></p> 
    863                          
    864                         <p class="info"><?php _e('Default options for in post chat boxes', $this->translation_domain); ?></p> 
    865                          
    866                         <fieldset> 
    867                             <legend><?php _e('General', $this->translation_domain); ?></legend> 
    868              
    869                             <table border="0" cellpadding="4" cellspacing="0"> 
    870                                 <tr> 
    871                                     <td><label for="chat_sound"><?php _e('Sound', $this->translation_domain); ?></label></td> 
    872                                     <td> 
    873                                         <select id="chat_sound" name="chat_default[sound]" > 
    874                                             <option value="enabled" <?php print ($this->get_option('sound', 'enabled') == 'enabled')?'selected="selected"':''; ?>><?php _e('Enabled', $this->translation_domain); ?></option> 
    875                                             <option value="disabled" <?php print ($this->get_option('sound', 'enabled') == 'disabled')?'selected="selected"':''; ?>><?php _e('Disabled', $this->translation_domain); ?></option> 
    876                                         </select> 
    877                                     </td> 
    878                                     <td class="info"><?php _e("Play sound when a new message is received?", $this->translation_domain); ?></td> 
    879                                 </tr>    
    880                                      
    881                                 <tr class="chat_lite_disabled"> 
    882                                     <td><label for="chat_avatar"><?php _e('Avatar', $this->translation_domain); ?></label></td> 
    883                                     <td> 
    884                                         <select id="chat_avatar" name="chat_default[avatar]" disabled="disabled" > 
    885                                             <option value="enabled" <?php print ($this->get_option('avatar', 'enabled') == 'enabled')?'selected="selected"':''; ?>><?php _e('Enabled', $this->translation_domain); ?></option> 
    886                                             <option value="disabled" <?php print ($this->get_option('avatar', 'enabled') == 'disabled')?'selected="selected"':''; ?>><?php _e('Disabled', $this->translation_domain); ?></option> 
    887                                         </select> 
    888                                     </td> 
    889                                     <td class="info"><?php _e("Display the user's avatar with the message?", $this->translation_domain); ?></td> 
    890                                 </tr> 
    891                                      
    892                                 <tr class="chat_lite_disabled"> 
    893                                     <td><label for="chat_emoticons"><?php _e('Emoticons', $this->translation_domain); ?></label></td> 
    894                                     <td> 
    895                                         <select id="chat_emoticons" name="chat_default[emoticons]" disabled="disabled" > 
    896                                             <option value="enabled" <?php print ($this->get_option('emoticons', 'disabled') == 'enabled')?'selected="selected"':''; ?>><?php _e('Enabled', $this->translation_domain); ?></option> 
    897                                             <option value="disabled" <?php print ($this->get_option('emoticons', 'disabled') == 'disabled')?'selected="selected"':''; ?>><?php _e('Disabled', $this->translation_domain); ?></option> 
    898                                         </select> 
    899                                     </td> 
    900                                     <td class="info"><?php _e("Display emoticons bar?", $this->translation_domain); ?></td> 
    901                                 </tr> 
    902                                  
    903                                 <tr> 
    904                                     <td><label for="chat_date_show"><?php _e('Show date', $this->translation_domain); ?></label></td> 
    905                                     <td> 
    906                                         <select id="chat_date_show" name="chat_default[date_show]" > 
    907                                             <option value="enabled" <?php print ($this->get_option('date_show', 'disabled') == 'enabled')?'selected="selected"':''; ?>><?php _e('Enabled', $this->translation_domain); ?></option> 
    908                                             <option value="disabled" <?php print ($this->get_option('date_show', 'disabled') == 'disabled')?'selected="selected"':''; ?>><?php _e('Disabled', $this->translation_domain); ?></option> 
    909                                         </select> 
    910                                     </td> 
    911                                     <td class="info"><?php _e("Display date the message was sent?", $this->translation_domain); ?></td> 
    912                                 </tr> 
    913                                      
    914                                 <tr> 
    915                                     <td><label for="chat_time_show"><?php _e('Show time', $this->translation_domain); ?></label></td> 
    916                                     <td> 
    917                                         <select id="chat_time_show" name="chat_default[time_show]" > 
    918                                             <option value="enabled" <?php print ($this->get_option('time_show', 'disabled') == 'enabled')?'selected="selected"':''; ?>><?php _e('Enabled', $this->translation_domain); ?></option> 
    919                                             <option value="disabled" <?php print ($this->get_option('time_show', 'disabled') == 'disabled')?'selected="selected"':''; ?>><?php _e('Disabled', $this->translation_domain); ?></option> 
    920                                         </select> 
    921                                     </td> 
    922                                     <td class="info"><?php _e("Display the time  the message was sent?", $this->translation_domain); ?></td> 
    923                                 </tr> 
    924              
    925                                 <tr> 
    926                                     <td><label for="chat_width"><?php _e('Dimensions', $this->translation_domain); ?></label></td> 
    927                                     <td> 
    928                                         <input type="text" id="chat_width" name="chat_default[width]" value="<?php print $this->get_option('width', '100%'); ?>" class="size" size="5" /> x 
    929                                         <input type="text" id="chat_height" name="chat_default[height]" value="<?php print $this->get_option('height', '425px'); ?>" class="size" size="5" /> 
    930                                     </td> 
    931                                     <td class="info"><?php _e("Dimensions of the chat box", $this->translation_domain); ?></td> 
    932                                 </tr> 
    933                             </table> 
    934                         </fieldset> 
    935                          
    936                         <fieldset> 
    937                             <legend><?php _e('Colors', $this->translation_domain); ?></legend> 
    938              
    939                             <table border="0" cellpadding="4" cellspacing="0" class="chat_lite_disabled" > 
    940                                 <tr> 
    941                                     <td><label for="chat_background_color"><?php _e('Background', $this->translation_domain); ?></label></td> 
    942                                     <td> 
    943                                         <input type="text" id="chat_background_color" name="chat_default[background_color]" value="<?php print $this->get_option('background_color', '#ffffff'); ?>" class="color" size="7" disabled="disabled" /> 
    944                                         <div class="color" id="chat_background_color_panel"></div> 
    945                                     </td> 
    946                                     <td class="info"><?php _e("Chat box background color", $this->translation_domain); ?></td> 
    947                                 </tr> 
    948                                          
    949                                 <tr> 
    950                                     <td><label for="chat_date_color"><?php _e('Date', $this->translation_domain); ?></label></td> 
    951                                     <td> 
    952                                         <input type="text" id="chat_date_color" name="chat_default[date_color]" value="<?php print $this->get_option('date_color', '#6699CC'); ?>" class="color" size="7" disabled="disabled" /> 
    953                                         <div class="color" id="chat_date_color_panel"></div> 
    954                                     </td> 
    955                                     <td class="info"><?php _e("Date and time background color", $this->translation_domain); ?></td> 
    956                                 </tr> 
    957                                  
    958                                 <tr> 
    959                                     <td><label for="chat_name_color"><?php _e('Name', $this->translation_domain); ?></label></td> 
    960                                     <td> 
    961                                         <input type="text" id="chat_name_color" name="chat_default[name_color]" value="<?php print $this->get_option('name_color', '#666666'); ?>" class="color" size="7" disabled="disabled" /> 
    962                                         <div class="color" id="chat_name_color_panel"></div> 
    963                                     </td> 
    964                                     <td class="info"><?php _e("Name background color", $this->translation_domain); ?></td> 
    965                                 </tr> 
    966                                  
    967                                 <tr> 
    968                                     <td><label for="chat_moderator_name_color"><?php _e('Moderator Name', $this->translation_domain); ?></label></td> 
    969                                     <td> 
    970                                         <input type="text" id="chat_moderator_name_color" name="chat_default[moderator_name_color]" value="<?php print $this->get_option('moderator_name_color', '#6699CC'); ?>" class="color" size="7" disabled="disabled" /> 
    971                                         <div class="color" id="chat_moderator_name_color_panel"></div> 
    972                                     </td> 
    973                                     <td class="info"><?php _e("Moderator Name background color", $this->translation_domain); ?></td> 
    974                                 </tr> 
    975                                  
    976                                 <tr> 
    977                                     <td><label for="chat_text_color"><?php _e('Text', $this->translation_domain); ?></label></td> 
    978                                     <td> 
    979                                         <input type="text" id="chat_text_color" name="chat_default[text_color]" value="<?php print $this->get_option('text_color', '#000000'); ?>" class="color" size="7" disabled="disabled" /> 
    980                                         <div class="color" id="chat_text_color_panel"></div> 
    981                                     </td> 
    982                                     <td class="info"><?php _e("Text color", $this->translation_domain); ?></td> 
    983                                 </tr> 
    984                             </table> 
    985                         </fieldset> 
    986                          
    987                         <fieldset> 
    988                             <legend><?php _e('Fonts', $this->translation_domain); ?></legend> 
    989              
    990                             <table border="0" cellpadding="4" cellspacing="0"> 
    991                                 <tr> 
    992                                     <td><label for="chat_font"><?php _e('Font', $this->translation_domain); ?></label></td> 
    993                                     <td> 
    994                                         <select id="chat_font" name="chat_default[font]" class="font" > 
    995                                         <?php foreach ($this->fonts_list as $font_name => $font) { ?> 
    996                                             <option value="<?php print $font; ?>" <?php print ($this->get_option('font', '') == $font)?'selected="selected"':''; ?>" ><?php print $font_name; ?></option> 
    997                                         <?php } ?> 
    998                                         </select> 
    999                                     </td> 
    1000                                     <td class="info"><?php _e("Chat box font", $this->translation_domain); ?></td> 
    1001                                 </tr> 
    1002                                      
    1003                                 <tr> 
    1004                                     <td><label for="chat_font_size"><?php _e('Font size', $this->translation_domain); ?></label></td> 
    1005                                     <td> 
    1006                                         <select id="chat_font_size" name="chat_default[font_size]" class="font_size" > 
    1007                                         <?php for ($font_size=8; $font_size<21; $font_size++) { ?> 
    1008                                             <option value="<?php print $font_size; ?>" <?php print ($this->get_option('font_size', '12') == $font_size)?'selected="selected"':''; ?>" ><?php print $font_size; ?></option> 
    1009                                         <?php } ?> 
    1010                                         </select> px 
    1011                                     </td> 
    1012                                     <td class="info"><?php _e("Chat box font size", $this->translation_domain); ?></td> 
    1013                                 </tr> 
    1014                             </table> 
    1015                         </fieldset> 
    1016                          
    1017                         <fieldset> 
    1018                             <legend><?php _e('Logs', $this->translation_domain); ?></legend> 
    1019                                  
    1020                             <table border="0" cellpadding="4" cellspacing="0" class="chat_lite_disabled"> 
    1021                                 <tr> 
    1022                                     <td><label for="chat_log_creation"><?php _e('Creation', $this->translation_domain); ?></label></td> 
    1023                                     <td> 
    1024                                         <select id="chat_log_creation" name="chat_default[log_creation]" disabled="disabled" > 
    1025                                             <option value="enabled" <?php print ($this->get_option('log_creation', 'enabled') == 'enabled')?'selected="selected"':''; ?>><?php _e('Enabled', $this->translation_domain); ?></option> 
    1026                                             <option value="disabled" <?php print ($this->get_option('log_creation', 'enabled') == 'disabled')?'selected="selected"':''; ?>><?php _e('Disabled', $this->translation_domain); ?></option> 
    1027                                         </select> 
    1028                                     </td> 
    1029                                     <td class="info"><?php _e("Log chat messages?", $this->translation_domain); ?></td> 
    1030                                 </tr> 
    1031                                      
    1032                                 <tr> 
    1033                                     <td><label for="chat_log_display"><?php _e('Display', $this->translation_domain); ?></label></td> 
    1034                                     <td> 
    1035                                         <select id="chat_log_display" name="chat_default[log_display]" disabled="disabled" > 
    1036                                             <option value="enabled" <?php print ($this->get_option('log_display', 'enabled') == 'enabled')?'selected="selected"':''; ?>><?php _e('Enabled', $this->translation_domain); ?></option> 
    1037                                             <option value="disabled" <?php print ($this->get_option('log_display', 'enabled') == 'disabled')?'selected="selected"':''; ?>><?php _e('Disabled', $this->translation_domain); ?></option> 
    1038                                         </select> 
    1039                                     </td> 
    1040                                     <td class="info"><?php _e("Display chat logs?", $this->translation_domain); ?></td> 
    1041                                 </tr> 
    1042                             </table> 
    1043                         </fieldset> 
    1044                          
    1045                         <fieldset> 
    1046                             <legend><?php _e('Authentication', $this->translation_domain); ?></legend> 
    1047                              
    1048                             <table border="0" cellpadding="4" cellspacing="0"> 
    1049                                 <tr> 
    1050                                     <td valign="top"><label for="chat_login_options"><?php _e('Login options', $this->translation_domain); ?></label></td> 
    1051                                     <td> 
    1052                                         <label><input type="checkbox" id="chat_login_options_current_user" name="chat_default[login_options][]" class="chat_login_options" value="current_user" <?php print (in_array('current_user', $this->get_option('login_options', array('current_user'))) > 0)?'checked="checked"':''; ?> /> <?php _e('Current user', $this->translation_domain); ?></label><br/> 
    1053                                         <?php if (is_multisite()) { ?> 
    1054                                         <label><input type="checkbox" id="chat_login_options_network_user" name="chat_default[login_options][]" class="chat_login_options" value="network_user" <?php print (in_array('network_user', $this->get_option('login_options', array('current_user'))) > 0)?'checked="checked"':''; ?> /> <?php _e('Network user', $this->translation_domain); ?></label><br/> 
    1055                                         <?php } ?> 
    1056                                         <label><input type="checkbox" id="chat_login_options_public_user" name="chat_default[login_options][]" class="chat_login_options" value="public_user" <?php print (in_array('public_user', $this->get_option('login_options', array('current_user'))) > 0)?'checked="checked"':''; ?> /> <?php _e('Public user', $this->translation_domain); ?></label><br/> 
    1057                                         <span class="chat_lite_disabled" ><label ><input type="checkbox" id="chat_login_options_twitter" name="chat_default[login_options][]" class="chat_login_options" value="twitter" <?php print (!$this->is_twitter_setup())?'disabled="disabled"':''; ?> <?php print (in_array('twitter', $this->get_option('login_options', array('current_user'))) > 0)?'checked="checked"':''; ?> /> <?php _e('Twitter', $this->translation_domain); ?></label><br/> 
    1058                                         <label ><input type="checkbox" id="chat_login_options_facebook" name="chat_default[login_options][]" class="chat_login_options" value="facebook" <?php print (!$this->is_facebook_setup())?'disabled="disabled"':''; ?> <?php print (in_array('facebook', $this->get_option('login_options', array('current_user'))) > 0)?'checked="checked"':''; ?> /> <?php _e('Facebook', $this->translation_domain); ?></label><br/></span> 
    1059                                     </td> 
    1060                                     <td class="info"><?php _e("Authentication methods users can use", $this->translation_domain); ?></td> 
    1061                                 </tr> 
    1062                                  
    1063                                 <tr class="chat_lite_disabled" > 
    1064                                     <td valign="top"><label for="chat_moderator_roles"><?php _e('Moderator roles', $this->translation_domain); ?></label></td> 
    1065                                     <td> 
    1066                                         <?php 
    1067                                         foreach (get_editable_roles() as $role => $details) { 
    1068                                             $name = translate_user_role($details['name'] ); 
    1069                                         ?> 
    1070                                         <label><input type="checkbox" id="chat_moderator_roles_<?php print $role; ?>" name="chat_default[moderator_roles][]" class="chat_moderator_roles" value="<?php print $role; ?>" <?php print (in_array($role, $this->get_option('moderator_roles', array('administrator','editor','author'))) > 0)?'checked="checked"':''; ?> disabled="disabled" /> <?php _e($name, $this->translation_domain); ?></label><br/> 
    1071                                         <?php  
    1072                                         } 
    1073                                         ?> 
    1074                                     </td> 
    1075                                     <td class="info"><?php _e("Select which roles are moderators", $this->translation_domain); ?></td> 
    1076                                 </tr> 
    1077                             </table> 
    1078                         </fieldset> 
    1079                     </div> 
    1080                      
    1081                     <div id="chat_site_panel" class="chat_panel current"> 
    1082                         <p class="info"><b><?php printf(__('Grayed out options available in the full version. <a href="%s" target="_blank">**Upgrade to the full version now &raquo;**</a>', $this->translation_domain), 'http://premium.wpmudev.org/project/wordpress-chat-plugin'); ?></b></p> 
    1083                          
    1084                         <p class="info"><?php _e('Options for the bottom corner chat', $this->translation_domain); ?></p> 
    1085                          
    1086                         <fieldset> 
    1087                             <legend><?php _e('Main', $this->translation_domain); ?></legend> 
    1088              
    1089                             <table border="0" cellpadding="4" cellspacing="0"> 
    1090                                 <tr> 
    1091                                     <td><label for="chat_site_1"><?php _e('Show', $this->translation_domain); ?></label></td> 
    1092                                     <td> 
    1093                                         <select id="chat_site_1" name="chat_site[site]" > 
    1094                                             <option value="enabled" <?php print ($this->get_option('site', 'enabled', 'site') == 'enabled')?'selected="selected"':''; ?>><?php _e('Enabled', $this->translation_domain); ?></option> 
    1095                                             <option value="disabled" <?php print ($this->get_option('site', 'enabled', 'site') == 'disabled')?'selected="selected"':''; ?>><?php _e('Disabled', $this->translation_domain); ?></option> 
    1096                                         </select> 
    1097                                     </td> 
    1098                                     <td class="info"><?php _e("Display bottom corner chat?", $this->translation_domain); ?></td> 
    1099                                 </tr> 
    1100                             </table> 
    1101                         </fieldset> 
    1102                          
    1103                         <fieldset> 
    1104                             <legend><?php _e('General', $this->translation_domain); ?></legend> 
    1105              
    1106                             <table border="0" cellpadding="4" cellspacing="0"> 
    1107                                  
    1108                                 <tr> 
    1109                                     <td><label for="chat_sound_1"><?php _e('Sound', $this->translation_domain); ?></label></td> 
    1110                                     <td> 
    1111                                         <select id="chat_sound_1" name="chat_site[sound]" > 
    1112                                             <option value="enabled" <?php print ($this->get_option('sound', 'enabled', 'site') == 'enabled')?'selected="selected"':''; ?>><?php _e('Enabled', $this->translation_domain); ?></option> 
    1113                                             <option value="disabled" <?php print ($this->get_option('sound', 'enabled', 'site') == 'disabled')?'selected="selected"':''; ?>><?php _e('Disabled', $this->translation_domain); ?></option> 
    1114                                         </select> 
    1115                                     </td> 
    1116                                     <td class="info"><?php _e("Play sound when a new message is received?", $this->translation_domain); ?></td> 
    1117                                 </tr>    
    1118                                      
    1119                                 <tr class="chat_lite_disabled"> 
    1120                                     <td><label for="chat_avatar_1"><?php _e('Avatar', $this->translation_domain); ?></label></td> 
    1121                                     <td> 
    1122                                         <select id="chat_avatar_1" name="chat_site[avatar]" disabled="disabled"> 
    1123                                             <option value="enabled" <?php print ($this->get_option('avatar', 'enabled', 'site') == 'enabled')?'selected="selected"':''; ?>><?php _e('Enabled', $this->translation_domain); ?></option> 
    1124                                             <option value="disabled" <?php print ($this->get_option('avatar', 'enabled', 'site') == 'disabled')?'selected="selected"':''; ?>><?php _e('Disabled', $this->translation_domain); ?></option> 
    1125                                         </select> 
    1126                                     </td> 
    1127                                     <td class="info"><?php _e("Display the user's avatar with the message?", $this->translation_domain); ?></td> 
    1128                                 </tr> 
    1129                                      
    1130                                 <tr class="chat_lite_disabled"> 
    1131                                     <td><label for="chat_emoticons_1"><?php _e('Emoticons', $this->translation_domain); ?></label></td> 
    1132                                     <td> 
    1133                                         <select id="chat_emoticons_1" name="chat_site[emoticons]" disabled="disabled"> 
    1134                                             <option value="enabled" <?php print ($this->get_option('emoticons', 'enabled', 'site') == 'enabled')?'selected="selected"':''; ?>><?php _e('Enabled', $this->translation_domain); ?></option> 
    1135                                             <option value="disabled" <?php print ($this->get_option('emoticons', 'enabled', 'site') == 'disabled')?'selected="selected"':''; ?>><?php _e('Disabled', $this->translation_domain); ?></option> 
    1136                                         </select> 
    1137                                     </td> 
    1138                                     <td class="info"><?php _e("Display emoticons bar?", $this->translation_domain); ?></td> 
    1139                                 </tr> 
    1140                                  
    1141                                 <tr> 
    1142                                     <td><label for="chat_date_show_1"><?php _e('Show date', $this->translation_domain); ?></label></td> 
    1143                                     <td> 
    1144                                         <select id="chat_date_show_1" name="chat_site[date_show]" > 
    1145                                             <option value="enabled" <?php print ($this->get_option('date_show', 'enabled', 'site') == 'enabled')?'selected="selected"':''; ?>><?php _e('Enabled', $this->translation_domain); ?></option> 
    1146                                             <option value="disabled" <?php print ($this->get_option('date_show', 'enabled', 'site') == 'disabled')?'selected="selected"':''; ?>><?php _e('Disabled', $this->translation_domain); ?></option> 
    1147                                         </select> 
    1148                                     </td> 
    1149                                     <td class="info"><?php _e("Display date the message was sent?", $this->translation_domain); ?></td> 
    1150                                 </tr> 
    1151                                      
    1152                                 <tr> 
    1153                                     <td><label for="chat_time_show_1"><?php _e('Show time', $this->translation_domain); ?></label></td> 
    1154                                     <td> 
    1155                                         <select id="chat_time_show_1" name="chat_site[time_show]" > 
    1156                                             <option value="enabled" <?php print ($this->get_option('time_show', 'enabled', 'site') == 'enabled')?'selected="selected"':''; ?>><?php _e('Enabled', $this->translation_domain); ?></option> 
    1157                                             <option value="disabled" <?php print ($this->get_option('time_show', 'enabled', 'site') == 'disabled')?'selected="selected"':''; ?>><?php _e('Disabled', $this->translation_domain); ?></option> 
    1158                                         </select> 
    1159                                     </td> 
    1160                                     <td class="info"><?php _e("Display the time  the message was sent?", $this->translation_domain); ?></td> 
    1161                                 </tr> 
    1162              
    1163                                 <tr> 
    1164                                     <td><label for="chat_width_1"><?php _e('Dimensions', $this->translation_domain); ?></label></td> 
    1165                                     <td> 
    1166                                         <input type="text" id="chat_width_1" name="chat_site[width]" value="<?php print $this->get_option('width', '', 'site'); ?>" class="size" size="5" /> x 
    1167                                         <input type="text" id="chat_height_1" name="chat_site[height]" value="<?php print $this->get_option('height', '', 'site'); ?>" class="size" size="5" /> 
    1168                                     </td> 
    1169                                     <td class="info"><?php _e("Dimensions of the chat box", $this->translation_domain); ?></td> 
    1170                                 </tr> 
    1171                             </table> 
    1172                         </fieldset> 
    1173                          
    1174                         <fieldset> 
    1175                             <legend><?php _e('Colors', $this->translation_domain); ?></legend> 
    1176              
    1177                             <table border="0" cellpadding="4" cellspacing="0" class="chat_lite_disabled"> 
    1178                                 <tr> 
    1179                                     <td><label for="chat_border_color_1"><?php _e('Border', $this->translation_domain); ?></label></td> 
    1180                                     <td> 
    1181                                         <input type="text" id=chat_border_color_1 name="chat_site[border_color]" value="<?php print $this->get_option('border_color', '#4b96e2', 'site'); ?>" class="color" size="7" disabled="disabled" /> 
    1182                                         <div class="color" id="chat_border_color_1_panel"></div> 
    1183                                     </td> 
    1184                                     <td class="info"><?php _e("Chat box border color", $this->translation_domain); ?></td> 
    1185                                 </tr> 
    1186                                  
    1187                                 <tr> 
    1188                                     <td><label for="chat_background_color_1"><?php _e('Background', $this->translation_domain); ?></label></td> 
    1189                                     <td> 
    1190                                         <input type="text" id="chat_background_color_1" name="chat_site[background_color]" value="<?php print $this->get_option('background_color', '#ffffff', 'site'); ?>" class="color" size="7" disabled="disabled" /> 
    1191                                         <div class="color" id="chat_background_color_1_panel"></div> 
    1192                                     </td> 
    1193                                     <td class="info"><?php _e("Chat box background color", $this->translation_domain); ?></td> 
    1194                                 </tr> 
    1195                                          
    1196                                 <tr> 
    1197                                     <td><label for="chat_date_color"><?php _e('Date', $this->translation_domain); ?></label></td> 
    1198                                     <td> 
    1199                                         <input type="text" id="chat_date_color_1" name="chat_site[date_color]" value="<?php print $this->get_option('date_color', '#6699CC', 'site'); ?>" class="color" size="7" disabled="disabled" /> 
    1200                                         <div class="color" id="chat_date_color_1_panel"></div> 
    1201                                     </td> 
    1202                                     <td class="info"><?php _e("Date and time background color", $this->translation_domain); ?></td> 
    1203                                 </tr> 
    1204                                  
    1205                                 <tr> 
    1206                                     <td><label for="chat_name_color"><?php _e('Name', $this->translation_domain); ?></label></td> 
    1207                                     <td> 
    1208                                         <input type="text" id="chat_name_color_1" name="chat_site[name_color]" value="<?php print $this->get_option('name_color', '#666666', 'site'); ?>" class="color" size="7" disabled="disabled" /> 
    1209                                         <div class="color" id="chat_name_color_1_panel"></div> 
    1210                                     </td> 
    1211                                     <td class="info"><?php _e("Name background color", $this->translation_domain); ?></td> 
    1212                                 </tr> 
    1213                                  
    1214                                 <tr> 
    1215                                     <td><label for="chat_moderator_name_color"><?php _e('Moderator Name', $this->translation_domain); ?></label></td> 
    1216                                     <td> 
    1217                                         <input type="text" id="chat_moderator_name_color_1" name="chat_site[moderator_name_color]" value="<?php print $this->get_option('moderator_name_color', '#6699CC', 'site'); ?>" class="color" size="7" disabled="disabled" /> 
    1218                                         <div class="color" id="chat_moderator_name_color_1_panel"></div> 
    1219                                     </td> 
    1220                                     <td class="info"><?php _e("Moderator Name background color", $this->translation_domain); ?></td> 
    1221                                 </tr> 
    1222                                  
    1223                                 <tr> 
    1224                                     <td><label for="chat_text_color"><?php _e('Text', $this->translation_domain); ?></label></td> 
    1225                                     <td> 
    1226                                         <input type="text" id="chat_text_color_1" name="chat_site[text_color]" value="<?php print $this->get_option('text_color', '#000000', 'site'); ?>" class="color" size="7" disabled="disabled" /> 
    1227                                         <div class="color" id="chat_text_color_1_panel"></div> 
    1228                                     </td> 
    1229                                     <td class="info"><?php _e("Text color", $this->translation_domain); ?></td> 
    1230                                 </tr> 
    1231                             </table> 
    1232                         </fieldset> 
    1233                          
    1234                         <fieldset> 
    1235                             <legend><?php _e('Fonts', $this->translation_domain); ?></legend> 
    1236              
    1237                             <table border="0" cellpadding="4" cellspacing="0"> 
    1238                                 <tr> 
    1239                                     <td><label for="chat_font_1"><?php _e('Font', $this->translation_domain); ?></label></td> 
    1240                                     <td> 
    1241                                         <select id="chat_font_1" name="chat_site[font]" class="font" > 
    1242                                         <?php foreach ($this->fonts_list as $font_name => $font) { ?> 
    1243                                             <option value="<?php print $font; ?>" <?php print ($this->get_option('font', '', 'site') == $font)?'selected="selected"':''; ?>" ><?php print $font_name; ?></option> 
    1244                                         <?php } ?> 
    1245                                         </select> 
    1246                                     </td> 
    1247                                     <td class="info"><?php _e("Chat box font", $this->translation_domain); ?></td> 
    1248                                 </tr> 
    1249                                      
    1250                                 <tr> 
    1251                                     <td><label for="chat_font_size_1"><?php _e('Font size', $this->translation_domain); ?></label></td> 
    1252                                     <td><select id="chat_font_size_1" name="chat_site[font_size]" class="font_size" > 
    1253                                         <?php for ($font_size=8; $font_size<21; $font_size++) { ?> 
    1254                                             <option value="<?php print $font_size; ?>" <?php print ($this->get_option('font_size', '12', 'site') == $font_size)?'selected="selected"':''; ?>" ><?php print $font_size; ?></option> 
    1255                                         <?php } ?> 
    1256                                         </select> px 
    1257                                     </td> 
    1258                                     <td class="info"><?php _e("Chat box font size", $this->translation_domain); ?></td> 
    1259                                 </tr> 
    1260                             </table> 
    1261                         </fieldset> 
    1262                          
    1263                         <fieldset> 
    1264                             <legend><?php _e('Logs', $this->translation_domain); ?></legend> 
    1265                                  
    1266                             <table border="0" cellpadding="4" cellspacing="0" class="chat_lite_disabled" > 
    1267                                 <tr> 
    1268                                     <td><label for="chat_log_creation_1"><?php _e('Creation', $this->translation_domain); ?></label></td> 
    1269                                     <td> 
    1270                                         <select id="chat_log_creation_1" name="chat_site[log_creation]" disabled="disabled" > 
    1271                                             <option value="enabled" <?php print ($this->get_option('log_creation', 'enabled', 'site') == 'enabled')?'selected="selected"':''; ?>><?php _e('Enabled', $this->translation_domain); ?></option> 
    1272                                             <option value="disabled" <?php print ($this->get_option('log_creation', 'enabled', 'site') == 'disabled')?'selected="selected"':''; ?>><?php _e('Disabled', $this->translation_domain); ?></option> 
    1273                                         </select> 
    1274                                     </td> 
    1275                                     <td class="info"><?php _e("Log chat messages?", $this->translation_domain); ?></td> 
    1276                                 </tr> 
    1277                                      
    1278                                 <tr> 
    1279                                     <td><label for="chat_log_display_1"><?php _e('Display', $this->translation_domain); ?></label></td> 
    1280                                     <td> 
    1281                                         <select id="chat_log_display_1" name="chat_site[log_display]" disabled="disabled" > 
    1282                                             <option value="enabled" <?php print ($this->get_option('log_display', 'enabled', 'site') == 'enabled')?'selected="selected"':''; ?>><?php _e('Enabled', $this->translation_domain); ?></option> 
    1283                                             <option value="disabled" <?php print ($this->get_option('log_display', 'enabled', 'site') == 'disabled')?'selected="selected"':''; ?>><?php _e('Disabled', $this->translation_domain); ?></option> 
    1284                                         </select> 
    1285                                     </td> 
    1286                                     <td class="info"><?php _e("Display chat logs?", $this->translation_domain); ?></td> 
    1287                                 </tr> 
    1288                             </table> 
    1289                         </fieldset> 
    1290                          
    1291                         <fieldset> 
    1292                             <legend><?php _e('Authentication', $this->translation_domain); ?></legend> 
    1293                                  
    1294                             <table border="0" cellpadding="4" cellspacing="0"> 
    1295                                 <tr> 
    1296                                     <td valign="top"><label for="chat_login_options_1"><?php _e('Login options', $this->translation_domain); ?></label></td> 
    1297                                     <td> 
    1298                                         <label><input type="checkbox" id="chat_login_options_1_current_user" name="chat_site[login_options][]" class="chat_login_options" value="current_user" <?php print (in_array('current_user', $this->get_option('login_options', array('current_user'), 'site')) > 0)?'checked="checked"':''; ?> /> <?php _e('Current user', $this->translation_domain); ?></label><br/> 
    1299                                         <?php if (is_multisite()) { ?> 
    1300                                         <label><input type="checkbox" id="chat_login_options_1_network_user" name="chat_site[login_options][]" class="chat_login_options" value="network_user" <?php print (in_array('network_user', $this->get_option('login_options', array('current_user'), 'site')) > 0)?'checked="checked"':''; ?> /> <?php _e('Network user', $this->translation_domain); ?></label><br/> 
    1301                                         <?php } ?> 
    1302                                         <label><input type="checkbox" id="chat_login_options_1_public_user" name="chat_site[login_options][]" class="chat_login_options" value="public_user" <?php print (in_array('public_user', $this->get_option('login_options', array('current_user'), 'site')) > 0)?'checked="checked"':''; ?> /> <?php _e('Public user', $this->translation_domain); ?></label><br/> 
    1303                                         <label class="chat_lite_disabled"><input type="checkbox" id="chat_login_options_1_twitter" name="chat_site[login_options][]" class="chat_login_options" value="twitter" <?php print (!$this->is_twitter_setup())?'disabled="disabled"':''; ?> <?php print (in_array('twitter', $this->get_option('login_options', array('current_user'), 'site')) > 0)?'checked="checked"':''; ?> /> <?php _e('Twitter', $this->translation_domain); ?></label><br/> 
    1304                                         <label class="chat_lite_disabled"><input type="checkbox" id="chat_login_options_1_facebook" name="chat_site[login_options][]" class="chat_login_options" value="facebook" <?php print (!$this->is_facebook_setup())?'disabled="disabled"':''; ?> <?php print (in_array('facebook', $this->get_option('login_options', array('current_user'), 'site')) > 0)?'checked="checked"':''; ?> /> <?php _e('Facebook', $this->translation_domain); ?></label><br/> 
    1305                                     </td> 
    1306                                     <td class="info"><?php _e("Authentication methods users can use", $this->translation_domain); ?></td> 
    1307                                 </tr> 
    1308                                  
    1309                                 <tr class="chat_lite_disabled"> 
    1310                                     <td valign="top"><label for="chat_moderator_roles_1"><?php _e('Moderator roles', $this->translation_domain); ?></label></td> 
    1311                                     <td> 
    1312                                         <?php 
    1313                                         foreach (get_editable_roles() as $role => $details) { 
    1314                                             $name = translate_user_role($details['name'] ); 
    1315                                         ?> 
    1316                                         <label><input type="checkbox" id="chat_moderator_roles_1_<?php print $role; ?>" name="chat_site[moderator_roles][]" class="chat_moderator_roles" value="<?php print $role; ?>" <?php print (in_array($role, $this->get_option('moderator_roles', array('administrator','editor','author'), 'site')) > 0)?'checked="checked"':''; ?> disabled="disabled" /> <?php _e($name, $this->translation_domain); ?></label><br/> 
    1317                                         <?php  
    1318                                         } 
    1319                                         ?> 
    1320                                     </td> 
    1321                                     <td class="info"><?php _e("Select which roles are moderators", $this->translation_domain); ?></td> 
    1322                                 </tr> 
    1323                             </table> 
    1324                         </fieldset> 
    1325                     </div> 
    1326                      
    1327                     <div id="chat_twitter_api_panel" class="chat_panel chat_auth_panel"> 
    1328                         <table border="0" cellpadding="4" cellspacing="0"> 
    1329                             <tr> 
    1330                                 <td colspan="4" ><p class="info"><b><?php printf(__('Only available in the full version. <a href="%s" target="_blank">**Upgrade to the full version now &raquo;**</a>', $this->translation_domain), 'http://premium.wpmudev.org/project/wordpress-chat-plugin'); ?></b></p></td> 
    1331                             </tr> 
    1332                             <tr class="chat_lite_disabled"> 
    1333                                 <td><label for="chat_twitter_api_key"><?php _e('@Anywhere API key', $this->translation_domain); ?></label></td> 
    1334                                 <td> 
    1335                                     <input type="text" id="chat_twitter_api_key" name="chat_default[twitter_api_key]" value="<?php print $this->get_option('twitter_api_key', ''); ?>" class="" size="40" disabled="disabled" /> 
    1336                                 </td> 
    1337                                 <td class="info"> 
    1338                                     <ol> 
    1339                                         <li><?php print sprintf(__('Register this site as an application on Twitter\'s <a target="_blank" href="%s">app registration page</a>', $this->translation_domain), "http://dev.twitter.com/apps/new"); ?></li> 
    1340                                         <li><?php _e('If you\'re not logged in, you can use your Twitter username and password', $this->translation_domain); ?></li> 
    1341                                         <li><?php _e('Your Application\'s Name will be what shows up after "via" in your twitter stream', $this->translation_domain); ?></li> 
    1342                                         <li><?php _e('Application Type should be set on Browser', $this->translation_domain); ?></li> 
    1343                                         <li><?php _e('The callback URL should be', $this->translation_domain); ?> <b><?php print get_bloginfo('url'); ?></b></li> 
    1344                                         <li><?php _e('Once you have registered your site as an application, you will be provided with @Anywhere API key.', $this->translation_domain); ?></li> 
    1345                                         <li><?php _e('Copy and paste them to the fields on the left', $this->translation_domain); ?></li> 
    1346                                     </ol> 
    1347                                 </td> 
    1348                             </tr> 
    1349                         </table> 
    1350                     </div> 
    1351                      
    1352                     <div id="chat_facebook_api_panel" class="chat_panel chat_auth_panel"> 
    1353                         <table border="0" cellpadding="4" cellspacing="0"> 
    1354                             <tr> 
    1355                                 <td colspan="4" ><p class="info"><b><?php printf(__('Only available in the full version. <a href="%s" target="_blank">**Upgrade to the full version now &raquo;**</a>', $this->translation_domain), 'http://premium.wpmudev.org/project/wordpress-chat-plugin'); ?></b></p></td> 
    1356                             </tr> 
    1357                             <tr class="chat_lite_disabled"> 
    1358                                 <td><label for="chat_facebook_application_id"><?php _e('Application id', $this->translation_domain); ?></label></td> 
    1359                                 <td> 
    1360                                     <input type="text" id="chat_facebook_application_id" name="chat_default[facebook_application_id]" value="<?php print $this->get_option('facebook_application_id', ''); ?>" class="" size="40" disabled="disabled" /> 
    1361                                 </td> 
    1362                                 <td rowspan="2" class="info"> 
    1363                                     <ol> 
    1364                                         <li><?php print sprintf(__('Register this site as an application on Facebook\'s <a target="_blank" href="%s">app registration page</a>', $this->translation_domain), 'http://www.facebook.com/developers/createapp.php'); ?></li> 
    1365                                         <li><?php _e('If you\'re not logged in, you can use your Facebook username and password', $this->translation_domain); ?></li> 
    1366                                         <li><?php _e('The site URL should be', $this->translation_domain); ?> <b><?php print get_bloginfo('url'); ?></b></li> 
    1367                                         <li><?php _e('Once you have registered your site as an application, you will be provided with a Application ID and a Application secret.', $this->translation_domain); ?></li> 
    1368                                         <li><?php _e('Copy and paste them to the fields on the left', $this->translation_domain); ?></li> 
    1369                                     </ol> 
    1370                                 </td> 
    1371                             </tr> 
    1372                                      
    1373                             <tr class="chat_lite_disabled"> 
    1374                                 <td><label for="chat_facebook_application_secret"><?php _e('Application secret', $this->translation_domain); ?></label></td> 
    1375                                 <td> 
    1376                                     <input type="text" id="chat_facebook_application_secret" name="chat_default[facebook_application_secret]" value="<?php print $this->get_option('facebook_application_secret', ''); ?>" class="" size="40" disabled="disabled" /> 
    1377                                 </td> 
    1378                             </tr> 
    1379                         </table> 
    1380                     </div> 
    1381                      
    1382                     <div id="chat_advanced_panel" class="chat_panel chat_advanced_panel"> 
    1383                         <table border="0" cellpadding="4" cellspacing="0" > 
    1384                             <tr> 
    1385                                 <td colspan="4" ><p class="info"><b><?php printf(__('Only available in the full version. <a href="%s" target="_blank">**Upgrade to the full version now &raquo;**</a>', $this->translation_domain), 'http://premium.wpmudev.org/project/wordpress-chat-plugin'); ?></b></p></td> 
    1386                             </tr> 
    1387                             <tr class="chat_lite_disabled"> 
    1388                                 <td><label for="chat_interval"><?php _e('Interval', $this->translation_domain); ?></label></td> 
    1389                                 <td> 
    1390                                     <input type="text" id="chat_interval" name="chat_default[interval]" value="<?php print $this->get_option('interval', 1); ?>" class="" size="2" disabled="disabled" /> 
    1391                                 </td> 
    1392                                 <td class="info"> 
    1393                                     Refresh interval in seconds 
    1394                                 </td> 
    1395                             </tr> 
    1396                         </table> 
    1397                     </div> 
    1398                 </div> 
    1399              
    1400                 <input type="hidden" name="page_options" value="chat_default,chat_site" /> 
    1401                  
    1402                 <p class="submit"><input type="submit" name="Submit" 
    1403                     value="<?php _e('Save Changes', $this->translation_domain) ?>" /></p> 
    1404             </form> 
    1405             </div> 
    1406             <?php 
    1407         } 
    1408          
    1409         /** 
    1410          * Title filter 
    1411          *  
    1412          * @see     http://codex.wordpress.org/Function_Reference/wp_head 
    1413          *  
    1414          * @global  object  $current_user 
    1415          * @global  object  $post 
    1416          * @global  array   $chat_localized 
    1417          * @param   string  $title 
    1418          */ 
    1419         function wp_head() { 
    1420             global $current_user, $post, $chat_localized; 
    1421          
    1422             get_currentuserinfo(); 
    1423                      
    1424             if ( !in_array('subscriber',$current_user->roles) ) { 
    1425                 $vip = 'yes'; 
    1426             } else { 
    1427                 $vip = 'no'; 
    1428             } 
    1429                      
    1430             $chat_sounds = get_usermeta($current_user->ID, 'chat_sounds', 'enabled'); 
    1431             if (empty($chat_sounds)) { 
    1432                 $chat_sounds = $this->get_option('sounds', "enabled"); 
    1433             } 
    1434                      
    1435             if (!is_array($chat_localized)) { 
    1436                 $chat_localized = array(); 
    1437             } 
    1438                      
    1439             $chat_localized["url"] = site_url()."/wp-admin/admin-ajax.php"; 
    1440             $chat_localized["plugin_url"] = plugins_url("chat/"); 
    1441             $chat_localized["facebook_text_sign_out"] = __('Sign out of Facebook', $this->translation_domain); 
    1442             $chat_localized["twitter_text_sign_out"] = __('Sign out of Twitter', $this->translation_domain); 
    1443             $chat_localized["please_wait"] = __('Please wait...', $this->translation_domain); 
    1444                      
    1445             $chat_localized["minimize"] = __('Minimize', $this->translation_domain); 
    1446             $chat_localized["minimize_button"] = plugins_url('chat/images/16-square-blue-remove.png'); 
    1447             $chat_localized["maximize"] = __('Maximize', $this->translation_domain); 
    1448             $chat_localized["maximize_button"] = plugins_url('chat/images/16-square-green-add.png'); 
    1449              
    1450             $chat_localized["interval"] = $this->get_option('interval', 1); 
    1451              
    1452             if ( is_user_logged_in() ) { 
    1453                 $chat_localized['name'] = $current_user->display_name; 
    1454                 $chat_localized['vip'] = $vip; 
    1455                 $chat_localized['sounds'] = $chat_sounds; 
    1456                 $chat_localized['post_id'] = $post->ID; 
    1457             } else { 
    1458                 $chat_localized['name'] = ""; 
    1459                 $chat_localized['vip'] = false; 
    1460                 $chat_localized['sounds'] = "enabled"; 
    1461                 $chat_localized['post_id'] = $post->ID; 
    1462             } 
    1463              
    1464             if ($this->get_option('twitter_api_key') != '') { 
    1465                 $chat_localized["twitter_active"] = true; 
    1466                 wp_enqueue_script('twitter', 'http://platform.twitter.com/anywhere.js?id='.$this->get_option('twitter_api_key').'&v=1'); 
    1467             } else { 
    1468                 $chat_localized["twitter_active"] = false; 
    1469             } 
    1470             if ($this->get_option('facebook_application_id') != '') { 
    1471                 $chat_localized["facebook_active"] = true; 
    1472                 $chat_localized["facebook_app_id"] = $this->get_option('facebook_application_id'); 
    1473                 wp_enqueue_script('facebook', 'http://connect.facebook.net/en_US/all.js'); 
    1474             } else { 
    1475                 $chat_localized["facebook_active"] = false; 
    1476             } 
    1477             wp_enqueue_script('jquery'); 
    1478             wp_enqueue_script('jquery-cookie'); 
    1479             wp_enqueue_script('chat_js'); 
    1480              
    1481             if ($this->get_option('site', 'enabled', 'site') == 'enabled') { 
    1482                 $atts = array( 
    1483                     'id' => 1, 
    1484                     'sound' => $this->get_option('sound', 'enabled', 'site'), 
    1485                     'avatar' => $this->get_option('avatar', 'enabled', 'site'), 
    1486                     'emoticons' => $this->get_option('emoticons', 'enabled', 'site'), 
    1487                     'date_show' => $this->get_option('date_show', 'disabled', 'site'), 
    1488                     'time_show' => $this->get_option('time_show', 'disabled', 'site'), 
    1489                     'width' => $this->get_option('width', '', 'site'), 
    1490                     'height' => $this->get_option('height', '', 'site'), 
    1491                     'background_color' => $this->get_option('background_color', '#ffffff', 'site'), 
    1492                     'date_color' => $this->get_option('date_color', '#6699CC', 'site'), 
    1493                     'name_color' => $this->get_option('name_color', '#666666', 'site'), 
    1494                     'moderator_name_color' => $this->get_option('moderator_name_color', '#6699CC', 'site'), 
    1495                     'text_color' => $this->get_option('text_color', '#000000', 'site'), 
    1496                     'font' => $this->get_option('font', '', 'site'), 
    1497                     'font_size' => $this->get_option('font_size', '', 'site'), 
    1498                     'log_creation' => $this->get_option('log_creation', 'disabled', 'site'), 
    1499                     'log_display' => $this->get_option('log_display', 'disabled', 'site'), 
    1500                     'login_options' => join(',', $this->get_option('login_options', array('current_user'), 'site')), 
    1501                     'moderator_roles' => join(',', $this->get_option('moderator_roles', array('administrator','editor','author'))), 
    1502                 ); 
    1503                 $this->process_shortcode($atts); 
    1504             } 
    1505         } 
    1506          
    1507         /** 
    1508          * Check the post for the short code and mark it 
    1509          *  
    1510          * @deprecated  No longer relevant with site wide chat as well 
    1511          */ 
    1512         function post_check($post_ID) { 
    1513             $post = get_post($post_ID); 
    1514             if ( $post->post_content != str_replace('[chat', '', $post->post_content) ) { 
    1515                 update_post_meta($post_ID, '_has_chat', 'yes'); 
    1516             } else { 
    1517                 delete_post_meta($post_ID, '_has_chat'); 
    1518             } 
    1519         } 
    1520          
    1521         /** 
    1522          * Handle profile update 
    1523          *  
    1524          * @see     http://codex.wordpress.org/Function_Reference/wp_redirect 
    1525          *  
    1526          * @global  object  $current_user 
    1527          * @param   string  $location 
    1528          * @return  string  $location 
    1529          */ 
    1530         function profile_process($location) { 
    1531             global $current_user; 
    1532             if ( !empty( $_GET['user_id'] ) ) { 
    1533                 $uid = $_GET['user_id']; 
    1534             } else { 
    1535                 $uid = $current_user->ID; 
    1536             } 
    1537             if ( !empty( $_POST['chat_sounds'] ) ) { 
    1538                 update_usermeta( $uid, 'chat_sounds', $_POST['chat_sounds'] ); 
    1539             } 
    1540             return $location; 
    1541         } 
    1542          
    1543         /** 
    1544          * Add sound preferences to user profile 
    1545          *  
    1546          * @global  object  $current_user 
    1547          */ 
    1548         function profile() { 
    1549             global $current_user; 
    1550              
    1551             if (!empty( $_GET['user_id'])) { 
    1552                 $uid = $_GET['user_id']; 
    1553             } else { 
    1554                 $uid = $current_user->ID; 
    1555             } 
    1556              
    1557             $chat_sounds = get_usermeta( $uid, 'chat_sounds' ); 
    1558             ?> 
    1559             <h3><?php _e('Chat Settings', $this->translation_domain); ?></h3> 
    1560              
    1561             <table class="form-table"> 
    1562                 <tr> 
    1563                 <th><label for="chat_sounds"><?php _e('Chat sounds', $this->translation_domain); ?></label></th> 
    1564                 <td> 
    1565                     <select name="chat_sounds" id="chat_sounds"> 
    1566                     <option value="enabled"<?php if ( $chat_sounds == 'enabled' ) { echo ' selected="selected" '; } ?>><?php _e('Enabled', $this->translation_domain); ?></option> 
    1567                     <option value="disabled"<?php if ( $chat_sounds == 'disabled' ) { echo ' selected="selected" '; } ?>><?php _e('Disabled', $this->translation_domain); ?></option> 
    1568                     </select> 
    1569                 </td> 
    1570                 </tr> 
    1571             </table> 
    1572             <?php 
    1573         } 
    1574          
    1575         /** 
    1576          * Output CSS 
    1577          */ 
    1578         function output_css() { 
    1579             echo '<link rel="stylesheet" href="' . plugins_url('chat/css/style.css') . '" type="text/css" />'; 
    1580         } 
    1581          
    1582         /** 
    1583          * Validate and return the Facebook cookie payload 
    1584          *  
    1585          * @see     http://developers.facebook.com/docs/guides/web#login 
    1586          */ 
    1587         function get_facebook_cookie() { 
    1588             $app_id = $this->get_option('facebook_application_id', ''); 
    1589             $application_secret = $this->get_option('facebook_application_secret', ''); 
    1590              
    1591             $args = array(); 
    1592             parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args); 
    1593             ksort($args); 
    1594             $payload = ''; 
    1595              
    1596             foreach ($args as $key => $value) { 
    1597                 if ($key != 'sig') { 
    1598                     $payload .= $key . '=' . $value; 
    1599                 } 
    1600             } 
    1601              
    1602             if (md5($payload . $application_secret) != $args['sig']) { 
    1603                 return null; 
    1604             } 
    1605             return $args; 
    1606         } 
    1607          
    1608         /** 
    1609          * Authenticate user 
    1610          *  
    1611          * @global  object  $current_user 
    1612          * @param   array   $options    Login options 
    1613          * @return  int         How the user was authenticated or false (1,2,3,4,5) 
    1614          */ 
    1615         function authenticate($options = array()) { 
    1616             global $current_user; 
    1617              
    1618             // current user 
    1619             if (is_user_logged_in() && current_user_can('read')) { 
    1620                 return 1; 
    1621             } 
    1622             // Network user 
    1623             if (in_array('network_user', $options) && is_user_logged_in()) { 
    1624                 return 2; 
    1625             } 
    1626             if (in_array('twitter', $options) && preg_match('/twitter/', $_COOKIE['chat_stateless_user_type_104']) > 0) { 
    1627                 return 4; 
    1628             } 
    1629             if (in_array('public_user', $options) && preg_match('/public_user/', $_COOKIE['chat_stateless_user_type_104']) > 0) { 
    1630                 return 5; 
    1631             } 
    1632             return false; 
    1633         } 
    1634          
    1635          
    1636         /** 
    1637          * Get the user name 
    1638          *  
    1639          * So many loggin options, this will decide the display name of the user 
    1640          *  
    1641          * @global  object  $current_user 
    1642          * @param   array   $options    Login options 
    1643          * @return  string              User name or false 
    1644          */ 
    1645         function get_user_name($options = array()) { 
    1646             global $current_user; 
    1647              
    1648             // current_user or network_user 
    1649             if ((is_user_logged_in() && current_user_can('read')) || (in_array('network_user', $options) && is_user_logged_in())) { 
    1650                 return $current_user->display_name; 
    1651             } 
    1652             if (in_array('twitter', $options) && isset($_COOKIE['chat_stateless_user_type_104']) && preg_match('/twitter/', $_COOKIE['chat_stateless_user_type_104']) > 0) { 
    1653                 return $_COOKIE['chat_stateless_user_name_twitter']; 
    1654             } 
    1655             if (in_array('public_user', $options) && isset($_COOKIE['chat_stateless_user_type_104']) && preg_match('/public_user/', $_COOKIE['chat_stateless_user_type_104']) > 0) { 
    1656                 return $_COOKIE['chat_stateless_user_name_public_user']; 
    1657             } 
    1658             return false; 
    1659         } 
    1660          
    1661         /** 
    1662          * Do our magic in the footer and add the site wide chat 
    1663          */ 
    1664         function wp_footer() { 
    1665             $atts = array( 
    1666                 'id' => 1, 
    1667                 'sound' => $this->get_option('sound', 'enabled', 'site'), 
    1668                 'avatar' => $this->get_option('avatar', 'enabled', 'site'), 
    1669                 'emoticons' => $this->get_option('emoticons', 'enabled', 'site'), 
    1670                 'date_show' => $this->get_option('date_show', 'disabled', 'site'), 
    1671                 'time_show' => $this->get_option('time_show', 'disabled', 'site'), 
    1672                 'width' => $this->get_option('width', '', 'site'), 
    1673                 'height' => $this->get_option('height', '', 'site'), 
    1674                 'background_color' => $this->get_option('background_color', '#ffffff', 'site'), 
    1675                 'date_color' => $this->get_option('date_color', '#6699CC', 'site'), 
    1676                 'name_color' => $this->get_option('name_color', '#666666', 'site'), 
    1677                 'moderator_name_color' => $this->get_option('moderator_name_color', '#6699CC', 'site'), 
    1678                 'text_color' => $this->get_option('text_color', '#000000', 'site'), 
    1679                 'font' => $this->get_option('font', '', 'site'), 
    1680                 'font_size' => $this->get_option('font_size', '', 'site'), 
    1681                 'log_creation' => $this->get_option('log_creation', 'disabled', 'site'), 
    1682                 'log_display' => $this->get_option('log_display', 'disabled', 'site'), 
    1683                 'login_options' => join(',', $this->get_option('login_options', array('current_user'), 'site')), 
    1684                 'moderator_roles' => join(',', $this->get_option('moderator_roles', array('administrator','editor','author'))), 
    1685             ); 
    1686              
    1687             if ($this->get_option('site', 'enabled', 'site') == 'enabled') { 
    1688                 $width = $this->get_option('width', '', 'site'); 
    1689                 if (!empty($width)) { 
    1690                     $width_str = 'width: '.$width; 
    1691                     $width_style = ''; 
    1692                 } else { 
    1693                     $width_style = ' free-width'; 
    1694                 } 
    1695                 echo '<div id="chat-block-site" class="chat-block-site closed'.$width_style.'" style="'.$width_str.'; background-color: '.$this->get_option('border_color', '#4b96e2', 'site').';">'; 
    1696                 echo '<div id="chat-block-header" class="chat-block-header"><span class="chat-title-text">'.__('Chat', $this->translation_domain).'</span><span class="chat-prompt-text">'.__('Click here to chat!', $this->translation_domain).'</span>'; 
    1697                 echo '<img src="'.plugins_url('chat/images/16-square-green-add.png').'" alt="+" width="16" height="16" title="'.__('Maximize', $this->translation_domain).'" class="chat-toggle-button" id="chat-toggle-button" />'; 
    1698                 echo '</div>'; 
    1699                 echo '<div id="chat-block-inner" style="background: '.$this->get_option('background_color', '#ffffff', 'site').';">'.$this->process_shortcode($atts).'</div>'; 
    1700                 echo '</div>'; 
    1701             } 
    1702         } 
    1703          
    1704         /** 
    1705          * Process short code 
    1706          *  
    1707          * @global  object  $post 
    1708          * @global  array   $chat_localized Localized strings and options 
    1709          * @return  string                  Content 
    1710          */ 
    1711         function process_shortcode($atts) { 
    1712             global $post, $chat_localized; 
    1713              
    1714             $a = shortcode_atts(array( 
    1715                 'id' => 1, 
    1716                 'sound' => $this->get_option('sound', 'enabled'), 
    1717                 'avatar' => $this->get_option('avatar', 'enabled'), 
    1718                 'emoticons' => $this->get_option('emoticons', 'enabled'), 
    1719                 'date_show' => $this->get_option('date_show', 'disabled'), 
    1720                 'time_show' => $this->get_option('time_show', 'disabled'), 
    1721                 'width' => $this->get_option('width', '700px'), 
    1722                 'height' => $this->get_option('height', '425px'), 
    1723                 'background_color' => $this->get_option('background_color', '#ffffff'), 
    1724                 'date_color' => $this->get_option('date_color', '#6699CC'), 
    1725                 'name_color' => $this->get_option('name_color', '#666666'), 
    1726                 'moderator_name_color' => $this->get_option('moderator_name_color', '#6699CC'), 
    1727                 'text_color' => $this->get_option('text_color', '#000000'), 
    1728                 'font' => $this->get_option('font', ''), 
    1729                 'font_size' => $this->get_option('font_size', ''), 
    1730                 'log_creation' => $this->get_option('log_creation', 'disabled'), 
    1731                 'log_display' => $this->get_option('log_display', 'disabled'), 
    1732                 'login_options' => join(',', $this->get_option('login_options', array('current_user'))), 
    1733                 'moderator_roles' => join(',', $this->get_option('moderator_roles', array('administrator','editor','author'))), 
    1734             ), $atts); 
    1735              
    1736             foreach ($a as $k=>$v) { 
    1737                 $chat_localized[$k.'_'.$a['id']] = $v; 
    1738             } 
    1739              
    1740             $font_style = ""; 
    1741          
    1742             if (!empty($a['font'])) { 
    1743                 $font_style .= 'font-family: '.$a['font'].';'; 
    1744             } 
    1745             if (!empty($a['font_size'])) { 
    1746                 $font_style .= 'font-size: '.$a['font_size'].'px;'; 
    1747             } 
    1748              
    1749             if ($post && $post->ID) { 
    1750                 $permalink = get_permalink($post->ID); 
    1751             } else { 
    1752                 $permalink = ""; 
    1753             } 
    1754              
    1755             $chat_url = $_SERVER['REQUEST_URI']; 
    1756             $chat_url = rtrim($chat_url, "/"); 
    1757             $chat_url = substr($chat_url, -8); 
    1758              
    1759             if (empty($permalink) || preg_match('/\?/', $permalink) > 0) { 
    1760                 $url_separator = "&"; 
    1761             } else { 
    1762                 $url_separator = "?"; 
    1763             } 
    1764              
    1765             $smilies_list = array(':)', ':D', ':(', ':o', '8O', ':?', '8)', ':x', ':P', ':|', ';)', ':lol:', ':oops:', ':cry:', ':evil:', ':twisted:', ':roll:', ':!:', ':?:', ':idea:', ':arrow:', ':mrgreen:'); 
    1766              
    1767             if ($post) { 
    1768                 $content = '<div id="chat-box-'.$a['id'].'" class="chat-box" style="width: '.$a['width'].' !important; background-color: '.$a['background_color'].'; '.$font_style.'" >'; 
    1769             } else { 
    1770                 $content = '<div id="chat-box-'.$a['id'].'" class="chat-box" style="width: '.$a['width'].' !important; height: '.$a['height'].' !important; background-color: '.$a['background_color'].'; '.$font_style.'" >'; 
    1771             } 
    1772             $content .= '<div id="chat-wrap-'.$a['id'].'" class="chat-wrap avatar-'.$a['avatar'].'" >'; 
    1773             if ($post) { 
    1774                 $content .= '<div id="chat-area-'.$a['id'].'" class="chat-area" style="height: '.$a['height'].' !important;" ></div></div>'; 
    1775             } else { 
    1776                 $content .= '<div id="chat-area-'.$a['id'].'" class="chat-area" ></div></div>'; 
    1777             } 
    1778             $chat_localized['type_'.$a['id']] = $this->authenticate(preg_split('/,/', $a['login_options'])); 
    1779             if ( $chat_localized['type_'.$a['id']] ) { 
    1780                 $chat_localized['name_'.$a['id']] = $this->get_user_name(preg_split('/,/', $a['login_options'])); 
    1781                      
    1782                 $content .= '<div class="chat-note"><p><strong>' . __('Message', $this->translation_domain) . '</strong></p></div>'; 
    1783                 $content .= '<form id="send-message-area">'; 
    1784                 $content .= '<input type="hidden" name="chat-post-id" id="chat-post-id-'.$a['id'].'" value="'.$a['id'].'" class="chat-post-id" />'; 
    1785                      
    1786                 $content .= '<div class="chat-tool-bar-wrap"><div class="chat-note">'; 
    1787                  
    1788                 if ($a['emoticons'] == 'enabled') { 
    1789                     $content .= '<div id="chat-emoticons-list-'.$a['id'].'" class="chat-emoticons-list chat-tool-bar">'; 
    1790                     foreach ($smilies_list as $smilie) { 
    1791                         $content .= convert_smilies($smilie); 
    1792                     } 
    1793                     $content .= '</div>'; 
    1794                 } 
    1795                      
    1796                 $content .= '<div class="chat-clear"></div></div></div>'; 
    1797                      
    1798                 $content .= '<div id="chat-send-wrap">'; 
    1799                 $content .= '<div class="chat-clear"></div>'; 
    1800                 $content .= '<div class="chat-send-wrap"><textarea id="chat-send-'.$a['id'].'" class="chat-send"></textarea></div>'; 
    1801                 $content .= '<div class="chat-note">' . __('"Enter" to send', $this->translation_domain) . '. ' . __('Place code in between code tags', $this->translation_domain) . '.</div>'; 
    1802                 if ( $this->authenticate(preg_split('/,/', $a['login_options'])) > 2 ) { 
    1803                     $content .= '<div class="chat-note"><input type="button" value="'. __('Logout', $this->translation_domain) .'" name="chat-logout-submit" class="chat-logout-submit" id="chat-logout-submit-'.$a['id'].'" /></div>'; 
    1804                 } 
    1805                 $content .= '</div>'; 
    1806                 $content .= '<div class="chat-tool-bar-wrap"><div class="chat-note">'; 
    1807                  
    1808                 $content .= '<div class="chat-clear"></div></div></div>'; 
    1809                 $content .= '</form>'; 
    1810             } else { 
    1811                 if (preg_match('/public_user|twitter|facebook/', $a['login_options']) > 0) { 
    1812                     if (preg_match('/public_user/', $a['login_options']) > 0) { 
    1813                         $content .= '<div class="login-message">'.__('To get started just enter your email address and desired username', $this->translation_domain).': </div>'; 
    1814                         $content .= '<form id="chat-login-'.$a['id'].'" class="chat-login">'; 
    1815                         $content .= '<div id="chat-login-wrap-'.$a['id'].'" class="chat-login-wrap">'; 
    1816                         $content .= '<label for="chat-login-name-'.$a['id'].'">'.__('Name', $this->translation_domain) . '</label> <input id="chat-login-name-'.$a['id'].'" name="chat-login-name" class="chat-login-name" type="text" /> '; 
    1817                         $content .= '<label for="chat-login-email-'.$a['id'].'">' . __('E-mail', $this->translation_domain) . '</label> <input id="chat-login-email-'.$a['id'].'" name="chat-login-email" class="chat-login-email" type="text" /> '; 
    1818                         $content .= '<input type="submit" value="'. __('Login', $this->translation_domain) .'" name="chat-login-submit" id="chat-login-submit-'.$a['id'].'" />'; 
    1819                         $content .= '</div>'; 
    1820                         $content .= '</form>'; 
    1821                     } 
    1822                     if (preg_match('/twitter|facebook/', $a['login_options']) > 0 && ($this->get_option('twitter_api_key') != '' or $this->get_option('facebook_application_id') != '')) {  
    1823                         $content .= '<div class="login-message">Log in using your: </div>'; 
    1824                         $content .= '<div class="chat-login-wrap">'; 
    1825                         if (preg_match('/twitter/', $a['login_options']) > 0 && $this->get_option('twitter_api_key') != '') {  
    1826                             $content .= '<span id="chat-twitter-signin-btn-'.$a['id'].'" class="chat-auth-button chat-twitter-signin-btn"></span>'; 
    1827                         } 
    1828                         if (preg_match('/facebook/', $a['login_options']) > 0 && $this->get_option('facebook_application_id') != '') {  
    1829                             $content .= '<span id="chat-facebook-signin-btn-'.$a['id'].'" class="chat-auth-button chat-facebook-signin-btn"></span>'; 
    1830                         } 
    1831                         $content .= '</div>'; 
    1832                     } 
    1833                 } else { 
    1834                     $content .= '<div class="login-message"><strong>' . __('You must be logged in to participate in chats', $this->translation_domain) . '</strong></div>'; 
    1835                 } 
    1836                 $content .= '<form id="send-message-area">'; 
    1837                 $content .= '<input type="hidden" name="chat-post-id" id="chat-post-id-'.$a['id'].'" value="'.$a['id'].'" class="chat-post-id" />'; 
    1838                 $content .= '</form>'; 
    1839             } 
    1840                      
    1841             if ( $a['log_display'] == 'enabled' &&  $a['id'] != 1) { 
    1842                 $dates = $this->get_archives($a['id']); 
    1843                      
    1844                 if ( $dates && is_array($dates) ) { 
    1845                     $content .= '<br />'; 
    1846                     $content .= '<div class="chat-note"><p><strong>' . __('Chat Logs', $this->translation_domain) . '</strong></p></div>'; 
    1847                     foreach ($dates as $date) { 
    1848                         $date_content .= '<li><a class="chat-log-link" style="text-decoration: none;" href="' . $permalink . $url_separator . 'lid=' . $date->id . '">' . date_i18n(get_option('date_format').' '.get_option('time_format'), strtotime($date->start) + get_option('gmt_offset') * 3600, false) . ' - ' . date_i18n(get_option('date_format').' '.get_option('time_format'), strtotime($date->end) + get_option('gmt_offset') * 3600, false) . '</a>'; 
    1849                         if (isset($_GET['lid']) && $_GET['lid'] == $date->id) { 
    1850                             $_POST['cid'] = $a['id']; 
    1851                             $_POST['archived'] = 'yes'; 
    1852                             $_POST['function'] = 'update'; 
    1853                             $_POST['since'] = strtotime($date->start); 
    1854                             $_POST['end'] = strtotime($date->end); 
    1855                             $_POST['date_color'] = $a['date_color']; 
    1856                             $_POST['name_color'] = $a['name_color']; 
    1857                             $_POST['moderator_name_color'] = $a['moderator_name_color']; 
    1858                             $_POST['text_color'] = $a['text_color']; 
    1859                             $_POST['date_show'] = $a['date_show']; 
    1860                             $_POST['time_show'] = $a['time_show']; 
    1861                             $_POST['avatar'] = $a['avatar']; 
    1862                              
    1863                             $date_content .= '<div class="chat-wrap avatar-'.$a['avatar'].'" style="background-color: '.$a['background_color'].'; '.$font_style.'"><div class="chat-area" >'; 
    1864                             $date_content .= $this->process('yes'); 
    1865                             $date_content .= '</div></div>'; 
    1866                         } 
    1867                         $date_content .= '</li>'; 
    1868                     } 
    1869                     $content .= '<div id="chat-log-wrap-'.$a['id'].'" class="chat-log-wrap" style="background-color: '.$a['background_color'].'; '.$font_style.'"><div id="chat-log-area-'.$a['id'].'" class="chat-log-area"><ul>' . $date_content . '</ul></div></div>'; 
    1870                 } 
    1871             } 
    1872             $content .= '<div class="chat-clear"></div></div>'; 
    1873              
    1874             wp_localize_script('chat_js', 'chat_localized', $chat_localized); 
    1875              
    1876             return $content; 
    1877         } 
    1878          
    1879         /** 
    1880          * @see     http://codex.wordpress.org/TinyMCE_Custom_Buttons 
    1881          */ 
    1882         function tinymce_register_button($buttons) { 
    1883             array_push($buttons, "separator", "chat"); 
    1884             return $buttons; 
    1885         } 
    1886          
    1887         /** 
    1888          * @see     http://codex.wordpress.org/TinyMCE_Custom_Buttons 
    1889          */ 
    1890         function tinymce_load_langs($langs) { 
    1891             $langs["chat"] =  plugins_url('chat/tinymce/langs/langs.php'); 
    1892             return $langs; 
    1893         } 
    1894       
    1895         /** 
    1896          * @see     http://codex.wordpress.org/TinyMCE_Custom_Buttons 
    1897          */ 
    1898         function tinymce_add_plugin($plugin_array) { 
    1899             $plugin_array['chat'] = plugins_url('chat/tinymce/editor_plugin.js'); 
    1900             return $plugin_array; 
    1901         } 
    1902          
    1903         /** 
    1904          * Process chat requests 
    1905          *  
    1906          * Mostly copied from process.php 
    1907          *  
    1908          * @global  object  $current_user  
    1909          * @param   string  $return     Return? 'yes' or 'no' 
    1910          * @return  string          If $return is yes will return the output else echo 
    1911          */ 
    1912         function process($return = 'no') { 
    1913             global $current_user; 
    1914             get_currentuserinfo(); 
    1915              
    1916             $function = $_POST['function']; 
    1917              
    1918             if ( empty($function) ) { 
    1919                 $function = $_GET['function']; 
    1920             } 
    1921              
    1922             $log = array(); 
    1923              
    1924             switch($function) { 
    1925                 case 'update': 
    1926                     $chat_id = $_POST['cid']; 
    1927                     $since = $_POST['since']; 
    1928                     $since_id = $_POST['since_id']; 
    1929                     $end = isset($_POST['end'])?$_POST['end']:0; 
    1930                     $archived = isset($_POST['archived'])?$_POST['archived']:'no'; 
    1931                      
    1932                     $rows = $this->get_messages($chat_id, $since, $end, $archived, $since_id); 
    1933      
    1934                     if ($rows) { 
    1935                         $text = array(); 
    1936                          
    1937                         foreach ($rows as $row) { 
    1938                             $message = stripslashes($row->message); 
    1939                             $reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/"; 
    1940                              
    1941                             if(($message) != "\n" && ($message) != "<br />" && ($message) != "") { 
    1942                                     if(preg_match($reg_exUrl, $message, $url)) { 
    1943                                         $message = preg_replace($reg_exUrl, '<a href="'.$url[0].'" target="_blank">'.$url[0].'</a>', $message); 
    1944                                     } 
    1945                             } 
    1946                              
    1947                             $message = preg_replace(array('/\[code\]/','/\[\/code\]/'), array('<code style="background: '.$this->get_option('code_color', '#FFFFCC').'; padding: 4px 8px;">', '</code>'), $message); 
    1948                              
    1949                             $message = str_replace("\n", "<br />", $message); 
    1950                              
    1951                             $prepend = ""; 
    1952                             if ($_POST['avatar'] == 'enabled') { 
    1953                                 if (preg_match('/@/', $row->avatar)) { 
    1954                                     $avatar = get_avatar($row->avatar, 50, null, $row->name); 
    1955                                 } else { 
    1956                                     $avatar = "<img alt='{$row->name}' src='{$row->avatar}' class='avatar photo' />"; 
    1957                                 } 
    1958                                 $prepend .= "$avatar "; 
    1959                             } 
    1960                              
    1961                             if ($_POST['date_show'] == 'enabled') { 
    1962                                 $prepend .= ' <span class="date" style="background: '.$_POST['date_color'].';">'. date_i18n(get_option('date_format'), strtotime($row->timestamp) + get_option('gmt_offset') * 3600, false) . '</span>'; 
    1963                             } 
    1964                             if ($_POST['time_show'] == 'enabled') { 
    1965                                 $prepend .= ' <span class="time" style="background: '.$_POST['date_color'].';">'. date_i18n(get_option('time_format'), strtotime($row->timestamp) + get_option('gmt_offset') * 3600, false) . '</span>'; 
    1966                             } 
    1967                              
    1968                             if ($row->moderator == 'yes') { 
    1969                                 $name_color = $_POST['moderator_name_color']; 
    1970                             } else { 
    1971                                 $name_color = $_POST['name_color']; 
    1972                             } 
    1973                              
    1974                             $prepend .= ' <span class="name" style="background: '.$name_color.';">'.stripslashes($row->name).'</span>'; 
    1975                              
    1976                             $text[$row->id] = " <div id='row-".strtotime($row->timestamp)."' class='row'>{$prepend}<span class='message' style='color: ".$_POST['text_color']."'>".convert_smilies($message)."</span><div class='chat-clear'></div></div>"; 
    1977                             $last_check = $row->timestamp; 
    1978                         } 
    1979                          
    1980                         $log['text'] = $text; 
    1981                         $log['time'] = strtotime($last_check)+1; 
    1982                     } 
    1983                     break;  
    1984                 case 'send': 
    1985                     $chat_id = $_POST['cid']; 
    1986                     $name = htmlentities(strip_tags($_POST['name'])); 
    1987                     $avatar = (isset($_COOKIE['chat_stateless_user_image_'.$this->auth_type_map[$_POST['type']]]) && !empty($_COOKIE['chat_stateless_user_image_'.$this->auth_type_map[$_POST['type']]]))?$_COOKIE['chat_stateless_user_image_'.$this->auth_type_map[$_POST['type']]]:$current_user->user_email; 
    1988                     // $avatar = ($current_user && $current_user->user_email && $current_user->display_name == $_POST['name'])?$current_user->user_email:$avatar; 
    1989                     $message = $_POST['message']; 
    1990                      
    1991                     $moderator_roles = explode(',', $_POST['moderator_roles']); 
    1992                     $moderator = $this->is_moderator($moderator_roles); 
    1993                      
    1994                     $message = preg_replace(array('/<code>/','/<\/code>/'), array('[code]', '[/code]'), $message); 
    1995                      
    1996                     $message = htmlentities(strip_tags($message)); 
    1997                     $smessage = base64_decode($message); 
    1998                      
    1999                      
    2000                     $this->send_message($chat_id, $name, $avatar, base64_encode($smessage), $moderator); 
    2001                     break; 
    2002             } 
    2003              
    2004             if ($return == 'yes') { 
    2005                 if (isset($log['text']) && is_array($log['text'])) { 
    2006                     return "<p>".join("</p><p>", $log['text'])."</p>"; 
    2007                 } else { 
    2008                     return ""; 
    2009                 } 
    2010             } else { 
    2011                 echo json_encode($log); 
    2012                 exit(0); 
    2013             } 
    2014         } 
    2015          
    2016         /** 
    2017          * Test whether logged in user is a moderator 
    2018          * 
    2019          * @param   Array   $moderator_roles Moderator roles 
    2020          * @return  bool    $moderator   True if moderator False if not 
    2021          */ 
    2022         function is_moderator($moderator_roles) { 
    2023             global $current_user; 
    2024              
    2025             if ($current_user->ID) { 
    2026                 foreach ($moderator_roles as $role) { 
    2027                     if (in_array($role, $current_user->roles)) { 
    2028                         return true; 
    2029                     } 
    2030                 } 
    2031             } 
    2032             return false; 
    2033         } 
    2034          
    2035         /** 
    2036          * Get message 
    2037          *  
    2038          * @global  object  $wpdb 
    2039          * @global  int     $blog_id 
    2040          * @param   int     $chat_id    Chat ID 
    2041          * @param   int     $since      Start Unix timestamp 
    2042          * @param   int     $end        End Unix timestamp 
    2043          * @param   string  $archived   Archived? 'yes' or 'no' 
    2044          */ 
    2045         function get_messages($chat_id, $since = 0, $end = 0, $archived = 'no', $since_id = false) { 
    2046             global $wpdb, $blog_id; 
    2047              
    2048             $chat_id = $wpdb->escape($chat_id); 
    2049             $archived = $wpdb->escape($archived); 
    2050             $since_id = $wpdb->escape($since_id); 
    2051              
    2052             if (empty($end)) { 
    2053                 $end = time(); 
    2054             } 
    2055              
    2056             $start = date('Y-m-d H:i:s', $since); 
    2057             $end = date('Y-m-d H:i:s', $end); 
    2058              
    2059             if ($since_id == false) { 
    2060                 $since_id = 0; 
    2061             } else { 
    2062                 $start = date('Y-m-d H:i:s', 0); 
    2063             } 
    2064              
    2065             return $wpdb->get_results( 
    2066                 "SELECT * FROM `".Chat::tablename('message')."` WHERE blog_id = '$blog_id' AND chat_id = '$chat_id' AND archived = '$archived' AND timestamp BETWEEN '$start' AND '$end' AND id > '$since_id' ORDER BY timestamp ASC;" 
    2067             ); 
    2068         } 
    2069          
    2070         /** 
    2071          * Send the message 
    2072          *  
    2073          * @global  object  $wpdb 
    2074          * @global  int $blog_id 
    2075          * @param   int $chat_id    Chat ID 
    2076          * @param   string  $name       Name 
    2077          * @param   string  $avatar     URL or e-mail 
    2078          * @param   string  $message    Payload message 
    2079          * @param   string  $moderator  Moderator 
    2080          */ 
    2081         function send_message($chat_id, $name, $avatar, $message, $moderator) { 
    2082             global $wpdb, $blog_id; 
    2083              
    2084             $wpdb->real_escape = true; 
    2085              
    2086             $time_stamp = date("Y-m-d H:i:s"); 
    2087              
    2088             $chat_id = $wpdb->_real_escape($chat_id); 
    2089             $name = $wpdb->_real_escape(trim(base64_decode($name))); 
    2090             $avatar = $wpdb->_real_escape(trim($avatar)); 
    2091             $message = $wpdb->_real_escape(trim(base64_decode($message))); 
    2092             $moderator_str = 'no'; 
    2093              
    2094             if (empty($message)) { 
    2095                 return false; 
    2096             } 
    2097             if ($moderator) { 
    2098                 $moderator_str = 'yes'; 
    2099             } 
    2100              
    2101             return $wpdb->query("INSERT INTO ".Chat::tablename('message')." 
    2102                         (blog_id, chat_id, timestamp, name, avatar, message, archived, moderator) 
    2103                         VALUES ('$blog_id', '$chat_id', '$time_stamp', '$name', '$avatar', '$message', 'no', '$moderator_str');"); 
    2104         } 
    2105          
    2106         /** 
    2107          * Get the last chat id for the given blog 
    2108          *  
    2109          * @global  object  $wpdb 
    2110          * @global  int     $blog_id 
    2111          */ 
    2112         function get_last_chat_id() { 
    2113             global $wpdb, $blog_id; 
    2114              
    2115             $last_id = $wpdb->get_var("SELECT chat_id FROM `".Chat::tablename('message')."` WHERE blog_id = '{$blog_id}' ORDER BY chat_id DESC LIMIT 1"); 
    2116              
    2117             if ($last_id) { 
    2118                 return substr($last_id, 0, -1); 
    2119             } 
    2120             return 1; 
    2121         } 
    2122          
    2123         /** 
    2124          * Clear a chat log 
    2125          *  
    2126          * @global  object  $wpdb 
    2127          * @global  int     $blog_id 
    2128          */ 
    2129         function clear() { 
    2130             global $wpdb, $blog_id; 
    2131              
    2132             $since = date('Y-m-d H:i:s', $_POST['since']); 
    2133             $chat_id = $wpdb->escape($_POST['cid']); 
    2134              
    2135             if (current_user_can('edit_posts') && current_user_can('edit_pages')) { 
    2136                 $wpdb->query("DELETE FROM `".Chat::tablename('message')."` WHERE blog_id = '{$blog_id}' AND chat_id = '{$chat_id}' AND timestamp <= '{$since}' AND archived = 'no';"); 
    2137             } 
    2138             exit(0); 
    2139         } 
    2140          
    2141         /** 
    2142          * Archive a chat log 
    2143          *  
    2144          * @global  object  $wpdb 
    2145          * @global  int     $blog_id 
    2146          */ 
    2147         function archive() { 
    2148             global $wpdb, $blog_id; 
    2149              
    2150             $since = date('Y-m-d H:i:s', $_POST['since']); 
    2151             $chat_id = $wpdb->escape($_POST['cid']); 
    2152             $created = date('Y-m-d H:i:s'); 
    2153              
    2154             if (current_user_can('edit_posts') && current_user_can('edit_pages')) { 
    2155                 $start = $wpdb->get_var("SELECT timestamp FROM `".Chat::tablename('message')."` WHERE blog_id = '{$blog_id}' AND chat_id = '{$chat_id}' AND timestamp <= '{$since}' AND archived = 'no' ORDER BY timestamp ASC LIMIT 1;"); 
    2156                 $end = $wpdb->get_var("SELECT timestamp FROM `".Chat::tablename('message')."` WHERE blog_id = '{$blog_id}' AND chat_id = '{$chat_id}' AND timestamp <= '{$since}' AND archived = 'no' ORDER BY timestamp DESC LIMIT 1;"); 
    2157                  
    2158                 $sql = array(); 
    2159                  
    2160                 $sql[] = "SELECT timestamp FROM `".Chat::tablename('message')."` WHERE blog_id = '{$blog_id}' AND chat_id = '{$chat_id}' AND timestamp <= '{$since}' AND archived = 'no' ORDER BY timestamp DESC LIMIT 1;"; 
    2161                 $sql[] = "SELECT timestamp FROM `".Chat::tablename('message')."` WHERE blog_id = '{$blog_id}' AND chat_id = '{$chat_id}' AND timestamp <= '{$since}' AND archived = 'no' ORDER BY timestamp ASC LIMIT 1; "; 
    2162                 $sql[] = "UPDATE `".Chat::tablename('message')."` set archived = 'yes' WHERE blog_id = '{$blog_id}' AND chat_id = '{$chat_id}' AND timestamp BETWEEN '{$start}' AND '{$end}' AND archived = 'no';"; 
    2163                  
    2164                 $wpdb->query("UPDATE `".Chat::tablename('message')."` set archived = 'yes' WHERE blog_id = '{$blog_id}' AND chat_id = '{$chat_id}' AND timestamp BETWEEN '{$start}' AND '{$end}' AND archived = 'no';"); 
    2165                  
    2166                 $wpdb->query("INSERT INTO ".Chat::tablename('log')." 
    2167                             (blog_id, chat_id, start, end, created) 
    2168                             VALUES ('$blog_id', '$chat_id', '$start', '$end', '$created');"); 
    2169             } 
    2170                          
    2171             exit(0); 
    2172         } 
    2173          
    2174         /** 
    2175          * Get a list of archives for the given chat 
    2176          *  
    2177          * @global  object  $wpdb 
    2178          * @global  int     $blog_id 
    2179          * @param   int     $chat_id    Chat ID 
    2180          * @return  array               List of archives 
    2181          */ 
    2182         function get_archives($chat_id) { 
    2183             global $wpdb, $blog_id; 
    2184              
    2185             $chat_id = $wpdb->escape($chat_id); 
    2186              
    2187             return $wpdb->get_results( 
    2188                 "SELECT * FROM `".Chat::tablename('log')."` WHERE blog_id = '$blog_id' AND chat_id = '$chat_id' ORDER BY created ASC;" 
    2189             ); 
    2190         } 
    2191     } 
    2192 } 
    2193  
    2194 // Lets get things started 
    2195 $chat = new Chat(); 
    2196  
    2197  
Note: See TracChangeset for help on using the changeset viewer.