/home3/bmscom/webinar.bmice.com/wp-content/plugins/webinar-ignition/inc/callback3.php
<?php
defined( 'ABSPATH' ) || exit;
add_action('wp_ajax_webinarignition_get_webinar', 'webinarignition_get_webinar');
function webinarignition_get_webinar() {
check_ajax_referer( 'webinarignition_ajax_nonce', 'security' );
$post_input = filter_input_array(INPUT_POST);
$webinar = WebinarignitionManager::get_webinar_data(sanitize_text_field( $post_input['id'] ));
if (isset($webinar->air_html)) {
$webinar->air_html = stripcslashes($webinar->air_html);
}
if (isset($webinar->air_btn_copy)) {
$webinar->air_btn_copy = stripcslashes($webinar->air_btn_copy);
}
if (isset($webinar->air_btn_url)) {
$webinar->air_btn_url = stripcslashes($webinar->air_btn_url);
}
wp_send_json_success([
'webinar' => $webinar,
]);
}
add_action('wp_ajax_webinarignition_save_on_air_settings', 'webinarignition_save_on_air_settings');
function webinarignition_save_on_air_settings() {
check_ajax_referer( 'webinarignition_ajax_nonce', 'security' );
$post_input = filter_input_array(INPUT_POST);
if ( !isset($post_input['id']) || !is_numeric($post_input['id'])) {
wp_send_json_error( ['error' => 'Invalid Webinar ID'] );
}
$optionName = 'webinarignition_campaign_' . sanitize_text_field( $post_input['id'] );
$option = WebinarignitionManager::get_webinar_data(sanitize_text_field( $post_input['id'] ));
$onairStatus = sanitize_text_field( $post_input['onair_status'] );
if (!in_array($onairStatus, array('on', 'off'))) {
wp_send_json_error(array( __( 'on air message could not be toggled', "webinarignition") ));
}
$option->air_toggle = $onairStatus;
if (isset($post_input['air_html'])) {
$option->air_html = $post_input['air_html'];
}
$option->air_btn_copy = sanitize_text_field( $post_input['air_btn_copy'] );
$option->air_btn_url = sanitize_text_field( $post_input['air_btn_url'] );
$option->air_btn_color = sanitize_text_field( $post_input['air_btn_color'] );
update_option($optionName, $option);
wp_send_json_success();
}
add_action('wp_ajax_webinarignition_toggle_on_air_message', 'webinarignition_toggle_on_air_message');
function webinarignition_toggle_on_air_message() {
check_ajax_referer( 'webinarignition_ajax_nonce', 'security' );
$post_input = filter_input_array(INPUT_POST);
if ( !isset($post_input['id']) || !is_numeric($post_input['id'])) {
wp_send_json_error( ['error' => __( 'Invalid Webinar ID', "webinarignition") ] );
}
$optionName = 'webinarignition_campaign_' . sanitize_text_field( $post_input['id'] );
$option = WebinarignitionManager::get_webinar_data(sanitize_text_field( $post_input['id'] ));
$onairStatus = sanitize_text_field( $post_input['onair_status'] );
if (!in_array($onairStatus, array('on', 'off'))) {
wp_send_json_error(array( __( 'on air message could not be toggled', "webinarignition") ));
}
$option->air_toggle = $onairStatus;
update_option($optionName, $option);
wp_send_json_success();
}
add_action('wp_ajax_webinarignition_get_leads', 'webinarignition_get_leads');
function webinarignition_get_leads() {
check_ajax_referer( 'webinarignition_ajax_nonce', 'security' );
global $wpdb;
$post_input = filter_input_array(INPUT_POST);
$post_input['id'] = isset( $post_input['id'] ) ? sanitize_text_field( $post_input['id'] ) : null;
$post_input['webinar_type'] = isset( $post_input['webinar_type'] ) ? sanitize_text_field( $post_input['webinar_type'] ) : null;
$post_input['search_for'] = isset( $post_input['search_for'] ) ? sanitize_text_field( $post_input['search_for'] ) : null;
$post_input['limit'] = isset( $post_input['limit'] ) ? sanitize_text_field( $post_input['limit'] ) : null;
$post_input['offset'] = isset( $post_input['offset'] ) ? sanitize_text_field( $post_input['offset'] ) : null;
if ( !isset($post_input['id']) || !is_numeric($post_input['id'])) {
wp_send_json_error( ['error' => __( 'Invalid Webinar ID', "webinarignition") ] );
}
if ( !isset($post_input['webinar_type']) || !in_array($post_input['webinar_type'], ['evergreen', 'live'])) {
wp_send_json_error( ['error' => __( 'Invalid Webinar Type', "webinarignition") ] );
}
$table_db_name = $post_input['webinar_type'] === 'evergreen' ? $wpdb->prefix . "webinarignition_leads_evergreen" : $wpdb->prefix . "webinarignition_leads";
$sql = "
SELECT *
FROM {$table_db_name}
WHERE app_id = %d ";
if ( !empty($post_input['search_for']) ) {
$sql .= " AND ( `name` LIKE %s OR `email` LIKE %s )";
}
$sql .= "
LIMIT %d
OFFSET %d
";
if ( !empty($post_input['search_for']) ) {
$preparedSql = $wpdb->prepare( $sql,
$post_input['id'],
'%%' . $wpdb->esc_like( $post_input['search_for'] ) . '%%',
'%%' . $wpdb->esc_like( $post_input['search_for'] ) . '%%',
$post_input['limit'],
$post_input['offset']
);
$totalQueryLeads = $wpdb->get_var(
$wpdb->prepare(
"
SELECT COUNT(*)
FROM {$table_db_name}
WHERE app_id = %d
AND `email` LIKE %s
",
$post_input['id'],
'%%' . $wpdb->esc_like( $post_input['search_for'] ) . '%%'
)
);
} else {
$preparedSql = $wpdb->prepare( $sql,
$post_input['id'],
$post_input['limit'],
$post_input['offset']
);
}
$leads = $wpdb->get_results($preparedSql, OBJECT);
$totalLeads = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$table_db_name} WHERE `app_id` = %d", $post_input['id']));
$totalQueryLeads = isset($totalQueryLeads) ? $totalQueryLeads : $totalLeads;
$totalAttendedEvent = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$table_db_name} WHERE `app_id` = %d AND `event` = %s ", $post_input['id'], 'Yes'));
$totalAttendedReplay = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$table_db_name} WHERE `app_id` = %d AND `replay` = %s ", $post_input['id'], 'Yes'));
$totalOrdered = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$table_db_name} WHERE `app_id` = %d AND `trk2` = %s ", $post_input['id'], 'Yes'));
$data = array(
'leads' => $leads,
'total_leads' => $totalLeads,
'total_query_leads' => $totalQueryLeads,
'total_attended_event' => $totalAttendedEvent,
'total_attended_replay' => $totalAttendedReplay,
'total_ordered' => $totalOrdered,
'number_of_pages' => ceil($totalQueryLeads / $post_input['limit']),
);
wp_send_json_success($data);
}
add_action('wp_ajax_webinarignition_get_questions', 'webinarignition_get_questions');
function webinarignition_get_questions() {
// check_ajax_referer( 'webinarignition_ajax_nonce', 'security' );
global $wpdb;
// $post_input = filter_input_array(INPUT_POST);
$post_input = $_POST;
$post_input['id'] = isset( $post_input['id'] ) ? sanitize_text_field( $post_input['id'] ) : null;
$post_input['search_for'] = isset( $post_input['search_for'] ) ? sanitize_text_field( $post_input['search_for'] ) : null;
$post_input['limit'] = isset( $post_input['limit'] ) ? sanitize_text_field( $post_input['limit'] ) : null;
$post_input['offset'] = isset( $post_input['offset'] ) ? sanitize_text_field( $post_input['offset'] ) : null;
if ( !isset($post_input['id']) || !is_numeric($post_input['id'])) {
wp_send_json_error( ['error' => 'Invalid Webinar ID'] );
}
$webinar_id = sanitize_text_field($post_input['id']);
$webinar_data = WebinarignitionManager::get_webinar_data($webinar_id);
$table_db_name = $wpdb->prefix . 'webinarignition_questions';
//check if table exists
$query = $wpdb->prepare( 'SHOW TABLES LIKE %s', $wpdb->esc_like( $table_db_name ) );
if ( $wpdb->get_var( $query ) !== $table_db_name ) {
$table_db_name = $wpdb->prefix . 'webinarignition_questions_new';
}
$totalQuestions = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$table_db_name} WHERE `app_id` = %d", $post_input['id']));
$sql = "
SELECT *
FROM {$table_db_name}
WHERE app_id = %d ";
if ( !empty($post_input['search_for']) ) {
$sql .= " AND `email` LIKE %s ";
}
$sql .= "
LIMIT %d
OFFSET %d
";
if ( !empty($post_input['search_for']) ) {
$preparedSql = $wpdb->prepare( $sql,
$post_input['id'],
'%%' . $wpdb->esc_like( $post_input['search_for'] ) . '%%',
$post_input['limit'],
$post_input['offset']
);
$totalQueryQuestions = $wpdb->get_var(
$wpdb->prepare(
"
SELECT COUNT(*)
FROM {$table_db_name}
WHERE app_id = %d
AND `email` LIKE %s
",
$post_input['id'],
'%%' . $wpdb->esc_like( $post_input['search_for'] ) . '%%'
)
);
} else {
$preparedSql = $wpdb->prepare( $sql,
$post_input['id'],
$post_input['limit'],
$post_input['offset']
);
}
$questions = $wpdb->get_results($preparedSql, OBJECT_K);
$questions = is_array($questions) ? array_reverse($questions) : $questions;
$active_questions = '';
$current_user_id = get_current_user_id();
foreach ( $questions as $questionsActive ) {
if( $questionsActive->status == 'live' ){
$deleteQuestionHtml = empty( $post_input['is_support'] ) ? "<div class='questionBlockIcons qbi-remove' qaID='" . $questionsActive->ID . "'><i class='icon-remove icon-large' data-toggle='tooltip' data-placement='top' title='Delete question'></i></div>" : '';
$answerAttendeeHtml = ( empty( $questionsActive->attr4 ) || $questionsActive->attr2 == $current_user_id ) ? "<div class='questionBlockIcons qbi-reply'><a class='answerAttendee' data-toggle='tooltip' data-placement='top' title='".__( "Respond to attendee question", "webinarignition")."'data-questionid=" . $questionsActive->ID . " data-attendee-email=" . $questionsActive->email . " data-attendee-name=" . $questionsActive->name . "><i class='icon-comments icon-large'></i></a></div>" : '';
$message = ( $questionsActive->attr4 == 'hold' && !empty( $questionsActive->attr5 ) && $questionsActive->attr2 == $current_user_id ) ? __( "You're answering this question...", "webinarignition") : $questionsActive->attr5 . ' '. __( 'is answering this question...', "webinarignition");
$questionOnHoldHtml = ( $questionsActive->attr4 == 'hold' && !empty( $questionsActive->attr5 ) ) ? '<span class="questionOnHold green bold"> ' . $message. '</span>' : '';
$active_questions .= "<!-- QUESTION BLOCK -->
<div class='questionBlockWrapper questionBlockWrapperActive' qa_lead='" . $questionsActive->ID . "' id='QA-BLOCK-" . $questionsActive->ID . "' >
<div class='questionBlockQuestion'>
<span class='questionTimestamp'> " . $questionsActive->created . " </span>
<p style='padding: 10px; background-color: #eee; width: 100%;border-radius: 7px;'>
<span class='questionBlockText' >". $questionsActive->question ."</span>
<span class='questionBlockAuthor' >
".$questionsActive->name." -
<span data-toggle='tooltip' data-placement='top' title='Search leads table' class='radius secondary label qa-lead-search'>".$questionsActive->email."
</span>
</span>
</p>
".$questionOnHoldHtml."
</div>
<div class='questionActions'>
".$deleteQuestionHtml."
".$answerAttendeeHtml."
<br clear='left' />
</div>
<br clear='all' />
</div>
<!-- END OF QUESTION BLOCK -->";
}
}
$answered_questions = '';
$questionsDone = [];
foreach ( $questions as $question ) {
if( $question->status == 'done' ){
$questionsDone[] = $question;
}
}
foreach ( $questionsDone as $question ) {
$is_support = !empty( $post_input['is_support'] );
$questionDone = $question;
ob_start();
include WEBINARIGNITION_PATH . 'inc/lp/console/partials/answeredQuestion.php';
$answered_questions .= ob_get_clean();
}
$totalQuestions = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$table_db_name} WHERE `app_id` = %d", $post_input['id']));
$totalQueryQuestions = isset($totalQueryQuestions) ? $totalQueryQuestions : $totalQuestions;
$totalActiveQuestions = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$table_db_name} WHERE `app_id` = %d AND `status` = %s ", $post_input['id'], 'live'));
$totalDoneQuestions = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$table_db_name} WHERE `app_id` = %d AND `status` = %s ", $post_input['id'], 'done'));
$data = array(
'active_questions' => $active_questions,
'answered_questions' => $answered_questions,
'total_questions' => $totalQuestions,
'total_query_questions' => $totalQueryQuestions,
'total_active_questions' => $totalActiveQuestions,
'total_done_questions' => $totalDoneQuestions,
'number_of_pages' => ceil($totalQueryQuestions / $post_input['limit']),
);
wp_send_json_success($data);
}
add_action('wp_ajax_webinarignition_get_users_online', 'webinarignition_get_users_online');
function webinarignition_get_users_online() {
// check_ajax_referer( 'webinarignition_ajax_nonce', 'security' );
// $post_input = filter_input_array(INPUT_POST);
$post_input = $_POST;
$post_input['webinar_id'] = isset( $post_input['webinar_id'] ) ? sanitize_text_field( $post_input['webinar_id'] ) : null;
$webinar_id = sanitize_text_field($post_input['webinar_id']);
$webinar_type = sanitize_text_field($post_input['webinar_type']);
global $wpdb;
$table_db_name = $wpdb->prefix . "webinarignition_users_online";
// Purge All Who Havent been updated in 1 minute...
$currentTime = date("Y-m-d H:i:s");
$currentTime = strtotime($currentTime);
$minus5Minutes = date("Y-m-d H:i:s", strtotime('-10 seconds', $currentTime));
$wpdb->query("DELETE FROM $table_db_name WHERE dt < '$minus5Minutes' ");
$wpdb->query("DELETE FROM $table_db_name WHERE lead_id is null OR lead_id = 0 OR lead_id = '0' ");
// Count All
$attendees = $wpdb->get_results("SELECT lead_id FROM $table_db_name WHERE app_id = {$post_input['webinar_id']}", ARRAY_A);
$count = count($attendees);
if ($webinar_type == "live") {
$table_db_name = $wpdb->prefix . "webinarignition_leads";
$leads = $wpdb->get_results("SELECT ID, email FROM $table_db_name WHERE app_id = '$webinar_id' ", ARRAY_A);
} else {
$table_db_name = $wpdb->prefix . "webinarignition_leads_evergreen";
$leads = $wpdb->get_results("SELECT ID, email FROM $table_db_name WHERE app_id = '$webinar_id' ", ARRAY_A);
}
wp_send_json(json_encode([
'count' => $count,
'visitors' => $attendees,
'webinar_id' => $webinar_id,
'webinar_type' => $webinar_type,
'leads' => $leads,
]));
}