REDROOM
PHP 8.2.31
Path:
Logout
Edit File
Size: 10.28 KB
Close
/home/nshryvcy/taramarriagebureau.com/wp-content/plugins/chatway-live-chat/app/Front.php
Text
Base64
<?php /** * Chatway admin assets enqueue * * @author : Chatway * @license : GPLv3 * */ namespace Chatway\App; class Front { use Singleton; public function __construct() { add_action( 'wp_ajax_sync_chatway_data', [$this, 'check_for_conversation'] ); add_action( 'wp_ajax_nopriv_sync_chatway_data', [$this, 'check_for_conversation'] ); add_action( 'woocommerce_add_to_cart', [$this, 'add_to_cart'], 10, 6 ); add_action( 'woocommerce_after_cart_item_quantity_update', [$this, 'product_updated'], 10, 2 ); add_action( 'woocommerce_cart_item_removed', [$this, 'item_removed'], 10, 2 ); add_action( 'woocommerce_thankyou', [$this, 'handle_order_placed'], 10, 1 ); } /** * Handles checking for an ongoing conversation for the current user and updates user status, visitor data, and cookies accordingly. * * This method retrieves the current user's ID and verifies if necessary cookies and data are available to establish a conversation. * It ensures the user's chat status is set, validates email and other user metadata, and securely sends visitor information * using an external API. If the API interaction is successful, the user's conversation status is updated. * * @return void */ public function check_for_conversation() { $token = sanitize_text_field(filter_input(INPUT_GET, 'token')); if (empty($token) || !wp_verify_nonce($token, 'chatway_nonce')) { return; } $this->update_cart_data(); $user_id = get_current_user_id(); if(!empty($user_id)) { $token = get_option('chatway_user_identifier', ''); if (!empty($token)) { if ((isset($_COOKIE['ch_cw_contact_id_' . $token]) || isset($_GET['ch_contact_id'])) && isset($_COOKIE['ch_cw_token_' . $token])) { $contact_id = isset($_COOKIE['ch_cw_contact_id_' . $token])?sanitize_text_field($_COOKIE['ch_cw_contact_id_' . $token]):""; if(empty($contact_id) && isset($_GET['ch_contact_id'])) { $contact_id = sanitize_text_field($_GET['ch_contact_id']); } $contact_token = sanitize_text_field($_COOKIE['ch_cw_token_' . $token]); if (!empty($contact_id) && !empty($contact_token)) { $user_status = get_user_meta($user_id, 'chatway_status_'.esc_attr($contact_id), true); if($user_status) { setcookie('ch_cw_user_status_' . $contact_id, 'yes', time() + YEAR_IN_SECONDS, "/"); return; } $user = get_userdata($user_id); if (!isset($user->data->user_email) || empty($user->data->user_email)) { return; } $email = $user->data->user_email; $secret_key = ExternalApi::get_chatway_secret_key(); if (empty($secret_key)) { return; } $first_name = get_user_meta($user_id, 'first_name', true); $last_name = get_user_meta($user_id, 'last_name', true); $name = trim($first_name . ' ' . $last_name); $user_info = [ 'email' => esc_attr($email), 'id' => esc_attr($user_id) ]; if (!empty($name)) { $user_info['name'] = $name; } $avatar = get_avatar_url($user_id); if(!empty($avatar)) { $user_info['avatar'] = $avatar; } $hmac = hash_hmac( 'sha256', json_encode($user_info), esc_attr($secret_key) ); $response_code = ExternalApi::send_visitor_data($hmac, $contact_id, $user_info, $contact_token); if (is_array($response_code) && isset($response_code['message']) && $response_code['message'] == 'Success') { setcookie('ch_cw_user_status_' . $contact_id, 'yes', time() + YEAR_IN_SECONDS, "/"); add_user_meta($user_id, 'chatway_status_'.esc_attr($contact_id), $contact_id); $version = get_option('chatway_wp_plugin_version', ''); if($version != \Chatway::version()) { ExternalApi::sync_wp_plugin_version(); } } echo json_encode($response_code); exit; } } } } } /** * Sends the card information based on the provided cart item details. * * @param string $cart_item_key The unique key identifying the cart item. * @param int $product_id The ID of the product being sent. * @param int $quantity The quantity of the product in the cart. * @param int $variation_id The ID of the product variation, if applicable. * @param array $variation The details of the product variation, if applicable. * @param array $cart_item_data Additional data associated with the cart item. * @return void */ public function add_to_cart($cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data) { $this->update_cart_data(); } /** * Updates the product information in the cart based on the provided cart item key and cart data. * * @param string $cart_item_key The unique key identifying the cart item. * @param array $cart The current cart data associated with the item. * @return void */ public function product_updated($cart_item_key, $cart) { $this->update_cart_data(); } /** * Handles the event of an order being placed. * * @param int $order_id The ID of the order that was placed. * @return void */ public function handle_order_placed($order_id) { if (!$order_id) { return; } $this->update_cart_data(); } /** * Handles the removal of an item from the cart. * * @param string $cart_item_key The unique key identifying the cart item that was removed. * @param array $cart The current state of the cart after the item was removed. * @return void */ public function item_removed($cart_item_key, $cart) { $this->update_cart_data(); } /** * Updates the cart data by collecting details of the cart contents and sending it to an external API. * The method retrieves the cart items, prepares the product details, and sends the data if required cookies and tokens are available. * * @return void */ public function update_cart_data() { $version = get_option('chatway_wp_plugin_version', ''); if($version != \Chatway::version()) { ExternalApi::sync_wp_plugin_version(); } if(!\Chatway::is_woocomerce_active()) { return; } $token = get_option('chatway_user_identifier', ''); if(!empty($token) && isset($_COOKIE['ch_cw_token_' . $token])) { $contact_id = isset($_COOKIE['ch_cw_contact_id_' . $token])?sanitize_text_field($_COOKIE['ch_cw_contact_id_' . $token]):""; if(empty($contact_id) && isset($_GET['ch_contact_id'])) { $contact_id = sanitize_text_field($_GET['ch_contact_id']); } if(empty($contact_id)) { return; } $contact_token = sanitize_text_field($_COOKIE['ch_cw_token_' . $token]); if (!empty($contact_id) && !empty($contact_token)) { setcookie('ch_cw_contact_id_' . $token, $contact_id, time() + YEAR_IN_SECONDS, "/"); } $contact_id = sanitize_text_field($_COOKIE['ch_cw_contact_id_' . $token]); $contact_token = sanitize_text_field($_COOKIE['ch_cw_token_' . $token]); if(empty($contact_id) || empty($contact_token)) { return; } $cart_contents = WC()->cart->get_cart(); $products = []; foreach ($cart_contents as $cart_item) { $productData = wc_get_product($cart_item['product_id']); $product = []; $product['product_id'] = intval($cart_item['product_id']); $product['product_url'] = get_permalink($cart_item['product_id']); $product['variation_id'] = intval($cart_item['variation_id']); $product['quantity'] = intval($cart_item['quantity']); $product['subtotal'] = (float)($cart_item['data']->get_price() * $cart_item['quantity']); $product['total'] = (float)($cart_item['data']->get_price() * $cart_item['quantity']); $product['product_name'] = $cart_item['data']->get_name(); $product['price'] = (float)$cart_item['data']->get_price(); $product['short_description'] = $productData->get_short_description(); $product['sku'] = $productData->get_sku(); $product['image'] = ''; $product['thumb_image'] = ''; $thumbnail_url = get_the_post_thumbnail_url($cart_item['product_id'], 'full'); if(!empty($thumbnail_url)) { $product['image'] = $thumbnail_url; $product['thumb_image'] = get_the_post_thumbnail_url($cart_item['product_id']); } $products[] = $product; } $cart = []; WC()->cart->calculate_totals(); if (!empty($products)) { $cart['products'] = $products; } else { $cart['products'] = []; } $cart['cart_info'] = WC()->cart->get_totals(); $cart['cart_info']['currency'] = get_woocommerce_currency(); $cart['cart_info']['symbol'] = get_woocommerce_currency_symbol(); ExternalApi::send_cart_data($contact_id, $cart, $contact_token); } } }
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 0 × Files: 11
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
Api.php
1.48 KB
lrw-r--r--
2025-06-11 14:05:51
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Assets.php
4.84 KB
lrw-r--r--
2025-06-11 14:05:51
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Base.php
2.12 KB
lrw-r--r--
2025-06-11 14:05:51
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ChatwayApi.php
20.60 KB
lrw-r--r--
2025-06-11 14:05:51
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ExternalApi.php
12.98 KB
lrw-r--r--
2025-06-11 14:05:51
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Front.php
10.28 KB
lrw-r--r--
2025-06-11 14:05:51
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Icons.php
904 B
lrw-r--r--
2025-06-11 14:05:51
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Singleton.php
396 B
lrw-r--r--
2025-06-11 14:05:51
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Url.php
4.67 KB
lrw-r--r--
2025-06-11 14:05:51
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
User.php
3.16 KB
lrw-r--r--
2025-06-11 14:05:51
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
View.php
5.38 KB
lrw-r--r--
2025-06-11 14:05:51
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).