| 1 |
<?php |
| 2 |
namespace Wdk\Elementor\Extensions; |
| 3 |
|
| 4 |
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly |
| 5 |
|
| 6 |
class AjaxHandler { |
| 7 |
/** |
| 8 |
* data array |
| 9 |
* |
| 10 |
* @var array |
| 11 |
*/ |
| 12 |
protected $data = array(); |
| 13 |
public $_translate_strings = array(); |
| 14 |
protected $WMVC = NULL; |
| 15 |
|
| 16 |
|
| 17 |
public function __construct($data = array(), $args = null) { |
| 18 |
add_action( 'eli/ajax-handler/after', array( $this, 'after' ) ); |
| 19 |
add_filter( 'eli/ajax-handler/filter_from_data', array( $this, 'filter_from_data' ) ); |
| 20 |
|
| 21 |
$this->_translate_strings = array( |
| 22 |
__('Guests number', 'wpdirectorykit'), |
| 23 |
__('Listing link', 'wpdirectorykit'), |
| 24 |
__('Name', 'wpdirectorykit'), |
| 25 |
__('Date from', 'wpdirectorykit'), |
| 26 |
__('Date to', 'wpdirectorykit'), |
| 27 |
); |
| 28 |
} |
| 29 |
|
| 30 |
public function filter_output ($filter_output = array()) { |
| 31 |
$filter_output['message'] = '<div class="elementinvader_addons_for_elementor_alert elementinvader_addons_for_elementor_alert-primary" role="alert">The form was sent successfully.</div>'; |
| 32 |
return $filter_output; |
| 33 |
} |
| 34 |
|
| 35 |
public function filter_from_data ($form_data = array()) { |
| 36 |
if (isset($_POST['date_from']) && isset($_POST['date_to'])) { |
| 37 |
/* disable double sent to admin mail */ |
| 38 |
$form_data['settings']['disable_mail_send'] = 1; |
| 39 |
} |
| 40 |
if (isset($_POST['listing_id']) && !empty($_POST['listing_id'])) { |
| 41 |
/* disable double sent to admin mail */ |
| 42 |
$form_data['settings']['disable_mail_send'] = 1; |
| 43 |
} |
| 44 |
return $form_data; |
| 45 |
} |
| 46 |
|
| 47 |
public function after ($form_data = array()) { |
| 48 |
|
| 49 |
$this->WMVC = &wdk_get_instance(); |
| 50 |
$this->WMVC->model('messages_m'); |
| 51 |
|
| 52 |
$message_skip = false; |
| 53 |
|
| 54 |
$email = ''; |
| 55 |
$message = ''; |
| 56 |
$post_id = ''; |
| 57 |
$wdk_widget = ''; |
| 58 |
foreach ($_POST as $key => $value) { |
| 59 |
if (stripos($key, 'mail') !== false || filter_var($value, FILTER_VALIDATE_EMAIL)) { |
| 60 |
$email = sanitize_email($value); |
| 61 |
} |
| 62 |
if (stripos($key, 'message') !== false) { |
| 63 |
$message = sanitize_text_field($value); |
| 64 |
} |
| 65 |
if (stripos($key, 'wdk_widget') !== false) { |
| 66 |
$wdk_widget = sanitize_text_field($value); |
| 67 |
} |
| 68 |
if (stripos($key, 'listing_id') !== false) { |
| 69 |
$post_id = sanitize_text_field($value); |
| 70 |
} |
| 71 |
} |
| 72 |
|
| 73 |
if(function_exists('run_wdk_bookings') && ( |
| 74 |
is_user_logged_in() || |
| 75 |
$wdk_widget == 'wdk-booking-quick-submission' || |
| 76 |
wdk_get_option('wdk_booking_disable_for_not_login') || |
| 77 |
(!wdk_get_option('wdk_booking_disable_for_not_login') && wdk_get_option('wdk_bookings_enable_woocommerce_payments')) |
| 78 |
) |
| 79 |
) { |
| 80 |
if(isset($_POST['date_from']) && isset($_POST['date_to']) && !empty($_POST['date_from']) && !empty($_POST['date_to'])) { |
| 81 |
$date_from = sanitize_text_field($_POST['date_from']); |
| 82 |
$date_to = sanitize_text_field($_POST['date_to']); |
| 83 |
$errors = ''; |
| 84 |
|
| 85 |
global $Winter_MVC_wdk_bookings; |
| 86 |
$Winter_MVC_wdk_bookings->model('reservation_m'); |
| 87 |
$Winter_MVC_wdk_bookings->model('calendar_m'); |
| 88 |
$Winter_MVC_wdk_bookings->model('price_m'); |
| 89 |
|
| 90 |
$calendar = $Winter_MVC_wdk_bookings->calendar_m->get_by(array('post_id'=>$post_id), TRUE); // date_package_expire package_id |
| 91 |
|
| 92 |
|
| 93 |
if(wdk_is_date($date_from)) |
| 94 |
{ |
| 95 |
$date_from = wdk_normalize_date_db($date_from, 'Y-m-d H:i:s', (!wmvc_show_data('is_hour_enabled', $calendar,false)) ? 'Y-m-d': 'Y-m-d H:i:s'); |
| 96 |
} |
| 97 |
else |
| 98 |
{ |
| 99 |
return false; |
| 100 |
} |
| 101 |
|
| 102 |
if(wdk_is_date($date_to)) |
| 103 |
{ |
| 104 |
$date_to = wdk_normalize_date_db($date_to, 'Y-m-d H:i:s', (!wmvc_show_data('is_hour_enabled', $calendar,false)) ? 'Y-m-d': 'Y-m-d H:i:s'); |
| 105 |
} |
| 106 |
else |
| 107 |
{ |
| 108 |
return false; |
| 109 |
} |
| 110 |
|
| 111 |
|
| 112 |
/* message data */ |
| 113 |
|
| 114 |
|
| 115 |
$price = $Winter_MVC_wdk_bookings->reservation_m->calculate_price($post_id, $date_from, $date_to); |
| 116 |
|
| 117 |
$calendar_fees = array(); |
| 118 |
if($calendar && !empty($calendar->json_data_fees)) |
| 119 |
$calendar_fees = json_decode($calendar->json_data_fees ); |
| 120 |
|
| 121 |
if($price) { |
| 122 |
$guests_number = intval(wmvc_show_data('guests_number_adults', $_POST, 0)) + intval(wmvc_show_data('guests_number_childs', $_POST, 0)); |
| 123 |
$nights = (int)abs(strtotime($date_to) - strtotime($date_from))/(60*60*24); |
| 124 |
foreach ($calendar_fees as $fee) { |
| 125 |
if(!wmvc_show_data('is_activated', $fee, false,TRUE,TRUE)) continue; |
| 126 |
if(is_intval(wmvc_show_data('value', $fee,'',TRUE,TRUE))) { |
| 127 |
$field = wdk_generate_slug(strtolower(esc_html(wmvc_show_data('title', $fee,'-',TRUE,TRUE)))); |
| 128 |
if(!wmvc_show_data('is_required', $fee, false,TRUE,TRUE) && !isset($_POST['fee_'.$field])) { |
| 129 |
|
| 130 |
} else { |
| 131 |
if(wmvc_show_data('calculation_base', $fee,'',TRUE,TRUE) == 'per_night') { |
| 132 |
$price['price'] += intval(wmvc_show_data('value', $fee,'',TRUE,TRUE)) * $nights; |
| 133 |
} else if(wmvc_show_data('calculation_base', $fee,'',TRUE,TRUE) == 'per_person') { |
| 134 |
$price['price'] += intval(wmvc_show_data('value', $fee,'',TRUE,TRUE)) * $guests_number; |
| 135 |
} else { |
| 136 |
$price['price'] += intval(wmvc_show_data('value', $fee,'',TRUE,TRUE)); |
| 137 |
} |
| 138 |
} |
| 139 |
} |
| 140 |
} |
| 141 |
} |
| 142 |
|
| 143 |
$note = '<br>'; |
| 144 |
if(empty($calendar->is_guests_disabled)){ |
| 145 |
if(wmvc_show_data ('guests_number_adults', $_POST, false)) |
| 146 |
$note .= '<b>'.__('Guests Adult', 'wpdirectorykit').':</b> '.sanitize_text_field(wmvc_show_data('guests_number_adults', $_POST)).'<br>'.PHP_EOL; |
| 147 |
if(wmvc_show_data ('guests_number_childs', $_POST, false)) |
| 148 |
$note .= '<b>'.__('Guests Childs', 'wpdirectorykit').':</b> '.sanitize_text_field(wmvc_show_data('guests_number_childs', $_POST)).'<br>'.PHP_EOL; |
| 149 |
} |
| 150 |
|
| 151 |
if(wmvc_show_data ('сhildrens_allowed', $_POST, false) || intval(wmvc_show_data ('guests_number_childs', $_POST, false)) > 0) |
| 152 |
$note .= '<b>'.__('Childrens', 'wpdirectorykit').':</b> yes'.'<br>'.PHP_EOL; |
| 153 |
|
| 154 |
if(wmvc_show_data ('pets_allowed', $_POST, false)) |
| 155 |
$note .= '<b>'.__('Pets', 'wpdirectorykit').':</b> yes'.'<br>'.PHP_EOL; |
| 156 |
|
| 157 |
if(wmvc_show_data ('Name', $_POST, false)) |
| 158 |
$note .= '<b>'.__('Name', 'wpdirectorykit').':</b> '.sanitize_text_field(wmvc_show_data ('Name', $_POST)).'<br>'.PHP_EOL; |
| 159 |
|
| 160 |
if(wmvc_show_data ('Email', $_POST, false)) |
| 161 |
$note .= '<b>'.__('Email', 'wpdirectorykit').':</b> '.sanitize_text_field(wmvc_show_data ('Email', $_POST)).'<br>'.PHP_EOL; |
| 162 |
|
| 163 |
if(wmvc_show_data ('Message', $_POST, false)) |
| 164 |
$note .= '<b>'.__('Message', 'wpdirectorykit').':</b> '.sanitize_text_field(wmvc_show_data ('Message', $_POST)).'<br>'.PHP_EOL; |
| 165 |
|
| 166 |
if(wmvc_show_data ('Phone', $_POST, false)) |
| 167 |
$note .= '<b>'.__('Phone', 'wpdirectorykit').':</b> '.sanitize_text_field(wmvc_show_data ('Phone', $_POST)).'<br>'.PHP_EOL; |
| 168 |
|
| 169 |
if(true) |
| 170 |
foreach($_POST as $key => $value) { |
| 171 |
if($key=='element_id') continue; |
| 172 |
if(in_array($key, array('eli_page_id', 'g-recaptcha-response','eli_id', 'eli_type','ID','filter','action','send_action_type','Phone','Message','Email','Name','pets_allowed','сhildrens_allowed','guests_number','guests_number_childs','guests_number_adults'))) continue; |
| 173 |
if(in_array($key, array('listing_link','date_from','date_to','listing_id','wdk_widget', 'function','page'))) continue; |
| 174 |
|
| 175 |
if(filter_var($value, FILTER_VALIDATE_URL ) || strpos( $value, 'http' ) !== FALSE) { |
| 176 |
$note .= '<b> '.__(str_replace('_',' ', ucfirst($key)), 'wpdirectorykit').':</b> <a href="'.esc_url($value).'">'.$value.'</a><br>'; |
| 177 |
} else { |
| 178 |
$note .= '<b> '.__(str_replace('_',' ', ucfirst($key)), 'wpdirectorykit').':</b> '.$value.'<br>'; |
| 179 |
} |
| 180 |
} |
| 181 |
|
| 182 |
|
| 183 |
if( !is_user_logged_in()) { |
| 184 |
|
| 185 |
if( |
| 186 |
$wdk_widget == 'wdk-booking-quick-submission' || |
| 187 |
(!wdk_get_option('wdk_booking_disable_for_not_login') && wdk_get_option('wdk_bookings_enable_woocommerce_payments')) |
| 188 |
) { |
| 189 |
|
| 190 |
/* if not disable for not login users, try create user */ |
| 191 |
$userlogin = $email; |
| 192 |
$username = ''; |
| 193 |
$email_address = $email; |
| 194 |
$password = wp_generate_password(); |
| 195 |
|
| 196 |
if(wmvc_show_data('name', $_POST, false)) |
| 197 |
$username = sanitize_text_field(wmvc_show_data('name', $_POST, false)); |
| 198 |
|
| 199 |
$user_id = wp_create_user( $userlogin, $password, $email_address ); |
| 200 |
|
| 201 |
if(is_intval($user_id)) { |
| 202 |
// Set the nickname |
| 203 |
wp_update_user( |
| 204 |
array( |
| 205 |
'ID' => $user_id, |
| 206 |
'nickname' => $email_address |
| 207 |
) |
| 208 |
); |
| 209 |
|
| 210 |
$user = new \WP_User( $user_id ); |
| 211 |
$user->set_role('wdk_visitor'); |
| 212 |
|
| 213 |
wp_update_user( array ('ID' => $user_id, 'display_name' => esc_html( $username ) ) ); |
| 214 |
|
| 215 |
$userdata = get_userdata($user_id); |
| 216 |
|
| 217 |
$subject = __('New user on our website!', 'wdk-membership'); |
| 218 |
$data_message = array(); |
| 219 |
$data_message['login'] = $userlogin; |
| 220 |
$data_message['password'] = $password; |
| 221 |
$data_message['user'] = $userdata; |
| 222 |
$data_message['data'] = ''; |
| 223 |
|
| 224 |
update_user_meta( $user_id, 'first_name', $username); |
| 225 |
|
| 226 |
wdk_mail($email_address, $subject, $data_message, 'new_user_auto_created'); |
| 227 |
|
| 228 |
/* auto login */ |
| 229 |
wp_set_current_user($user_id, $userdata->user_login ); |
| 230 |
wp_set_auth_cookie($user_id); |
| 231 |
|
| 232 |
} elseif($user = get_user_by( 'email', $email_address)) { |
| 233 |
$user_id = $user->ID; |
| 234 |
$errors .= '<div class="elementinvader_addons_for_elementor_alert elementinvader_addons_for_elementor_alert-danger" role="alert">'.wdk_sprintf(__( 'For Booking required login, user with email %1$s already exists, please first try login', 'wpdirectorykit' ), $email_address).' <a href="'.wdk_login_url().'" target="_blank" style="text-decoration: underline;">'.esc_html__('here', 'wpdirectorykit').'</a></div>'; |
| 235 |
} else { |
| 236 |
$errors .= '<div class="elementinvader_addons_for_elementor_alert elementinvader_addons_for_elementor_alert-danger" role="alert">'.esc_html__('For Booking please login', 'wpdirectorykit').' <a href="'.wdk_login_url().'" target="_blank" style="text-decoration: underline;">'.esc_html__('here', 'wpdirectorykit').'</div>'; |
| 237 |
} |
| 238 |
} else { |
| 239 |
$errors .= '<div class="elementinvader_addons_for_elementor_alert elementinvader_addons_for_elementor_alert-danger" role="alert">'.esc_html__('For Booking please login', 'wpdirectorykit').' <a href="'.wdk_login_url().'" target="_blank" style="text-decoration: underline;">'.esc_html__('here', 'wpdirectorykit').'</div>'; |
| 240 |
} |
| 241 |
} |
| 242 |
|
| 243 |
$data = array( |
| 244 |
'post_id' => ($post_id), |
| 245 |
'date_from' => ($date_from), |
| 246 |
'date_to' => ($date_to), |
| 247 |
'notes' => $message, |
| 248 |
'user_id' => get_current_user_id(), |
| 249 |
'price' => wmvc_show_data('price', $price), |
| 250 |
'currency_code' => wdk_booking_currency_symbol(), |
| 251 |
'calendar_id' => wmvc_show_data('idcalendar', $calendar), |
| 252 |
'notes' => $note, |
| 253 |
); |
| 254 |
|
| 255 |
if(wmvc_show_data('is_enable_noapprovements', $calendar, false)) |
| 256 |
$data['is_approved'] = 1; |
| 257 |
|
| 258 |
$results = $Winter_MVC_wdk_bookings->reservation_m->is_booked($post_id, $date_from, $date_to); |
| 259 |
|
| 260 |
|
| 261 |
$Winter_MVC_wdk_bookings->db->where("date_from <='".$date_from."'"); |
| 262 |
$Winter_MVC_wdk_bookings->db->where("date_to >= '".$date_to."'"); |
| 263 |
$price_reservation = $Winter_MVC_wdk_bookings->price_m->get_by(array('post_id'=>$post_id), TRUE); |
| 264 |
/* manual validation */ |
| 265 |
if( !$results ){ |
| 266 |
if($date_from == $date_to) { |
| 267 |
$errors .= '<div class="elementinvader_addons_for_elementor_alert elementinvader_addons_for_elementor_alert-danger" role="alert">'.esc_html__('Please set different dates', 'wpdirectorykit').'</div>'; |
| 268 |
} |
| 269 |
|
| 270 |
if(empty($calendar->is_guests_disabled)){ |
| 271 |
$guests_number = intval(wmvc_show_data('guests_number_adults', $_POST, 0)) + intval(wmvc_show_data('guests_number_childs', $_POST, 0)); |
| 272 |
if(!empty(wmvc_show_data('guests', $calendar, 0, TRUE, TRUE)) && $guests_number > wmvc_show_data('guests', $calendar, 0, TRUE, TRUE)) { |
| 273 |
$errors .= '<div class="elementinvader_addons_for_elementor_alert elementinvader_addons_for_elementor_alert-danger" role="alert">'.esc_html__('Possible max', 'wpdirectorykit').' '.esc_html(wmvc_show_data('guests', $calendar, 0, TRUE, TRUE)).' '.esc_html__('guest(s)', 'wpdirectorykit').'</div>'; |
| 274 |
} |
| 275 |
} |
| 276 |
|
| 277 |
if((wmvc_show_data('сhildrens_allowed', $_POST, false) || wmvc_show_data('guests_number_childs', $_POST, 0) > 0) && !wmvc_show_data('is_children_acceptable', $calendar, false, TRUE, TRUE)) { |
| 278 |
$errors .= '<div class="elementinvader_addons_for_elementor_alert elementinvader_addons_for_elementor_alert-danger" role="alert">'.esc_html__('Only without children\'s', 'wpdirectorykit').'</div>'; |
| 279 |
} |
| 280 |
|
| 281 |
if(wmvc_show_data('pets_allowed', $_POST, false) && !wmvc_show_data('is_pets_acceptable', $calendar, false, TRUE, TRUE)) { |
| 282 |
$errors .= '<div class="elementinvader_addons_for_elementor_alert elementinvader_addons_for_elementor_alert-danger" role="alert">'.esc_html__('Only without pet\'s', 'wpdirectorykit').'</div>'; |
| 283 |
} |
| 284 |
|
| 285 |
$days = array( |
| 286 |
'1'=>__('Monday', 'wpdirectorykit'), |
| 287 |
'2'=>__('Tuesday', 'wpdirectorykit'), |
| 288 |
'3'=>__('Wednesday', 'wpdirectorykit'), |
| 289 |
'4'=>__('Thursday', 'wpdirectorykit'), |
| 290 |
'5'=>__('Friday', 'wpdirectorykit'), |
| 291 |
'6'=>__('Saturday', 'wpdirectorykit'), |
| 292 |
'7'=>__('Sunday', 'wpdirectorykit'), |
| 293 |
); |
| 294 |
|
| 295 |
$day_num_from = date('N', strtotime($date_from)); |
| 296 |
$day_num_to = date('N', strtotime($date_to)); |
| 297 |
|
| 298 |
if(wmvc_show_data('changeover_day', $price_reservation, false, TRUE, TRUE) && ( |
| 299 |
wmvc_show_data('changeover_day', $price_reservation, false, TRUE, TRUE) != $day_num_from |
| 300 |
|| wmvc_show_data('changeover_day', $price_reservation, false, TRUE, TRUE) != $day_num_to |
| 301 |
) |
| 302 |
) { |
| 303 |
$errors .= '<div class="elementinvader_addons_for_elementor_alert elementinvader_addons_for_elementor_alert-danger" role="alert">'.esc_html__('Changeover day is', 'wpdirectorykit').' '.esc_html($days[wmvc_show_data('changeover_day', $price_reservation, false, TRUE, TRUE)]).'</div>'; |
| 304 |
} |
| 305 |
|
| 306 |
$hours_reservation = abs(strtotime($date_to) - strtotime($date_from))/(60*60); |
| 307 |
|
| 308 |
if(wmvc_show_data('min_hours', $price_reservation, false, TRUE, TRUE) && wmvc_show_data('min_hours', $price_reservation, false, TRUE, TRUE) > $hours_reservation) { |
| 309 |
$period = ''; |
| 310 |
$min_hours = intval(wmvc_show_data('min_hours', $price_reservation, false, TRUE, TRUE)); |
| 311 |
if((int)($min_hours/24) >= 1) { |
| 312 |
$days = (int)($min_hours/24); |
| 313 |
$period .= esc_html(sprintf(_nx( |
| 314 |
'%1$s day', |
| 315 |
'%1$s days', |
| 316 |
$days, |
| 317 |
'days', |
| 318 |
'wpdirectorykit' |
| 319 |
), $days)); |
| 320 |
|
| 321 |
$min_hours -= $days * 24; |
| 322 |
} |
| 323 |
|
| 324 |
if(!empty($min_hours)) { |
| 325 |
$period .= ' '.esc_html(sprintf(_nx( |
| 326 |
'%1$s hour', |
| 327 |
'%1$s hours', |
| 328 |
(int)($min_hours), |
| 329 |
'hours', |
| 330 |
'wpdirectorykit' |
| 331 |
), (int)($min_hours))); |
| 332 |
} |
| 333 |
|
| 334 |
$errors .= '<div class="elementinvader_addons_for_elementor_alert elementinvader_addons_for_elementor_alert-danger" role="alert">'.esc_html__('Min', 'wpdirectorykit').' '.esc_html($period).'</div>'; |
| 335 |
} |
| 336 |
|
| 337 |
if(wmvc_show_data('max_hours', $price_reservation, false, TRUE, TRUE) && wmvc_show_data('max_hours', $price_reservation, false, TRUE, TRUE) < $hours_reservation) { |
| 338 |
$period = ''; |
| 339 |
$max_hours = intval(wmvc_show_data('max_hours', $price_reservation, false, TRUE, TRUE)); |
| 340 |
if((int)($max_hours/24) >= 1) { |
| 341 |
$days = (int)($max_hours/24); |
| 342 |
$period .= esc_html(sprintf(_nx( |
| 343 |
'%1$s day', |
| 344 |
'%1$s days', |
| 345 |
$days, |
| 346 |
'days', |
| 347 |
'wpdirectorykit' |
| 348 |
), $days)); |
| 349 |
|
| 350 |
$max_hours -= $days * 24; |
| 351 |
} |
| 352 |
|
| 353 |
if(!empty($max_hours)) { |
| 354 |
$period .= ' '.esc_html(sprintf(_nx( |
| 355 |
'%1$s hour', |
| 356 |
'%1$s hours', |
| 357 |
(int)($max_hours), |
| 358 |
'hours', |
| 359 |
'wpdirectorykit' |
| 360 |
), (int)($max_hours))); |
| 361 |
} |
| 362 |
|
| 363 |
$errors .= '<div class="elementinvader_addons_for_elementor_alert elementinvader_addons_for_elementor_alert-danger" role="alert">'.esc_html__('Max', 'wpdirectorykit').' '.esc_html($period).'</div>'; |
| 364 |
} |
| 365 |
} |
| 366 |
|
| 367 |
if( $results ) { |
| 368 |
add_filter( 'eli/ajax-handler/filter_output', function($filter_output){ |
| 369 |
$filter_output['message'] = '<div class="elementinvader_addons_for_elementor_alert elementinvader_addons_for_elementor_alert-danger" role="alert">'.esc_html__('Date not available', 'wpdirectorykit').'</div>'; |
| 370 |
$filter_output['no_clear_from'] = true; |
| 371 |
$filter_output['success'] = false; |
| 372 |
return $filter_output; |
| 373 |
} ); |
| 374 |
} elseif( !empty($errors) ) { |
| 375 |
add_filter( 'eli/ajax-handler/filter_output', function($filter_output) use ($errors) { |
| 376 |
$filter_output['message'] = $errors; |
| 377 |
$filter_output['success'] = false; |
| 378 |
$filter_output['no_clear_from'] = true; |
| 379 |
return $filter_output; |
| 380 |
} ); |
| 381 |
} else { |
| 382 |
|
| 383 |
if(wmvc_show_data('is_hour_enabled', $calendar, false) && !empty($data['date_from']) && !empty($data['date_to'])) { |
| 384 |
$data['date_from'] = date('Y-m-d 00:00:00', strtotime($data['date_from'])); |
| 385 |
$data['date_to'] = date('Y-m-d 00:00:00', strtotime($data['date_to'])); |
| 386 |
} |
| 387 |
$insert_id = $Winter_MVC_wdk_bookings->reservation_m->insert($data, NULL); |
| 388 |
|
| 389 |
/* auto is_enable_noapprovements enabled */ |
| 390 |
if(wmvc_show_data('is_enable_noapprovements', $calendar, false)) { |
| 391 |
/* if woo payment enabled */ |
| 392 |
if(wdk_get_option('wdk_bookings_enable_woocommerce_payments')) { |
| 393 |
global $Winter_MVC_WDK; |
| 394 |
$Winter_MVC_WDK->model('listingusers_m'); |
| 395 |
$Winter_MVC_WDK->model('listing_m'); |
| 396 |
$Winter_MVC_WDK->load_helper('listing'); |
| 397 |
$listing = $Winter_MVC_WDK->listing_m->get($post_id, TRUE); |
| 398 |
$user_owner_id = NULL; |
| 399 |
$user_data_owner = NULL; |
| 400 |
|
| 401 |
if( wmvc_show_data('user_id_editor', $listing, '', TRUE, TRUE )) { |
| 402 |
$user_owner_id = wmvc_show_data('user_id_editor', $listing, '', TRUE, TRUE ); |
| 403 |
if(wmvc_show_data('user_id', $user_listing, false, TRUE, TRUE )) { |
| 404 |
$user_data_owner = get_userdata( wmvc_show_data('user_id', $user_listing, false, TRUE, TRUE ) ); |
| 405 |
} |
| 406 |
} |
| 407 |
|
| 408 |
if(empty($user_data_owner)) { |
| 409 |
$user_data_owner = array( |
| 410 |
'display_name' => __('Administrator', 'wpdirectorykit'), |
| 411 |
'user_email' => get_bloginfo('admin_email'), |
| 412 |
); |
| 413 |
} |
| 414 |
|
| 415 |
/* auto create woo item and redirect to order */ |
| 416 |
$url_pay = ''; |
| 417 |
|
| 418 |
if(class_exists( 'WooCommerce' )) { |
| 419 |
|
| 420 |
$title = __('Reservation for', 'wpdirectorykit').' '.wdk_field_value ('post_title', $post_id).' #'.$post_id; |
| 421 |
if($user_owner_id) { |
| 422 |
$title .= ' A'.$user_owner_id; |
| 423 |
} |
| 424 |
$title .= ' '.wdk_get_date($date_from).' - '.wdk_get_date($date_to); // The product's Title |
| 425 |
|
| 426 |
$post_args = array ( |
| 427 |
'post_author' => $user_owner_id, // The user's ID |
| 428 |
'post_title' => $title, // The product's Title |
| 429 |
'post_content' => str_replace(PHP_EOL,'<br style="line-height: 0;">', $note), // The product's Title |
| 430 |
'post_type' => 'product', |
| 431 |
'post_status' => 'publish' // This could also be $data['status']; |
| 432 |
); |
| 433 |
|
| 434 |
$woo_id = wp_insert_post( $post_args ); |
| 435 |
// If the post was created okay, let's try update the WooCommerce values. |
| 436 |
if ( ! empty( $woo_id ) && function_exists( 'wc_get_product' ) ) { |
| 437 |
$product = wc_get_product( $woo_id ); |
| 438 |
$product->set_virtual(true); |
| 439 |
$product->set_sold_individually(true); |
| 440 |
$product->set_sku( 'wdk-booking-' . $woo_id ); // Generate a SKU with a prefix. (i.e. 'pre-123') |
| 441 |
$product->set_regular_price(wmvc_show_data('price', $price)); // Be sure to use the correct decimal price. |
| 442 |
$product->save(); // Save/update the WooCommerce order object. |
| 443 |
|
| 444 |
$terms = array( 'exclude-from-catalog', 'exclude-from-search' ); |
| 445 |
wp_set_object_terms( $woo_id, $terms, 'product_visibility' ); |
| 446 |
|
| 447 |
update_post_meta($woo_id, '_manage_stock', 'yes'); |
| 448 |
update_post_meta($woo_id, '_stock', 1); |
| 449 |
|
| 450 |
$wdk_attach_id = NULL; |
| 451 |
$image_ids = explode(',', trim(wdk_show_data('listing_images' , $listing, '', TRUE, TRUE), ',')); |
| 452 |
|
| 453 |
if(is_array($image_ids)) |
| 454 |
$wdk_attach_id = $image_ids[0]; |
| 455 |
|
| 456 |
set_post_thumbnail( $woo_id, $wdk_attach_id ); |
| 457 |
|
| 458 |
/* set woo product id for reservation */ |
| 459 |
$update_data = array('woocommerce_product_id'=>$woo_id); |
| 460 |
$Winter_MVC_wdk_bookings->reservation_m->insert($update_data, $insert_id); |
| 461 |
|
| 462 |
if(function_exists('wc_get_cart_url')) { |
| 463 |
$url_pay = wdk_url_suffix(wc_get_cart_url(), 'add-to-cart='.esc_attr($woo_id).'&reservation_id='.esc_attr($insert_id)); |
| 464 |
|
| 465 |
add_filter( 'eli/ajax-handler/filter_output', function($filter_output) use ($url_pay){ |
| 466 |
$filter_output['message'] = '<div class="elementinvader_addons_for_elementor_alert elementinvader_addons_for_elementor_alert-success" role="alert">'.esc_html__('Reservation created, auto redirect to order page', 'wpdirectorykit').'</div>'; |
| 467 |
$filter_output['redirect'] = $url_pay; |
| 468 |
return $filter_output; |
| 469 |
} ); |
| 470 |
} |
| 471 |
} |
| 472 |
} else { |
| 473 |
|
| 474 |
} |
| 475 |
/* message */ |
| 476 |
$data_message = array(); |
| 477 |
$data_message['user'] = get_userdata(get_current_user_id()); |
| 478 |
$data_message['user_owner'] = get_userdata(get_current_user_id()); |
| 479 |
$data_message['listing'] = $listing; |
| 480 |
$data_message['user_owner'] = $user_data_owner; |
| 481 |
$data_message['pay_link'] = $url_pay; |
| 482 |
$data_message['hours_for_payment'] = false; |
| 483 |
$data_message['reservation'] = $data; |
| 484 |
$data_message['reservation_id'] = $insert_id; |
| 485 |
|
| 486 |
if(wdk_get_option(('wdk_bookings_time_for_payment'))) { |
| 487 |
$data_message['hours_for_payment'] = intval(wdk_get_option(('wdk_bookings_time_for_payment'))); |
| 488 |
|
| 489 |
/* set date_expire for reservation */ |
| 490 |
$update_data = array('date_expire'=>esc_sql(date("Y-m-d H:i:s", strtotime("+".intval(wdk_get_option(('wdk_bookings_time_for_payment')))." hours")))); |
| 491 |
$Winter_MVC_wdk_bookings->reservation_m->insert($update_data, $insert_id); |
| 492 |
} |
| 493 |
|
| 494 |
wdk_mail(wdk_show_data('user_email', $data_message['user'], '' , TRUE, TRUE), __('Reservation waiting for payment', 'wpdirectorykit'), $data_message, 'reservation_user_payment_notify'); |
| 495 |
} else { |
| 496 |
/* manual pay */ |
| 497 |
global $Winter_MVC_WDK; |
| 498 |
$user_owner_id = NULL; |
| 499 |
$Winter_MVC_WDK->model('listingusers_m'); |
| 500 |
$Winter_MVC_WDK->model('listing_m'); |
| 501 |
$Winter_MVC_WDK->load_helper('listing'); |
| 502 |
$listing = $Winter_MVC_WDK->listing_m->get($post_id, TRUE); |
| 503 |
$user = get_userdata( wmvc_show_data('user_id', $data) ); |
| 504 |
|
| 505 |
$user_owner_id = NULL; |
| 506 |
$user_data_owner = NULL; |
| 507 |
if(wmvc_show_data('user_id_editor', $listing, '', TRUE, TRUE )) { |
| 508 |
$user_owner_id = wmvc_show_data('user_id_editor', $listing, '', TRUE, TRUE ); |
| 509 |
$user_data_owner = get_userdata( wmvc_show_data('user_id_editor', $listing, false, TRUE, TRUE ) ); |
| 510 |
} |
| 511 |
|
| 512 |
if(empty($user_data_owner)) { |
| 513 |
$user_data_owner = array( |
| 514 |
'display_name' => __('Administrator', 'wpdirectorykit'), |
| 515 |
'user_email' => get_bloginfo('admin_email'), |
| 516 |
); |
| 517 |
} |
| 518 |
|
| 519 |
/* message */ |
| 520 |
$data_message = array(); |
| 521 |
$data_message['user'] = $user; |
| 522 |
$data_message['user_owner'] = $user_data_owner; |
| 523 |
$data_message['listing'] = $listing; |
| 524 |
$data_message['reservation'] = $data; |
| 525 |
$data_message['reservation_id'] = $insert_id; |
| 526 |
$data_message['data'] = array( |
| 527 |
__('Reservation ID', 'wpdirectorykit')=> $insert_id, |
| 528 |
__('Date From', 'wpdirectorykit')=> wdk_get_date($date_from), |
| 529 |
__('Date To', 'wpdirectorykit')=> wdk_get_date($date_to), |
| 530 |
); |
| 531 |
|
| 532 |
$nights = (int)abs(strtotime($date_to) - strtotime($date_from))/(60*60*24); |
| 533 |
$guests_number = intval(wmvc_show_data('guests_number_adults', $_POST, 0)) + intval(wmvc_show_data('guests_number_childs', $_POST, 0)); |
| 534 |
foreach ($calendar_fees as $fee) { |
| 535 |
if(!wmvc_show_data('is_activated', $fee, false,TRUE,TRUE)) continue; |
| 536 |
|
| 537 |
$field = wdk_generate_slug(strtolower(esc_html(wmvc_show_data('title', $fee,'-',TRUE,TRUE)))); |
| 538 |
if(!wmvc_show_data('is_required', $fee, false,TRUE,TRUE) && !isset($_POST['fee_'.$field])) { |
| 539 |
|
| 540 |
} else { |
| 541 |
if(wmvc_show_data('calculation_base', $fee,'',TRUE,TRUE) == 'per_night') { |
| 542 |
$data_message['data'][__('Price', 'wpdirectorykit').' '.wmvc_show_data('title', $fee, '-', TRUE, TRUE)] = intval(wmvc_show_data('value', $fee,'',TRUE,TRUE)) * $nights; |
| 543 |
} else if(wmvc_show_data('calculation_base', $fee,'',TRUE,TRUE) == 'per_person') { |
| 544 |
$data_message['data'][__('Price', 'wpdirectorykit').' '.wmvc_show_data('title', $fee, '-', TRUE, TRUE)] = intval(wmvc_show_data('value', $fee,'',TRUE,TRUE)) * $guests_number; |
| 545 |
} else { |
| 546 |
$data_message['data'][__('Price', 'wpdirectorykit').' '.wmvc_show_data('title', $fee, '-', TRUE, TRUE)] = intval(wmvc_show_data('value', $fee,'',TRUE,TRUE)); |
| 547 |
} |
| 548 |
} |
| 549 |
} |
| 550 |
|
| 551 |
$data_message['data'][__('Total Price', 'wpdirectorykit')] = wmvc_show_data('price', $price).wdk_booking_currency_symbol(); |
| 552 |
|
| 553 |
$data_message['notes'] = $note; |
| 554 |
if(wmvc_show_data('payment_info', $calendar, false, TRUE, TRUE)) { |
| 555 |
$data_message['data'][__('Payment info', 'wpdirectorykit')] = str_replace(PHP_EOL,'<br style="line-height: 0;">', wmvc_show_data('payment_info', $calendar, false, TRUE, TRUE)); |
| 556 |
} |
| 557 |
|
| 558 |
$ret = wdk_mail(wdk_show_data('user_email', $data_message['user'], '' , TRUE, TRUE), __('Reservation approved, waiting for payment', 'wpdirectorykit'), $data_message, 'reservation_approved_visitor'); |
| 559 |
|
| 560 |
$ret = wdk_mail(wdk_show_data('user_email', $data_message['user_owner'], '' , TRUE, TRUE), __('New Reservation approved, please confirm as paid when you receive payment', 'wpdirectorykit'), $data_message, 'reservation_approved_owner'); |
| 561 |
|
| 562 |
if( $ret) { |
| 563 |
add_filter( 'eli/ajax-handler/filter_output', function($filter_output) { |
| 564 |
$filter_output['message'] = '<div class="elementinvader_addons_for_elementor_alert elementinvader_addons_for_elementor_alert-success" role="alert">'.esc_html__('Reservation sent, please check your email with payment details', 'wpdirectorykit').'</div>'; |
| 565 |
return $filter_output; |
| 566 |
} ); |
| 567 |
} |
| 568 |
else |
| 569 |
{ |
| 570 |
add_filter( 'eli/ajax-handler/filter_output', function($filter_output) { |
| 571 |
$filter_output['message'] = '<div class="elementinvader_addons_for_elementor_alert elementinvader_addons_for_elementor_alert-danger" role="alert">'.esc_html__('Server can\'t send emails, please use SMTP mail configuration.', 'wpdirectorykit').'</div>'; |
| 572 |
$filter_output['no_clear_from'] = true; |
| 573 |
return $filter_output; |
| 574 |
} ); |
| 575 |
} |
| 576 |
} |
| 577 |
|
| 578 |
} else { |
| 579 |
/* auto is_enable_noapprovements disabled */ |
| 580 |
global $Winter_MVC_WDK; |
| 581 |
$Winter_MVC_WDK->model('listingusers_m'); |
| 582 |
$Winter_MVC_WDK->model('listing_m'); |
| 583 |
$Winter_MVC_WDK->load_helper('listing'); |
| 584 |
|
| 585 |
$data_listing = $Winter_MVC_WDK->listing_m->get($post_id, TRUE); |
| 586 |
$user_client = get_userdata( wmvc_show_data('user_id', $data) ); |
| 587 |
/* owner data */ |
| 588 |
$user_owner = NULL; |
| 589 |
$owner_email = get_bloginfo('admin_email'); |
| 590 |
|
| 591 |
if(wmvc_show_data('user_id_editor', $data_listing, false, TRUE, TRUE )) { |
| 592 |
$user_owner = get_userdata( wmvc_show_data('user_id_editor', $data_listing, false, TRUE, TRUE ) ); |
| 593 |
if($user_owner) |
| 594 |
$owner_email = $user_owner->user_email; |
| 595 |
} |
| 596 |
|
| 597 |
/* waiting approve owner */ |
| 598 |
$data_message = array(); |
| 599 |
$data_message['user_owner'] = $user_owner; |
| 600 |
$data_message['user_client'] = $user_client; |
| 601 |
$data_message['reservation_id'] = $insert_id; |
| 602 |
$data_message['reservation'] = $data; /* reservation data */ |
| 603 |
$data_message['listing'] = $data_listing; |
| 604 |
$data_message['data'] = array( |
| 605 |
__('Reservation ID', 'wpdirectorykit')=> $insert_id, |
| 606 |
__('Date From', 'wpdirectorykit')=> wdk_get_date($date_from), |
| 607 |
__('Date To', 'wpdirectorykit')=> wdk_get_date($date_to), |
| 608 |
); |
| 609 |
$nights = (int)abs(strtotime($date_to) - strtotime($date_from))/(60*60*24); |
| 610 |
$guests_number = intval(wmvc_show_data('guests_number_adults', $_POST, 0)) + intval(wmvc_show_data('guests_number_childs', $_POST, 0)); |
| 611 |
foreach ($calendar_fees as $fee) { |
| 612 |
if(!wmvc_show_data('is_activated', $fee, false,TRUE,TRUE)) continue; |
| 613 |
|
| 614 |
$field = wdk_generate_slug(strtolower(esc_html(wmvc_show_data('title', $fee,'-',TRUE,TRUE)))); |
| 615 |
if(!wmvc_show_data('is_required', $fee, false,TRUE,TRUE) && !isset($_POST['fee_'.$field])) { |
| 616 |
|
| 617 |
} else { |
| 618 |
if(wmvc_show_data('calculation_base', $fee,'',TRUE,TRUE) == 'per_night') { |
| 619 |
$data_message['data'][__('Price', 'wpdirectorykit').' '.wmvc_show_data('title', $fee, '-', TRUE, TRUE)] = intval(wmvc_show_data('value', $fee,'',TRUE,TRUE)) * $nights; |
| 620 |
} else if(wmvc_show_data('calculation_base', $fee,'',TRUE,TRUE) == 'per_person') { |
| 621 |
$data_message['data'][__('Price', 'wpdirectorykit').' '.wmvc_show_data('title', $fee, '-', TRUE, TRUE)] = intval(wmvc_show_data('value', $fee,'',TRUE,TRUE)) * $guests_number; |
| 622 |
} else { |
| 623 |
$data_message['data'][__('Price', 'wpdirectorykit').' '.wmvc_show_data('title', $fee, '-', TRUE, TRUE)] = intval(wmvc_show_data('value', $fee,'',TRUE,TRUE)); |
| 624 |
} |
| 625 |
} |
| 626 |
} |
| 627 |
|
| 628 |
$data_message['data'][__('Total Price', 'wpdirectorykit')] = wmvc_show_data('price', $price).wdk_booking_currency_symbol(); |
| 629 |
|
| 630 |
$data_message['notes'] = $note; |
| 631 |
|
| 632 |
if(wmvc_show_data ('сhildrens_allowed', $_POST, false)) |
| 633 |
$data_message['data'][__('Childrens', 'wpdirectorykit')] = 'yes'; |
| 634 |
|
| 635 |
if(wmvc_show_data ('pets_allowed', $_POST, false)) |
| 636 |
$data_message['data'][__('Pets', 'wpdirectorykit')] = 'yes'; |
| 637 |
|
| 638 |
if(empty($calendar->is_guests_disabled)){ |
| 639 |
if(wmvc_show_data ('guests_number_adults', $_POST, false)) |
| 640 |
$data_message['data'][__('Guests Adult', 'wpdirectorykit')] = sanitize_text_field(wmvc_show_data ('guests_number_adults', $_POST)); |
| 641 |
if(wmvc_show_data ('guests_number_childs', $_POST, false)) |
| 642 |
$data_message['data'][__('Guests Childs', 'wpdirectorykit')] = sanitize_text_field(wmvc_show_data ('guests_number_childs', $_POST)); |
| 643 |
} |
| 644 |
|
| 645 |
if(wmvc_show_data ('Name', $_POST, false)) |
| 646 |
$data_message['data'][__('Name', 'wpdirectorykit')] = sanitize_text_field(wmvc_show_data ('Name', $_POST)); |
| 647 |
|
| 648 |
if(wmvc_show_data ('Email', $_POST, false)) |
| 649 |
$data_message['data'][__('Email', 'wpdirectorykit')] = sanitize_text_field(wmvc_show_data ('Email', $_POST)); |
| 650 |
|
| 651 |
if(wmvc_show_data ('Message', $_POST, false)) |
| 652 |
$data_message['data'][__('Message', 'wpdirectorykit')] = sanitize_text_field(wmvc_show_data ('Message', $_POST)); |
| 653 |
|
| 654 |
$ret = wdk_mail( $owner_email, __('New Reservation Waiting For Approvement', 'wpdirectorykit'), $data_message, 'reservation_waiting_for_approve_owner'); |
| 655 |
|
| 656 |
/* waiting approve to client */ |
| 657 |
$ret = wdk_mail(wdk_show_data('user_email', $user_client, '' , TRUE, TRUE), __('Your reservation waiting approvement by owner', 'wpdirectorykit'), $data_message, 'reservation_waiting_for_approve_visitor'); |
| 658 |
|
| 659 |
if( $ret) { |
| 660 |
add_filter( 'eli/ajax-handler/filter_output', function($filter_output){ |
| 661 |
$filter_output['message'] = '<div class="elementinvader_addons_for_elementor_alert elementinvader_addons_for_elementor_alert-success" role="alert">'.esc_html__('Thanks on reservation, after owner approvement you will receive details for payment', 'wpdirectorykit').'</div>'; |
| 662 |
return $filter_output; |
| 663 |
} ); |
| 664 |
} |
| 665 |
else |
| 666 |
{ |
| 667 |
add_filter( 'eli/ajax-handler/filter_output', function($filter_output) { |
| 668 |
$filter_output['message'] = '<div class="elementinvader_addons_for_elementor_alert elementinvader_addons_for_elementor_alert-danger" role="alert">'.esc_html__('Server can\'t send emails, please use SMTP mail configuration.', 'wpdirectorykit').'</div>'; |
| 669 |
$filter_output['no_clear_from'] = true; |
| 670 |
return $filter_output; |
| 671 |
} ); |
| 672 |
} |
| 673 |
} |
| 674 |
|
| 675 |
|
| 676 |
} |
| 677 |
|
| 678 |
/* skip default message */ |
| 679 |
$message_skip = true; |
| 680 |
} |
| 681 |
} |
| 682 |
|
| 683 |
if(!$message_skip) { |
| 684 |
/* message data */ |
| 685 |
if (!empty($post_id) && !empty($email)) { |
| 686 |
$data = array( |
| 687 |
'post_id' => ($post_id), |
| 688 |
'email_sender' => ($email), |
| 689 |
'message' => ($message), |
| 690 |
'json_object' => json_encode($_POST), |
| 691 |
'user_id_sender' => get_current_user_id() |
| 692 |
); |
| 693 |
|
| 694 |
$insert_idmessage = $this->WMVC->messages_m->insert($data, null); |
| 695 |
if ($insert_idmessage && isset($_POST['listing_id'])) { |
| 696 |
$data_mess= array(); |
| 697 |
|
| 698 |
foreach($_POST as $key => $value){ |
| 699 |
if($key=='element_id') continue; |
| 700 |
if(in_array($key, array('eli_id','eli_page_id', 'eli_type','ID','filter','action','send_action_type', 'page_link', 'g-recaptcha-response'))) continue; |
| 701 |
|
| 702 |
if(empty($value)) continue; |
| 703 |
|
| 704 |
if(filter_var($value, FILTER_VALIDATE_URL ) || strpos( $value, 'http' ) !== FALSE) { |
| 705 |
$data_mess []= '<p><strong>'.__(str_replace('_',' ', ucfirst($key)), 'wpdirectorykit').':</strong> <a href="'.esc_url($value).'">'.$value.'</a></p>'; |
| 706 |
} else { |
| 707 |
$data_mess []= '<p><strong>'.__(str_replace('_',' ', ucfirst($key)), 'wpdirectorykit').':</strong> '.$value.'</p>'; |
| 708 |
} |
| 709 |
} |
| 710 |
|
| 711 |
global $Winter_MVC_WDK; |
| 712 |
$Winter_MVC_WDK->model('listingusers_m'); |
| 713 |
$Winter_MVC_WDK->model('listing_m'); |
| 714 |
$Winter_MVC_WDK->load_helper('listing'); |
| 715 |
$data_listing = $Winter_MVC_WDK->listing_m->get($post_id, TRUE); |
| 716 |
|
| 717 |
/* message for user */ |
| 718 |
if (!empty($email)) { |
| 719 |
$data_message = array(); |
| 720 |
$data_message['email_data'] = $data; |
| 721 |
$data_message['listing'] = $data; |
| 722 |
$data_message['message'] = ''; |
| 723 |
|
| 724 |
if(function_exists('run_wdk_bookings')) { |
| 725 |
if(isset($_POST['date_from']) && isset($_POST['date_to']) && !empty($_POST['date_from']) && !empty($_POST['date_to'])) { |
| 726 |
$data_message['message'] .= '<h2>'.__('Date reservation change to', 'wpdirectorykit').'</h2>'; |
| 727 |
$data_message['message'] .= '<p>'.__('Details from contact form', 'wpdirectorykit').'</p>'; |
| 728 |
} |
| 729 |
} |
| 730 |
|
| 731 |
$data_message['message'] .= '<p>'.__('Contact message related to listing', 'wpdirectorykit').' <a href="'.esc_url(get_permalink($data_listing)).'">'.esc_html(wmvc_show_data('post_title', $data_listing, '', TRUE, TRUE)).'</a></p>'; |
| 732 |
|
| 733 |
$data_message['message'] .= implode('', $data_mess); |
| 734 |
|
| 735 |
$ret = wdk_mail($email, __('Your messages sent on', 'wpdirectorykit').' '.html_entity_decode(get_bloginfo('name')), $data_message, 'new_message'); |
| 736 |
} |
| 737 |
|
| 738 |
/* message for admin */ |
| 739 |
$data_message = array(); |
| 740 |
$data_message['email_data'] = $data; |
| 741 |
$data_message['message'] = ''; |
| 742 |
|
| 743 |
|
| 744 |
$message_title = __('New Message', 'wpdirectorykit'); |
| 745 |
|
| 746 |
if(function_exists('run_wdk_bookings')) { |
| 747 |
|
| 748 |
if(isset($_POST['date_from']) && isset($_POST['date_to']) && !empty($_POST['date_from']) && !empty($_POST['date_to'])) { |
| 749 |
$data_message['message'] .= '<h2>'.__('Date reservation change to', 'wpdirectorykit').'</h2>'; |
| 750 |
$data_message['message'] .= '<p>'.__('Details from contact form', 'wpdirectorykit').'</p>'; |
| 751 |
|
| 752 |
$message_title = __('Contact message related to reservation on page', 'wpdirectorykit').' '.get_bloginfo('name'); |
| 753 |
} |
| 754 |
} |
| 755 |
|
| 756 |
$data_message['message'] .= '<p>'.__('Contact message related to listing', 'wpdirectorykit').' <a href="'.esc_url(get_permalink($data_listing)).'">'.esc_html(wmvc_show_data('post_title', $data_listing, '', TRUE, TRUE)).'</a></p>'; |
| 757 |
$data_message['message'] .= implode('', $data_mess); |
| 758 |
|
| 759 |
/* owner data */ |
| 760 |
$user_owner = NULL; |
| 761 |
$owner_email = get_bloginfo('admin_email'); |
| 762 |
if(wmvc_show_data('user_id_editor', $data_listing, false, TRUE, TRUE )) { |
| 763 |
$user_owner = get_userdata( wmvc_show_data('user_id_editor', $data_listing, false, TRUE, TRUE ) ); |
| 764 |
if($user_owner) |
| 765 |
$owner_email = $user_owner->user_email; |
| 766 |
} |
| 767 |
|
| 768 |
$ret = wdk_mail($owner_email, $message_title, $data_message, 'new_message', '', NULL, $email); |
| 769 |
if( $ret) { |
| 770 |
add_filter( 'eli/ajax-handler/filter_output', function($filter_output){ |
| 771 |
$filter_output['message'] = '<div class="elementinvader_addons_for_elementor_alert elementinvader_addons_for_elementor_alert-success" role="alert">'.esc_html__('Thanks on message', 'wpdirectorykit').'</div>'; |
| 772 |
return $filter_output; |
| 773 |
} ); |
| 774 |
add_filter( 'eli/ajax-handler/filter_from_data', function ($form_data = array()) { |
| 775 |
/* disable double sent to admin mail */ |
| 776 |
$form_data['settings']['disable_mail_send'] = 1; |
| 777 |
return $form_data; |
| 778 |
} |
| 779 |
); |
| 780 |
} |
| 781 |
else |
| 782 |
{ |
| 783 |
add_filter( 'eli/ajax-handler/filter_output', function($filter_output) { |
| 784 |
$filter_output['message'] = '<div class="elementinvader_addons_for_elementor_alert elementinvader_addons_for_elementor_alert-danger" role="alert">'.esc_html__('Server can\'t send emails, please use SMTP mail configuration.', 'wpdirectorykit').'</div>'; |
| 785 |
$filter_output['success'] = false; |
| 786 |
$filter_output['no_clear_from'] = true; |
| 787 |
return $filter_output; |
| 788 |
} ); |
| 789 |
} |
| 790 |
|
| 791 |
|
| 792 |
|
| 793 |
|
| 794 |
} |
| 795 |
} |
| 796 |
} |
| 797 |
|
| 798 |
|
| 799 |
} |
| 800 |
|
| 801 |
} |
| 802 |
|