File: /mnt/data/dreamsrent-wp-demo/wp-content/plugins/dreamsrent-widgets/inc/ajax_process.php
<?php if ( !defined( 'ABSPATH' ) ) exit();
if( !class_exists( 'Ajax_Process' ) ){
class Ajax_Process{
public function __construct(){
// add_action( 'wp_ajax_validate_form_booking', array( $this, 'validate_form_booking') );
// add_action( 'wp_ajax_nopriv_validate_form_booking', array( $this, 'validate_form_booking') );
add_action( 'wp_ajax_get_package_period_time', array( $this, 'get_package_period_time') );
add_action( 'wp_ajax_nopriv_get_package_period_time', array( $this, 'get_package_period_time') );
add_action( 'wp_ajax_get_location_pickup', array( $this, 'get_location_pickup') );
add_action( 'wp_ajax_nopriv_get_location_pickup', array( $this, 'get_location_pickup') );
add_action( 'wp_ajax_get_location_dropoff', array( $this, 'get_location_dropoff') );
add_action( 'wp_ajax_nopriv_get_location_dropoff', array( $this, 'get_location_dropoff') );
add_action( 'wp_ajax_get_resource_product', array( $this, 'get_resource_product') );
add_action( 'wp_ajax_nopriv_get_resource_product', array( $this, 'get_resource_product') );
add_action( 'wp_ajax_get_choise_deposit', array( $this, 'get_choise_deposit') );
add_action( 'wp_ajax_nopriv_get_choise_deposit', array( $this, 'get_choise_deposit') );
add_action( 'wp_ajax_get_custom_checkout_field_product', array( $this, 'get_custom_checkout_field_product') );
add_action( 'wp_ajax_nopriv_get_custom_checkout_field_product', array( $this, 'get_custom_checkout_field_product') );
}
public function validate_form_booking() {
global $woocommerce;
$product_id = $_POST['product_id'];
$passed = true;
$passed= dsrent_validation_booking_form($passed);
$data = [];
if ($passed) {
WC()->session->set( 'wc_notices', array() );
$woocommerce->cart->add_to_cart( $product_id );
$data['validate'] = 1;
} else {
$data['validate'] = 0;
$data = array_merge($data,wc_get_notices());
}
$data = json_encode($data);
echo $data;
wp_die();
}
public function get_location_pickup() {
$product_id = $_POST['product_id'];
$rental_type = $_POST['rental_type'];
$manage_store = get_post_meta( $product_id, 'dsrent_manage_store', true );
$html = '<span class="input-addon"><i class="fas fa-map-marker-alt" ></i> '.esc_html__("Pick-up", "dreamsrent_elementor"). '</span>';
if ( $rental_type !== 'transportation' ) {
if ( $manage_store === 'store' ) {
$html .= dsrent_get_st_locations_html( 'dsrent_pickup_loc', 'required', '', $product_id, 'pickup' );
} else {
$html .= dsrent_get_st_locations_html_get_locations_html( $class = 'dsrent_pickup_loc', $required = 'required', $selected = '', 'Select Location', $product_id );
}
} else {
$html .= dsrent_get_st_locations_html_get_locations_transport_html( $class = 'dsrent_pickup_loc', $required = 'required', $selected = '', $product_id, 'pickup' );
}
echo $html;
wp_die();
}
public function get_location_dropoff() {
$product_id = $_POST['product_id'];
$rental_type = $_POST['rental_type'];
$manage_store = get_post_meta( $product_id, 'dsrent_manage_store', true );
$html = '<span class="input-addon"><i class="fas fa-map-marker-alt" ></i> '.esc_html__("Drop-off", "dreamsrent_elementor"). '</span>';
if ( $rental_type !== 'transportation' ) {
if ( $manage_store === 'store' ) {
$html .= dsrent_get_st_locations_html_get_st_locations_html( 'dsrent_pickoff_loc', 'required', '', $product_id, 'pickoff' );
} else {
$html .= dsrent_get_st_locations_html_get_locations_html( $class = 'dsrent_pickoff_loc', $required = 'required', $selected = '', 'Select Location', $product_id );
}
} else {
$html .= dsrent_get_st_locations_html_get_locations_transport_html( $class = 'dsrent_pickoff_loc', $required = 'required', $selected = '', $product_id, 'dropoff' );
}
echo $html;
wp_die();
}
public function get_package_period_time () {
$product_id = $_POST['product_id'];
$rental_type = $_POST['rental_type'];
$hour_default = get_theme_mod( 'rd_bf_hour_default', '09:00' );
$time_step = get_theme_mod( 'rd_bf_time_step', '30' );
$dateformat = get_theme_mod( 'rd_bf_dateformat', 'Y-m-d' );
$timeformat = get_theme_mod( 'rd_bf_timeformat', 'H:i' );
$dsrent_petime_id = get_post_meta( $product_id, 'dsrent_petime_id', true );
$dsrent_petime_label = get_post_meta( $product_id, 'dsrent_petime_label', true );
$html = '';
$html .= '<span class="input-addon"><i class="fa fa-calendar"></i>'.esc_html__('Package','dreamsrent_elementor').'</span>';
if ($rental_type == "period_time") {
$html .= '<select name="dsrent_period_package_id" class="required">';
$html .= '<option value=""></option>';
if( $dsrent_petime_id ){
foreach ($dsrent_petime_id as $key => $value) {
if( isset( $dsrent_petime_id[$key] ) && isset( $dsrent_petime_label[$key] ) )
$html .= '<option value="'.trim( $dsrent_petime_id[$key] ) .'" > '. $dsrent_petime_label[$key] .' </option>';
}
}
$html .= '</select>';
}
$result =substr($html, 0, -1);
echo $result;
}
public function get_resource_product () {
$product_id = $_POST['product_id'];
$show_extra_resource_desc = isset($_POST['show_extra_resource_desc']) ? sanitize_text_field( $_POST['show_extra_resource_desc'] ) : '';
$dsrent_resource_name = get_post_meta( $product_id, 'dsrent_resource_name', true );
$html = '';
if( $dsrent_resource_name ){
$dsrent_resource_price = get_post_meta( $product_id, 'dsrent_resource_price', true );
$dsrent_resource_duration_type = get_post_meta( $product_id, 'dsrent_resource_duration_type', true );
$dsrent_resource_id = get_post_meta( $product_id, 'dsrent_resource_id', true );
$dsrent_resource_desc = get_post_meta( $product_id, 'dsrent_resource_desc', true );
foreach ($dsrent_resource_name as $key => $value) {
$dur_type = '';
switch ($dsrent_resource_duration_type[$key]) {
case 'hours':
$dur_type = esc_html__('Hour(s)', 'dreamsrent_elementor');
break;
case 'days':
$dur_type = esc_html__('Day(s)', 'dreamsrent_elementor');
break;
case 'total':
$dur_type = esc_html__('Total', 'dreamsrent_elementor');
break;
}
$html .= '<div class="item-resource">';
$html .= '<div class="left">';
$html .= '<input key="'.$dsrent_resource_id[$key].'" type="checkbox" name="dsrent_resource_checkboxs['.esc_attr( $dsrent_resource_id[$key] ).']" id="'.esc_attr( $dsrent_resource_name[$key] ).'" value="'.esc_attr( $dsrent_resource_name[$key] ).'" >';
$html .= '<label for="'.esc_attr( $dsrent_resource_name[$key] ).'">'.esc_html( $dsrent_resource_name[$key] );
$html .= '</div>';
$html .= '<div class="right">';
$html .= '<span class="dur_price">'.wc_price( $dsrent_resource_price[$key] ).'</span>';
$html .= '<span class="slash">/</span>';
$html .= '<span class="dur_type">'.$dur_type.'</span>';
$html .= '</div>';
$html .= '</div>';
if( isset( $dsrent_resource_desc[$key] ) && $dsrent_resource_desc[$key] && $show_extra_resource_desc === 'yes' ) {
$html .= '<div class="desc">';
$html .= do_shortcode( $dsrent_resource_desc[$key] );
$html .= '</div>';
}
}
}
echo $html;
}
public function get_choise_deposit () {
$product_id = $_POST['product_id'];
$deposit_force = get_post_meta ( $product_id, 'dsrent_force_deposit', true );
$deposit_type_deposit = get_post_meta ( $product_id, 'dsrent_type_deposit', true );
$value_deposit = get_post_meta ( $product_id, 'dsrent_amount_deposit', true );
$cursor = $disable = '';
if ($deposit_force === 'yes') {
$cursor = 'cursor: pointer';
} else {
$disable = 'disabled';
}
$html = '';
$deposit_enable = get_post_meta ( $product_id, 'dsrent_enable_deposit', true );
if ( $deposit_enable === 'yes' ) {
$html .= '<div class="dsrent-deposit">';
$html .= '<div class="title-deposite">';
$html .= '<span >'. esc_html__("Deposit Option", "dreamsrent_elementor").'</span>';
if ($deposit_type_deposit === 'percent') {
$html .= '<span >'.esc_html($value_deposit) .'%</span>';
} else {
$html .= '<span class="">'. wc_price($value_deposit) .'</span>';
}
$html .= '<span class="">'.esc_html__('Per item', 'dreamsrent_elementor').'</span>';
$html .= '</div>';
$html .= '<div class="dsrent-type-deposit">';
$html .= '<input type="radio" id="dsrent-pay-deposit" name="ova_type_deposit" value="deposit" checked />';
$html .= '<label style="'.esc_attr($cursor) .'" for="dsrent-pay-deposit">'.esc_html__('Pay Deposit', 'dreamsrent_elementor').'</label>';
$html .= '<input type="radio" id="dsrent-pay-full" name="ova_type_deposit" value="full" '.esc_attr($disable) .' />';
$html .= '<label style="'.esc_attr($cursor).'" for="dsrent-pay-full">'.esc_html__('Full Amount', 'dreamsrent_elementor') .'</label>';
$html .= '</div>';
$html .= '</div>';
}
echo $html;
}
// Get custom checkout field
public function get_custom_checkout_field_product(){
$product_id = $_POST['product_id'];
$list_ckf_output = dsrent_get_list_field_checkout( $product_id );
$html = '';
if( is_array( $list_ckf_output ) && ! empty( $list_ckf_output ) ) {
foreach( $list_ckf_output as $key => $field ) {
if( array_key_exists('enabled', $field) && $field['enabled'] == 'on' ) {
if( array_key_exists('required', $field) && $field['required'] == 'on' ) {
$class_required = 'required';
} else {
$class_required = '';
}
$html .= '<label>'.$field['label'].'</label>';
$html .= '<div class="dsrent_'.$key.'"></div>';
if( $field['type'] !== 'textarea' && $field['type'] !== 'select' ) {
$html .= '<input type="'.$field['type'].'" name="'.$key.'" class=" custom_ck_field '.$field['class'].' '.$class_required.'" placeholder="'.$field['placeholder'].'" value="'.$field['default'].'" data-error=".dsrent_'. $key.'" />';
}
if( $field['type'] === 'textarea' ) {
$html .= '<textarea name="'.$key.'" class=" custom_ck_field '.$field['class'].' '. $class_required. '" placeholder="'.$field['placeholder'].'" value="'.$field['default'].'" cols="10" rows="5"></textarea>';
}
if( $field['type'] === 'select' ) {
$ova_options_key = $ova_options_text = [];
if( array_key_exists( 'ova_options_key', $field ) ) {
$ova_options_key = $field['ova_options_key'];
}
if( array_key_exists( 'ova_options_text', $field ) ) {
$ova_options_text = $field['ova_options_text'];
}
$html .= '<select name="'. $key.'" class=" custom_ck_field '.$field['class'].' '. $class_required. '" >';
if( ! empty( $ova_options_text ) && is_array( $ova_options_text ) ) {
foreach( $ova_options_text as $key => $value ) {
$selected = '';
if( $ova_options_key[$key] == $field['default'] ) {
$selected = 'selected';
}
$html .= '<option '.$selected.' value="'.$ova_options_key[$key] .'">'.$value.'</option>';
}
}
$html .= '</select>';
}
$html .= '<br/><br/><div class="error">'.esc_html__( 'Please input data', 'dreamsrent_elementor' ).'</div>';
}//endif
}//end foreach
}//end if
echo $html;
}
}
new Ajax_Process();
}
?>