HEX
Server: nginx/1.24.0
System: Linux DGT-WORDPRESS-VM-SERVER 6.14.0-1014-azure #14~24.04.1-Ubuntu SMP Fri Oct 3 20:52:11 UTC 2025 x86_64
User: ubuntu (1000)
PHP: 8.4.12
Disabled: NONE
Upload Files
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();
}


?>