Example #1
0
/**
 * Send notification by email
 *
 * @return bool
 */
function sc_chat_send_notification_email($type = 'user_login', $data = array())
{
    $message = null;
    $site_name = get_bloginfo('name');
    // Get options
    $opts = sc_chat_get_options();
    // Prepare basic user data
    $username = $data['username'];
    $user_email = $data['email'];
    // Any email should be defined
    if (empty($opts['offline_msg_email']) or !$opts['get_notifications']) {
        return false;
    }
    switch ($type) {
        /** 
         * New user logged in
         */
        case 'user_login':
            $to = $opts['offline_msg_email'];
            $subject = sprintf(__('%s just logged in chat', 'sc_chat'), $username) . ' - ' . get_bloginfo('name');
            // Preapare message content
            $message .= __('You have new notification', 'sc_chat') . ":\r\n\r\n";
            $message .= sprintf(__('%s just logged in chat', 'sc_chat'), $username) . "!\r\n\r\n";
            $message .= $site_name . " - " . site_url();
            // Prepare headers
            $headers = "From: \"{$site_name}\" <{$user_email}>\r\n";
            break;
    }
    // Send email
    if (wp_mail($to, $subject, $message, $headers)) {
        return true;
    }
    return false;
}
Example #2
0
/**
 * Setup the Admin menu in WordPress
 *
 * @access public
 * @return void
 */
function sc_chat_admin_menu()
{
    $opts = sc_chat_get_options();
    /**
     * Menu for Admins
     */
    if (current_user_can('manage_options')) {
        add_menu_page('', __('Chat Console', 'sc_chat'), 'administrator', 'sc_opt_pg_a', 'sc_chat_console_template', SC_CHAT_PLUGIN_URL . '/assets/img/sc-icon-16.png', '49.9874');
        // Chat logs
        if (scchatvlk($opts['purchase_key'])) {
            add_submenu_page('sc_opt_pg_a', __('Chat Logs', 'sc_chat'), __('Logs', 'sc_chat'), 'administrator', 'sc_chat_m_chat_logs', 'sc_chat_render_chat_logs');
        }
        // Options
        add_submenu_page('sc_opt_pg_a', __('Chat Options', 'sc_chat'), __('Options', 'sc_chat'), 'administrator', 'sc_chat_m_chat_opts', 'sc_chat_render_chat_opts');
    } else {
        /**
         * Menu for Operators
         */
        add_menu_page('', 'Chat Console', 'sc_chat_op', 'sc_opt_pg', 'sc_chat_console_template', SC_CHAT_PLUGIN_URL . '/assets/img/sc-icon-16.png', '49.9874');
        // Chat logs
        add_submenu_page('sc_opt_pg', __('Chat Logs', 'sc_chat'), __('Logs', 'sc_chat'), 'sc_chat_op', 'sc_chat_m_chat_logs', 'sc_chat_render_chat_logs');
    }
    // Call register options function
    add_action('admin_init', 'sc_chat_register_options');
}
Example #3
0
/**
 * Sanitize and validate form input. Accepts an array, return a sanitized array.
 * 
 * @access public
 * @return array
 */
