/** * Ajax Callback * * @access public * @return void */ function sc_chat_ajax_callback() { $response = array(); try { // Handling the supported actions: switch ($_GET['mode']) { case 'login': $response = Live_Chat::login(@$_POST['f_chat_user_name'], @$_POST['f_chat_user_email'], $_POST['f_chat_is_admin']); break; case 'send_contact_from': $response = Live_Chat::send_contact_from($_POST); break; case 'is_user_logged_in': $response = Live_Chat::is_user_logged_in(); break; case 'logout': $response = Live_Chat::logout(); break; case 'online': $response = Live_Chat::online(); break; case 'offline': $response = Live_Chat::offline(); break; case 'send_chat_msg': $response = Live_Chat::send_chat_msg($_POST); break; case 'get_online_users': $response = Live_Chat::get_online_users(); break; case 'get_chat_lines': $response = Live_Chat::get_chat_lines($_POST['last_log_ID'], $_POST['sender']); break; case 'user_info': $response = Live_Chat::user_info($_POST['ID']); break; default: throw new Exception('Wrong action'); } } catch (Exception $e) { $response['error'] = $e->getMessage(); } // Response output header("Content-Type: application/json"); echo json_encode($response); exit; }
/** * Send chat message * * @access public * @return array */ public static function send_chat_msg($params) { // Get user data from session $chat_user_name = $_SESSION['sc_chat']['chat_user_name']; $chat_user_gravatar = $_SESSION['sc_chat']['chat_user_gravatar']; $chat_user_email = $_SESSION['sc_chat']['chat_user_email']; // First check if any OP is online if (!Live_Chat::check_if_any_op_online()) { // Logout user Live_Chat::logout(); // Prepare email data for last message $data = array('f_chat_user_name' => $chat_user_name, 'f_chat_user_email' => $chat_user_email, 'f_chat_user_question' => $params['chat_line'], 'prefix' => '(!) ' . strtoupper(__('User has been sent this message after you disconnected from chat', 'sc_chat')) . ": \r\n\r\n"); // Send email now $email = Live_Chat::send_contact_from($data); if (!empty($email['error'])) { throw new Exception($email['error']); } else { throw new Exception(__("We are offline now. However, your message has been sent to us by email. We will contact you as soon as possible", 'sc_chat')); } } if (empty($chat_user_name)) { throw new Exception(__('You are not logged in', 'sc_chat')); } if (empty($params['chat_line'])) { throw new Exception(__("You haven't entered a chat message", 'sc_chat')); } // If receiver ID empty, make it __OP__ if (current_user_can('chat_with_users') and !empty($params['receiver_ID'])) { $receiver_ID = sanitize_key($params['receiver_ID']); } else { $receiver_ID = '__OP__'; } // sent by visitor // Prepare chat line data $chat = new Chat_line(array('author' => $chat_user_name, 'gravatar' => $chat_user_gravatar, 'visitor_ID' => !empty($params['visitor_ID']) ? $params['visitor_ID'] : null, 'receiver_ID' => $receiver_ID, 'email' => $chat_user_email, 'chat_line' => Live_Chat::sanitize_chat_line($params['chat_line']))); // Save chat message $insert_ID = $chat->save(); return array('status' => 1, 'insert_ID' => $insert_ID); }