/** * 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; }
/** * 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'); }
/** * 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); }
/** * 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; }
/** * 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'); }