/home/hamzarou/www/wp-content/plugins/sms-alert/handler/forms/class-bookingcalendar.php
<?php
/**
* Booking calendar helper.
*
* PHP version 5
*
* @category Handler
* @package SMSAlert
* @author SMS Alert <support@cozyvision.com>
* @license URI: http://www.gnu.org/licenses/gpl-2.0.html
* @link https://www.smsalert.co.in/
*/
if (! defined('ABSPATH') ) {
exit;
}
if (! is_plugin_active('booking/wpdev-booking.php') ) {
return;
}
/**
* PHP version 5
*
* @category Handler
* @package SMSAlert
* @author SMS Alert <support@cozyvision.com>
* @license URI: http://www.gnu.org/licenses/gpl-2.0.html
* @link https://www.smsalert.co.in/
*
* BookingCalendar class
*/
class BookingCalendar extends FormInterface
{
/**
* Form Session Variable.
*
* @var stirng
*/
private $form_session_var = FormSessionVars::BC_FORM;
/**
* Construct function.
*
* @return void
*/
public function handleForm()
{
// old version bookin plugin version 9.7.7.1 before
add_filter('wpdev_booking_form_content', array( $this, 'getFormField' ), 99, 2);
// New version bookin plugin version 9.8 after
add_filter('wpbc_booking_form_html__update__append_change_over_times', array( $this, 'getFormField' ), 99, 2);
add_action('wpbc_track_new_booking', array( $this, 'sendsmsNewBooking' ), 100, 1);
add_action('wpbc_booking_action__approved', array( $this, 'sendsmsApprovedPending' ), 99, 2);
add_action('wpbc_booking_action__trash', array( $this, 'sendsmsTrash' ), 100, 2);
add_action('booking_reminder_sendsms_hook', array( $this, 'sendReminderSms' ), 10);
}
/**
* Set booking reminder.
*
* @param int $booking_id booking id.
*
* @return void
*/
public static function setBookingReminder( $booking_id )
{
if (function_exists('wpbc_api_get_booking_by_id') ) {
$booking = wpbc_api_get_booking_by_id($booking_id);
if (empty($booking) ) {
return;
}
$booking_status = $booking['approved'];
$booking_start=date('Y-m-d H:i:s', strtotime($booking['booking_date']));
$buyer_mob = $booking['formdata']['phone1'];
$customer_notify = smsalert_get_option('customer_notify', 'smsalert_bc_general', 'on');
global $wpdb;
$table_name = $wpdb->prefix . 'smsalert_booking_reminder';
$source = 'booking-calendar';
$booking_details = $wpdb->get_results("SELECT * FROM $table_name WHERE booking_id = $booking_id and source = '$source'");
if ('1' === $booking_status && 'on' === $customer_notify ) {
if ($booking_details ) {
$wpdb->update(
$table_name,
array(
'start_date' => $booking_start,
'phone' => $buyer_mob
),
array( 'booking_id' => $booking_id )
);
} else {
$wpdb->insert(
$table_name,
array(
'booking_id' => $booking_id,
'phone' => $buyer_mob,
'source' => $source,
'start_date' => $booking_start
)
);
}
} else {
$wpdb->delete($table_name, array( 'booking_id' => $booking_id ));
}
}
}
/**
* Send sms function.
*
* @return void
*/
function sendReminderSms()
{
if ('on' !==smsalert_get_option('customer_notify', 'smsalert_bc_general')) {
return;
}
global $wpdb;
$cron_frequency = BOOKING_REMINDER_CRON_INTERVAL; // pick data from previous CART_CRON_INTERVAL min
$table_name = $wpdb->prefix . 'smsalert_booking_reminder';
$source = 'booking-calendar';
$scheduler_data = get_option('smsalert_bc_reminder_scheduler');
foreach ( $scheduler_data['cron'] as $sdata ) {
$datetime = current_time('mysql');
$fromdate = date('Y-m-d H:i:s', strtotime('+' . ( $sdata['frequency']*60 - $cron_frequency ) . ' minutes', strtotime($datetime)));
$todate = date('Y-m-d H:i:s', strtotime('+' . $cron_frequency . ' minutes', strtotime($fromdate)));
$rows_to_phone = $wpdb->get_results(
'SELECT * FROM ' . $table_name . " WHERE start_date > '" . $fromdate . "' AND start_date <= '" . $todate . "' AND source = '$source' ",
ARRAY_A
);
if ($rows_to_phone ) { // If we have new rows in the database
$customer_message = $sdata['message'];
$frequency_time = $sdata['frequency'];
if ('' !== $customer_message && 0 !== $frequency_time ) {
$obj = array();
foreach ( $rows_to_phone as $key=>$data ) {
$booking = wpbc_api_get_booking_by_id($data['booking_id']);
$obj[ $key ]['number'] = $data['phone'];
$obj[ $key ]['sms_body'] = self::parseSmsBody($booking, $customer_message);
}
$response = SmsAlertcURLOTP::sendSmsXml($obj);
$response_arr = json_decode($response, true);
if (!empty($response_arr['status']) && 'success' === $response_arr['status'] ) {
foreach ( $rows_to_phone as $data ) {
$last_msg_count = $data['msg_sent'];
$total_msg_sent = $last_msg_count + 1;
$wpdb->update(
$table_name,
array(
'msg_sent' => $total_msg_sent
),
array( 'booking_id' => $data['booking_id'], 'source'=>$source )
);
}
}
}
}
}
}
/**
* Add Shortcode for OTP and Add additional js code to your script
*
* @param array $form form.
* @param string $my_boook_type my_boook_type.
*
* @return string
*/
public function getFormField($form , $my_boook_type)
{
$inline_script = 'document.addEventListener("DOMContentLoaded", function() {';
if ('on' === smsalert_get_option('checkout_show_country_code', 'smsalert_general') && 'off' === smsalert_get_option('otp_enable', 'smsalert_bc_general') && ( 'on' === smsalert_get_option('customer_bc_notify_pending', 'smsalert_bc_general') || 'on' === smsalert_get_option('customer_bc_notify_approved', 'smsalert_bc_general') || 'on' === smsalert_get_option('customer_bc_notify_trash', 'smsalert_bc_general') )) {
$inline_script .= 'jQuery("#phone1").addClass("phone-valid");';
}
if ('on' === smsalert_get_option('checkout_show_country_code', 'smsalert_general') || 'on' === smsalert_get_option('otp_enable', 'smsalert_bc_general')) {
$inline_script .= 'var get_click = jQuery(".btn-default").attr("onclick");
jQuery(".btn-default").removeAttr("onclick");
var sub_form = "";
jQuery(".btn-default").on("click", function(e) {
sub_form = this.form;
if( typeof sa_otp_settings != "undefined" && sa_otp_settings["show_countrycode"] == "on" )
{
var phone_num = jQuery("input:hidden[name=phone1]").val();
jQuery(".phone-valid").val(phone_num);
}
default_click = Function(get_click.replace("this.form", "sub_form"));
default_click();
});';
}
if ('on' === smsalert_get_option('otp_enable', 'smsalert_bc_general')) {
$form .= do_shortcode('[sa_verify phone_selector="#phone1" submit_selector= "form.booking_form button"]');
$inline_script .= 'setTimeout(function (){jQuery(".sa-otp-btn-init").removeAttr("onclick")}, 1000);';
}
$inline_script .= '});';
if (! wp_script_is('sainlinescript-handle-footer', 'enqueued') ) {
wp_register_script('sainlinescript-handle-footer', '', [], '', true);
wp_enqueue_script('sainlinescript-handle-footer');
}
wp_add_inline_script("sainlinescript-handle-footer", $inline_script);
return $form;
}
/**
* Add default settings to savesetting in setting-options.
*
* @param array $defaults defaults.
*
* @return array
*/
public static function add_default_setting( $defaults = array() )
{
$booking_statuses = array( 'new', 'pending', 'approved', 'trash' );
foreach ( $booking_statuses as $ks => $vs ) {
$defaults['smsalert_bc_general'][ 'customer_bc_notify_' . $vs ] = 'off';
$defaults['smsalert_bc_message'][ 'customer_sms_bc_body_' . $vs ] = '';
$defaults['smsalert_bc_general'][ 'admin_bc_notify_' . $vs ] = 'off';
$defaults['smsalert_bc_message'][ 'admin_sms_bc_body_' . $vs ] = '';
}
$defaults['smsalert_bc_general'][ 'otp_enable'] = 'off';
$defaults['smsalert_bc_general']['customer_notify'] = 'off';
$defaults['smsalert_bc_reminder_scheduler']['cron'][0]['frequency'] = '1';
$defaults['smsalert_bc_reminder_scheduler']['cron'][0]['message'] = '';
return $defaults;
}
/**
* Add tabs to smsalert settings at backend.
*
* @param array $tabs tabs.
*
* @return array
*/
public static function addTabs( $tabs = array() )
{
$customer_param = array(
'checkTemplateFor' => 'bc_customer',
'templates' => self::getCustomerTemplates(),
);
$admin_param = array(
'checkTemplateFor' => 'bc_admin',
'templates' => self::getAdminTemplates(),
);
$reminder_param = array(
'checkTemplateFor' => 'wc_booking_calendar_reminder',
'templates' => self::getReminderTemplates(),
);
$tabs['booking_calendar']['nav'] = 'Booking Calendar';
$tabs['booking_calendar']['icon'] = 'dashicons-calendar-alt';
$tabs['booking_calendar']['inner_nav']['booking_calendar_cust']['title'] = 'Customer Notifications';
$tabs['booking_calendar']['inner_nav']['booking_calendar_cust']['tab_section'] = 'bookingcalendarcusttemplates';
$tabs['booking_calendar']['inner_nav']['booking_calendar_cust']['first_active'] = true;
$tabs['booking_calendar']['inner_nav']['booking_calendar_cust']['tabContent'] = $customer_param;
$tabs['booking_calendar']['inner_nav']['booking_calendar_cust']['filePath'] = 'views/message-template.php';
$tabs['booking_calendar']['inner_nav']['booking_calendar_admin']['title'] = 'Admin Notifications';
$tabs['booking_calendar']['inner_nav']['booking_calendar_admin']['tab_section'] = 'bookingcalendaradmintemplates';
$tabs['booking_calendar']['inner_nav']['booking_calendar_admin']['tabContent'] = $admin_param;
$tabs['booking_calendar']['inner_nav']['booking_calendar_admin']['filePath'] = 'views/message-template.php';
$tabs['booking_calendar']['inner_nav']['booking_calendar_reminder']['title'] = 'Booking Reminder';
$tabs['booking_calendar']['inner_nav']['booking_calendar_reminder']['tab_section'] = 'bookingremindertemplates';
$tabs['booking_calendar']['inner_nav']['booking_calendar_reminder']['tabContent'] = $reminder_param;
$tabs['booking_calendar']['inner_nav']['booking_calendar_reminder']['filePath'] = 'views/booking-reminder-template.php';
$tabs['booking_calendar']['help_links'] = array(
'youtube_link' => array(
'href' => 'https://youtu.be/4BXd_XZt9zM',
'target' => '_blank',
'alt' => 'Watch steps on Youtube',
'class' => 'btn-outline',
'label' => 'Youtube',
'icon' => '<span class="dashicons dashicons-video-alt3" style="font-size: 21px;"></span> ',
),
'kb_link' => array(
'href' => 'https://kb.smsalert.co.in/knowledgebase/integrate-with-booking-calendar/',
'target' => '_blank',
'alt' => 'Read how to integrate with booking calendar',
'class' => 'btn-outline',
'label' => 'Documentation',
'icon' => '<span class="dashicons dashicons-format-aside"></span>',
),
);
return $tabs;
}
/**
* Get wc renewal templates function.
*
* @return array
* */
public static function getReminderTemplates()
{
$current_val = smsalert_get_option('customer_notify', 'smsalert_bc_general', 'on');
$checkbox_name_id = 'smsalert_bc_general[customer_notify]';
$scheduler_data = get_option('smsalert_bc_reminder_scheduler');
$templates = array();
$count = 0;
if (empty($scheduler_data) ) {
$scheduler_data = array();
$scheduler_data['cron'][] = array(
'frequency' => '1',
'message' => sprintf(__('Hello %1$s, your booking %2$s with %3$s is fixed on %4$s.%5$sPowered by%6$swww.smsalert.co.in', 'sms-alert'), '[name]', '#[booking_id]', '[store_name]', '[date]', PHP_EOL, PHP_EOL),
);
}
foreach ( $scheduler_data['cron'] as $key => $data ) {
$text_area_name_id = 'smsalert_bc_reminder_scheduler[cron][' . $count . '][message]';
$select_name_id = 'smsalert_bc_reminder_scheduler[cron][' . $count . '][frequency]';
$text_body = $data['message'];
$templates[ $key ]['notify_id'] = 'booking-calendar';
$templates[ $key ]['frequency'] = $data['frequency'];
$templates[ $key ]['enabled'] = $current_val;
$templates[ $key ]['title'] = 'Send booking reminder to customer';
$templates[ $key ]['checkboxNameId'] = $checkbox_name_id;
$templates[ $key ]['text-body'] = $text_body;
$templates[ $key ]['textareaNameId'] = $text_area_name_id;
$templates[ $key ]['selectNameId'] = $select_name_id;
$templates[ $key ]['token'] = self::getBookingCalendarvariables();
$count++;
}
return $templates;
}
/**
* Get customer templates.
*
* @return array
*/
public static function getCustomerTemplates()
{
$booking_statuses = array(
// '[new]' => 'New',
'[pending]' => 'Pending',
'[approved]' => 'Approved',
'[trash]' => 'Trash',
);
$templates = array();
foreach ( $booking_statuses as $ks => $vs ) {
$current_val = smsalert_get_option('customer_bc_notify_' . strtolower($vs), 'smsalert_bc_general', 'on');
$checkbox_name_id = 'smsalert_bc_general[customer_bc_notify_' . strtolower($vs) . ']';
$textarea_name_id = 'smsalert_bc_message[customer_sms_bc_body_' . strtolower($vs) . ']';
$default_templates = array(
'DEFAULT_BOOKING_CALENDAR_CUSTOMER_PENDING' => sprintf(__('Hello %1$s, status of your booking with %2$s has been changed to pending.%3$sPowered by%4$swww.smsalert.co.in', 'sms-alert'), '[name]', '[store_name]', PHP_EOL, PHP_EOL),
'DEFAULT_BOOKING_CALENDAR_CUSTOMER_APPROVED' => sprintf(__('Hello %1$s, status of your booking with %2$s has been changed to confirmed.%3$sPowered by%4$swww.smsalert.co.in', 'sms-alert'), '[name]', '[store_name]', PHP_EOL, PHP_EOL),
'DEFAULT_BOOKING_CALENDAR_CUSTOMER_TRASH' => sprintf(__('Hello %1$s, status of your booking with %2$s has been changed to rejected.%3$sPowered by%4$swww.smsalert.co.in', 'sms-alert'), '[name]', '[store_name]', PHP_EOL, PHP_EOL)
);
$default_template = !empty($default_templates['DEFAULT_BOOKING_CALENDAR_CUSTOMER_' . strtoupper($vs)])?$default_templates['DEFAULT_BOOKING_CALENDAR_CUSTOMER_' . strtoupper($vs)]:'';
$text_body = smsalert_get_option('customer_sms_bc_body_' . strtolower($vs), 'smsalert_bc_message', ( ( '' !== $default_template ) ? $default_template : sprintf(__('Congratulation %1$s, you have become an instructor with %2$s.%3$sPowered by%4$swww.smsalert.co.in', 'sms-alert'), '[username]', '[store_name]', PHP_EOL, PHP_EOL) ));
$templates[ $ks ]['title'] = 'When customer booking is ' . ucwords($vs);
$templates[ $ks ]['enabled'] = $current_val;
$templates[ $ks ]['status'] = $vs;
$templates[ $ks ]['text-body'] = $text_body;
$templates[ $ks ]['checkboxNameId'] = $checkbox_name_id;
$templates[ $ks ]['textareaNameId'] = $textarea_name_id;
$templates[ $ks ]['token'] = self::getBookingCalendarvariables();
}
return $templates;
}
/**
* Get admin templates.
*
* @return array
*/
public static function getAdminTemplates()
{
$booking_statuses = array(
// '[new]' => 'New',
'[pending]' => 'Pending',
'[approved]' => 'Approved',
'[trash]' => 'Trash',
);
$templates = array();
foreach ( $booking_statuses as $ks => $vs ) {
$current_val = smsalert_get_option('admin_bc_notify_' . strtolower($vs), 'smsalert_bc_general', 'on');
$checkbox_name_id = 'smsalert_bc_general[admin_bc_notify_' . strtolower($vs) . ']';
$textarea_name_id = 'smsalert_bc_message[admin_sms_bc_body_' . strtolower($vs) . ']';
/* translators: %1$s: Store name tag, %2$s: Booking status */
$text_body = smsalert_get_option('admin_sms_bc_body_' . strtolower($vs), 'smsalert_bc_message', sprintf(__('Hello admin, status of your booking with %1$s has been changed to %2$s. %3$sPowered by%4$swww.smsalert.co.in', 'sms-alert'), '[store_name]', $vs, PHP_EOL, PHP_EOL));
$templates[ $ks ]['title'] = 'When admin change status to ' . ucwords($vs);
$templates[ $ks ]['enabled'] = $current_val;
$templates[ $ks ]['status'] = $vs;
$templates[ $ks ]['text-body'] = $text_body;
$templates[ $ks ]['checkboxNameId'] = $checkbox_name_id;
$templates[ $ks ]['textareaNameId'] = $textarea_name_id;
$templates[ $ks ]['token'] = self::getBookingCalendarvariables();
}
return $templates;
}
/**
* Send sms new booking.
*
* @param int $params params
*
* @return void
*/
public function sendsmsNewBooking( $params )
{
$booking_id = $params['booking_id'];
if (function_exists('wpbc_api_get_booking_by_id') ) {
$buyer_sms_data = array();
$booking = wpbc_api_get_booking_by_id($booking_id);
$buyer_number = $booking['formdata']['phone1'];
$customer_message = smsalert_get_option('customer_sms_bc_body_pending', 'smsalert_bc_message', '');
$customer_bc_notify = smsalert_get_option('customer_bc_notify_pending', 'smsalert_bc_general', 'on');
if ('on' === $customer_bc_notify && '' !== $customer_message ) {
$buyer_message = $this->parseSmsBody($booking, $customer_message);
do_action('sa_send_sms', $buyer_number, $buyer_message);
}
// send msg to admin.
$admin_phone_number = smsalert_get_option('sms_admin_phone', 'smsalert_message', '');
$nos = explode(',', $admin_phone_number);
$admin_phone_number = array_diff($nos, array( 'postauthor', 'post_author' ));
$admin_phone_number = implode(',', $admin_phone_number);
if (! empty($admin_phone_number) ) {
$admin_bc_notify = smsalert_get_option('admin_bc_notify_pending', 'smsalert_bc_general', 'on');
$admin_message = smsalert_get_option('admin_sms_bc_body_pending', 'smsalert_bc_message', '');
if ('on' === $admin_bc_notify && '' !== $admin_message ) {
$admin_message = $this->parseSmsBody($booking, $admin_message);
do_action('sa_send_sms', $admin_phone_number, $admin_message);
}
}
}
}
/**
* Send sms approved pending.
*
* @param int $booking_id booking_id
* @param int $is_approve_or_pending is_approve_or_pending.
*
* @return void
*/
public function sendsmsApprovedPending( $booking_id, $is_approve_or_pending )
{
if (function_exists('wpbc_api_get_booking_by_id') ) {
$buyer_sms_data = array();
$booking = wpbc_api_get_booking_by_id($booking_id);
$buyer_number = $booking['formdata']['phone1'];
if ('1' === $booking['is_new'] ) {
exit();
}
if ('1' === $is_approve_or_pending ) {
$customer_message = smsalert_get_option('customer_sms_bc_body_approved', 'smsalert_bc_message', '');
self::setBookingReminder($booking_id);
} else {
$customer_message = smsalert_get_option('customer_sms_bc_body_pending', 'smsalert_bc_message', '');
}
$customer_bc_pending_notify = smsalert_get_option('customer_bc_notify_pending', 'smsalert_bc_general', 'on');
$customer_bc_approved_notify = smsalert_get_option('customer_bc_notify_approved', 'smsalert_bc_general', 'on');
if (( 'on' === $customer_bc_approved_notify && '' !== $customer_message ) || ( 'on' === $customer_bc_pending_notify && '' !== $customer_message ) ) {
$buyer_message = $this->parseSmsBody($booking, $customer_message);
do_action('sa_send_sms', $buyer_number, $buyer_message);
}
// send msg to admin.
$admin_phone_number = smsalert_get_option('sms_admin_phone', 'smsalert_message', '');
if (! empty($admin_phone_number) ) {
$smsalert_bc_admin_pending_notify = smsalert_get_option('admin_bc_notify_pending', 'smsalert_bc_general', 'on');
$smsalert_bc_admin_approve_notify = smsalert_get_option('admin_bc_notify_approved', 'smsalert_bc_general', 'on');
if ('1' === $is_approve_or_pending ) {
$admin_message = smsalert_get_option('admin_sms_bc_body_approved', 'smsalert_bc_message', '');
} else {
$admin_message = smsalert_get_option('admin_sms_bc_body_pending', 'smsalert_bc_message', '');
}
$nos = explode(',', $admin_phone_number);
$admin_phone_number = array_diff($nos, array( 'postauthor', 'post_author' ));
$admin_phone_number = implode(',', $admin_phone_number);
if ('on' === $smsalert_bc_admin_pending_notify && '' !== $admin_message && '0' === $is_approve_or_pending ) {
$admin_message = $this->parseSmsBody($booking, $admin_message);
do_action('sa_send_sms', $admin_phone_number, $admin_message);
}
if ('on' === $smsalert_bc_admin_approve_notify && '' !== $admin_message && '1' === $is_approve_or_pending ) {
$admin_message = $this->parseSmsBody($booking, $admin_message);
do_action('sa_send_sms', $admin_phone_number, $admin_message);
}
}
}
}
/**
* Send sms trash.
*
* @param int $booking_id booking_id
* @param string $is_trash is_trash.
*
* @return void
*/
public function sendsmsTrash( $booking_id, $is_trash )
{
self::setBookingReminder($booking_id);
if (function_exists('wpbc_api_get_booking_by_id') ) {
$buyer_sms_data = array();
$booking = wpbc_api_get_booking_by_id($booking_id);
$buyer_sms_data['number'] = $booking['formdata']['phone1'];
$customer_message = smsalert_get_option('customer_sms_bc_body_trash', 'smsalert_bc_message', '');
$customer_bc_notify = smsalert_get_option('customer_bc_notify_trash', 'smsalert_bc_general', 'on');
if ('on' === $customer_bc_notify && '' !== $customer_message ) {
$buyer_sms_data['sms_body'] = $this->parseSmsBody($booking, $customer_message);
SmsAlertcURLOTP::sendsms($buyer_sms_data);
}
// send msg to admin.
$admin_phone_number = smsalert_get_option('sms_admin_phone', 'smsalert_message', '');
$nos = explode(',', $admin_phone_number);
$admin_phone_number=array_diff($nos, array('postauthor', 'post_author'));
$admin_phone_number = implode(',', $admin_phone_number);
if (! empty($admin_phone_number) ) {
$admin_bc_notify = smsalert_get_option('admin_bc_notify_trash', 'smsalert_bc_general', 'on');
$admin_message = smsalert_get_option('admin_sms_bc_body_trash', 'smsalert_bc_message', '');
if ('on' === $admin_bc_notify && '' !== $admin_message ) {
$admin_message = $this->parseSmsBody($booking, $admin_message);
do_action('sa_send_sms', $admin_phone_number, $admin_message);
}
}
}
}
/**
* Parse sms body.
*
* @param array $data data.
* @param string $content content.
*
* @return string
*/
public function parseSmsBody( $data = array(), $content = null )
{
$name = $data['formdata']['name1'];
$secondname = $data['formdata']['secondname1'];
$email = $data['formdata']['email1'];
$visitor = $data['formdata']['visitors1'];
$phone = $data['formdata']['phone1'];
$details = $data['formdata']['details1'];
$booking_date = date('M d,Y H:i', strtotime($data['booking_date']));
$booking_id = $data['booking_id'];
$find = array(
'[name]',
'[secondname]',
'[email]',
'[visitors]',
'[phone]',
'[details]',
'[date]',
'[booking_id]',
);
$replace = array(
$name,
$secondname,
$email,
$visitor,
$phone,
$details,
$booking_date,
$booking_id
);
$content = str_replace($find, $replace, $content);
return $content;
}
/**
* Get booking calendar variables.
*
* @return array
*/
public static function getBookingCalendarvariables()
{
$variables = wpbc_get_form_fields_free();
$variable = array();
foreach ( $variables as $vk => $vv ) {
$variable[ '[' . $vk . ']' ] = $vv;
}
$variable['[date]'] = 'Booking Date';
$variable['[booking_id]'] = 'Booking Id';
return $variable;
}
/**
* Handle form for WordPress backend
*
* @return void
*/
public function handleFormOptions()
{
if (is_plugin_active('booking/wpdev-booking.php') ) {
add_filter('sAlertDefaultSettings', __CLASS__ . '::add_default_setting', 1);
add_action('sa_addTabs', array( $this, 'addTabs' ), 10);
}
}
/**
* Check your otp setting is enabled or not.
*
* @return bool
*/
public function isFormEnabled()
{
$user_authorize = new smsalert_Setting_Options();
$islogged = $user_authorize->is_user_authorised();
return ( is_plugin_active('booking/wpdev-booking.php') && $islogged ) ? true : false;
}
/**
* Handle after failed verification
*
* @param object $user_login users object.
* @param string $user_email user email.
* @param string $phone_number phone number.
*
* @return void
*/
public function handle_failed_verification($user_login,$user_email,$phone_number)
{
SmsAlertUtility::checkSession();
if (! isset($_SESSION[ $this->form_session_var ]) ) {
return;
}
if (! empty($_REQUEST['option']) && sanitize_text_field(wp_unslash($_REQUEST['option'])) === 'smsalert-validate-otp-form' ) {
wp_send_json(SmsAlertUtility::_create_json_response(__('Invalid one time passcode. Please enter a valid passcode.', 'sms-alert'), 'error'));
exit();
} else {
$_SESSION[ $this->form_session_var ] = 'verification_failed';
}
}
/**
* Handle after post verification
*
* @param string $redirect_to redirect url.
* @param object $user_login user object.
* @param string $user_email user email.
* @param string $password user password.
* @param string $phone_number phone number.
* @param string $extra_data extra hidden fields.
*
* @return void
*/
public function handle_post_verification( $redirect_to, $user_login, $user_email, $password, $phone_number, $extra_data )
{
SmsAlertUtility::checkSession();
if (! isset($_SESSION[ $this->form_session_var ]) ) {
return;
}
if (! empty($_REQUEST['option']) && sanitize_text_field(wp_unslash($_REQUEST['option'])) === 'smsalert-validate-otp-form' ) {
wp_send_json(SmsAlertUtility::_create_json_response(__('OTP Validated Successfully.', 'sms-alert'), 'success'));
exit();
} else {
$_SESSION[ $this->form_session_var ] = 'validated';
}
}
/**
* Clear otp session variable
*
* @return void
*/
public function unsetOTPSessionVariables()
{
unset($_SESSION[ $this->form_session_var ]);
}
/**
* Check current form submission is ajax or not
*
* @param bool $is_ajax bool value for form type.
*
* @return bool
*/
public function is_ajax_form_in_play( $is_ajax )
{
SmsAlertUtility::checkSession();
return isset($_SESSION[ $this->form_session_var ]) ? true : $is_ajax;
}
}
new BookingCalendar();