function sc_chat_options_validate($input)
{
    // Get default values
    $output = $defaults = sc_chat_get_options();
    switch ($_POST['active_tab']) {
        // General settings
        case 'general':
            // checkbox
            $output['hide_chat_when_offline'] = @$input['hide_chat_when_offline'] == 1 ? 1 : 0;
            $output['display_chatbox'] = @$input['display_chatbox'] == 1 ? 1 : 0;
            $output['always_show_homepage'] = @$input['always_show_homepage'] == 1 ? 1 : 0;
            $output['disable_in_mobile'] = @$input['disable_in_mobile'] == 1 ? 1 : 0;
            $output['get_notifications'] = @$input['get_notifications'] == 1 ? 1 : 0;
            // text
            $output['offline_msg_email'] = trim($input['offline_msg_email']);
            $output['purchase_key'] = trim($input['purchase_key']);
            // int
            $output['allowed_visitors'] = intval($input['allowed_visitors']);
            // select
            $output['op_role'] = $input['op_role'];
            // Update operator role
            sc_chat_update_op_role($input['op_role']);
            // Validate license key
            scchatvlk(trim($input['purchase_key']), true);
            break;
            // Customize skin
        // Customize skin
        case 'customize_skin':
            // custom CSS
            $output['custom_css'] = trim($input['custom_css']);
            // int
            $output['delay'] = intval($input['delay']);
            $output['offset'] = intval($input['offset']);
            $output['default_radius'] = intval($input['default_radius']);
            $output['skin_box_width'] = intval($input['skin_box_width']);
            $output['skin_box_height'] = intval($input['skin_box_height']);
            // checkbox
            $output['use_css_anim'] = @$input['use_css_anim'] == 1 ? 1 : 0;
            $output['load_skin_css'] = @$input['load_skin_css'] == 1 ? 1 : 0;
            $output['compress_css'] = @$input['compress_css'] == 1 ? 1 : 0;
            $output['compress_js'] = @$input['compress_js'] == 1 ? 1 : 0;
            $output['sound_package'] = @$input['sound_package'] == 'none' ? 'none' : 'basic';
            // select
            $output['ask_name_field'] = $input['ask_name_field'];
            $output['ask_phone_field'] = $input['ask_phone_field'];
            $output['position'] = $input['position'];
            // Color inputs
            $output['skin_chatbox_bg'] = $input['skin_chatbox_bg'];
            $output['skin_chatbox_fg'] = $input['skin_chatbox_fg'];
            $output['skin_header_bg'] = $input['skin_header_bg'];
            $output['skin_header_fg'] = $input['skin_header_fg'];
            $output['skin_submit_btn_bg'] = $input['skin_submit_btn_bg'];
            $output['skin_submit_btn_fg'] = $input['skin_submit_btn_fg'];
            // radio
            $output['skin_type'] = $input['skin_type'];
            break;
            // Messages
        // Messages
        case 'messages':
            // text
            $output['before_chat_header'] = trim($input['before_chat_header']);
            $output['in_chat_header'] = trim($input['in_chat_header']);
            $output['prechat_welcome_msg'] = trim($input['prechat_welcome_msg']);
            $output['welcome_msg'] = trim($input['welcome_msg']);
            $output['chat_btn'] = trim($input['chat_btn']);
            $output['input_box_msg'] = trim($input['input_box_msg']);
            $output['offline_header'] = trim($input['offline_header']);
            $output['offline_body'] = trim($input['offline_body']);
            $output['end_chat_field'] = trim($input['end_chat_field']);
            $output['name_field'] = trim($input['name_field']);
            $output['email_field'] = trim($input['email_field']);
            $output['phone_field'] = trim($input['phone_field']);
            $output['req_text'] = trim($input['req_text']);
            $output['chat_btn'] = trim($input['chat_btn']);
            $output['input_box_placeholder'] = trim($input['input_box_placeholder']);
            $output['input_box_msg'] = trim($input['input_box_msg']);
            $output['question_field'] = trim($input['question_field']);
            $output['send_btn'] = trim($input['send_btn']);
            break;
    }
    return apply_filters('sc_chat_options_validate', $output, $input, $defaults);
}
Example #4
0
 /**
  * Send contact form
  *
  * @access public
  * @return array
  */
 public static function send_contact_from($data)
 {
     $message = '';
     $response = array('status' => 0, 'error' => null);
     // Get options
     $opts = sc_chat_get_options();
     // Check if all fields filled out correctly?
     if (empty($data['f_chat_user_name']) or empty($data['f_chat_user_email']) or empty($data['f_chat_user_question']) or empty($data['f_chat_user_phone']) and $opts['ask_phone_field'] == 1) {
         $response['error'] = __('Please fill out all required fields', 'sc_chat');
         return $response;
     }
     // Check if email is correct
     if (!is_email($data['f_chat_user_email'])) {
         $response['error'] = __('E-mail is invalid', 'sc_chat');
         return $response;
     }
     // Fields
     $username = strip_tags(trim($data['f_chat_user_name']));
     $email = trim($data['f_chat_user_email']);
     $phone = trim(@$data['f_chat_user_phone']);
     $question = strip_tags(trim(stripslashes($data['f_chat_user_question'])));
     // Add prefix into message
     if (!empty($data['prefix'])) {
         $message = $data['prefix'];
     }
     // Prepare message
     $message .= __('Name', 'sc_chat') . ': ' . $username . "\r\n";
     $message .= __('E-mail', 'sc_chat') . ': ' . $email . "\r\n\r\n";
     if (!empty($data['f_chat_user_phone'])) {
         $message .= __('Phone', 'sc_chat') . ': ' . $phone . "\r\n\r\n";
     }
     $message .= __('Message', 'sc_chat') . ': ' . "\r\n" . $question . "\r\n\r\n";
     $message .= get_bloginfo('name') . " - " . site_url();
     // Prepare headers
     $headers = "From: \"{$username}\" <{$email}>\r\n";
     // Prepare data
     $to = $opts['offline_msg_email'];
     $subject = sprintf(__('%s wrote a note', 'sc_chat'), $data['f_chat_user_email']) . ' - ' . get_bloginfo('name');
     // Send email
     if (wp_mail($to, $subject, $message, $headers)) {
         $response['message'] = __('Successfully sent! Thank you', 'sc_chat');
         $response['status'] = 1;
     } else {
         // ERROR: Something went wrong! Try again
         $response['error'] = __('Something went wrong! Try again', 'sc_chat');
     }
     return $response;
 }
Example #5
0
 /**
  * Init Screets Chat when WordPress Initialises
  *
  * @access public
  * @return void
  */
 function init()
 {
     global $sc_chat_default_opts;
     // Start session
     sc_chat_session_start();
     // Get default options
     $this->default_opts = $sc_chat_default_opts;
     // Get options
     $this->opts = sc_chat_get_options();
     // WPML support
     if (function_exists('icl_register_string')) {
         $this->WPML();
     }
     // Variables
     $this->skin_url = apply_filters('sc_chat_skin_url', 'skins/basic');
     // Classes/actions loaded for the Frontend and for Ajax requests
     if (!is_admin() || defined('DOING_AJAX')) {
         add_action('wp_enqueue_scripts', array(&$this, 'init_frontend_scripts'));
     }
     if (is_admin() || defined('DOING_AJAX')) {
         // Register admin styles and scripts
         add_action('admin_print_scripts', array(&$this, 'init_backend_scripts'));
     }
     // Session control on user data
     add_action('wp_login', array(&$this, 'destroy_session'));
     add_action('wp_logout', array(&$this, 'destroy_session'));
     // Add operator name to user fields
     if (current_user_can('chat_with_users')) {
         add_action('show_user_profile', array(&$this, 'xtra_profile_fields'), 10);
         add_action('edit_user_profile', array(&$this, 'xtra_profile_fields'), 10);
         add_action('personal_options_update', array(&$this, 'save_xtra_profile_fields'));
         add_action('edit_user_profile_update', array(&$this, 'save_xtra_profile_fields'));
     }
     // Show Conversation Box
     add_action('wp_footer', array(&$this, 'show_chatbox'));
     // Shortcodes
     add_shortcode('chat_online', 'sc_chat_shortcode_online');
     add_shortcode('chat_offline', 'sc_chat_shortcode_offline');
     // Init action
     do_action('sc_chat_init');
 }