init.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. <?php
  2. if(!class_exists('Booked_AJAX')) {
  3. class Booked_AJAX {
  4. public function __construct() {
  5. // ------------ Guests & Logged-in Users ------------ //
  6. // Actions
  7. add_action('wp_ajax_booked_ajax_login', array(&$this,'booked_ajax_login'));
  8. add_action('wp_ajax_nopriv_booked_ajax_login', array(&$this,'booked_ajax_login'));
  9. add_action('wp_ajax_booked_ajax_forgot', array(&$this,'booked_ajax_forgot'));
  10. add_action('wp_ajax_nopriv_booked_ajax_forgot', array(&$this,'booked_ajax_forgot'));
  11. add_action('wp_ajax_booked_add_appt', array(&$this,'booked_add_appt'));
  12. add_action('wp_ajax_nopriv_booked_add_appt', array(&$this,'booked_add_appt'));
  13. // Loaders
  14. add_action('wp_ajax_booked_calendar_month', array(&$this,'booked_calendar_month'));
  15. add_action('wp_ajax_nopriv_booked_calendar_month', array(&$this,'booked_calendar_month'));
  16. add_action('wp_ajax_booked_calendar_date', array(&$this,'booked_calendar_date'));
  17. add_action('wp_ajax_nopriv_booked_calendar_date', array(&$this,'booked_calendar_date'));
  18. add_action('wp_ajax_booked_appointment_list_date', array(&$this,'booked_appointment_list_date'));
  19. add_action('wp_ajax_nopriv_booked_appointment_list_date', array(&$this,'booked_appointment_list_date'));
  20. add_action('wp_ajax_booked_new_appointment_form', array(&$this,'booked_new_appointment_form'));
  21. add_action('wp_ajax_nopriv_booked_new_appointment_form', array(&$this,'booked_new_appointment_form'));
  22. // ------------ Logged-in Users Only ------------ //
  23. // Actions
  24. add_action('wp_ajax_booked_cancel_appt', array(&$this,'booked_cancel_appt'));
  25. }
  26. // ------------ LOADERS ------------ //
  27. // Calendar Month
  28. public function booked_calendar_month(){
  29. booked_wpml_ajax();
  30. if (isset($_POST['gotoMonth'])):
  31. $calendar_id = (isset($_POST['calendar_id']) ? $_POST['calendar_id'] : false);
  32. $force_default = (isset($_POST['force_default']) ? $_POST['force_default'] : false);
  33. $timestamp = ($_POST['gotoMonth'] != 'false' ? strtotime($_POST['gotoMonth']) : current_time('timestamp'));
  34. $year = date_i18n('Y',$timestamp);
  35. $month = date_i18n('m',$timestamp);
  36. booked_fe_calendar($year,$month,$calendar_id,$force_default);
  37. endif;
  38. wp_die();
  39. }
  40. // Calendar Date
  41. public function booked_calendar_date(){
  42. booked_wpml_ajax();
  43. if (isset($_POST['date'])):
  44. $calendar_id = (isset($_POST['calendar_id']) ? $_POST['calendar_id'] : false);
  45. booked_fe_calendar_date_content($_POST['date'],$calendar_id);
  46. endif;
  47. wp_die();
  48. }
  49. // Appointment List Date
  50. public function booked_appointment_list_date(){
  51. booked_wpml_ajax();
  52. if (isset($_POST['date'])):
  53. $date = date_i18n('Ymd',strtotime($_POST['date']));
  54. $calendar_id = (isset($_POST['calendar_id']) ? $_POST['calendar_id'] : false);
  55. $force_default = (isset($_POST['force_default']) ? $_POST['force_default'] : false);
  56. booked_fe_appointment_list_content($date,$calendar_id,$force_default);
  57. endif;
  58. wp_die();
  59. }
  60. // New Appointment Form
  61. public function booked_new_appointment_form(){
  62. booked_wpml_ajax();
  63. if ( apply_filters( 'booked_show_new_appointment_form', true ) ):
  64. include(BOOKED_AJAX_INCLUDES_DIR . 'front/appointment-form.php');
  65. endif;
  66. wp_die();
  67. }
  68. // ------------ ACTIONS ------------ //
  69. public function booked_ajax_login(){
  70. booked_wpml_ajax();
  71. if (isset($_POST['security']) && isset($_POST['username']) && isset($_POST['password'])):
  72. $nonce_check = wp_verify_nonce( $_POST['security'], 'ajax_login_nonce' );
  73. if ($nonce_check){
  74. if (is_email($_POST['username'])) {
  75. $user = get_user_by('email', $_POST['username']);
  76. } else {
  77. $user = get_user_by('login', $_POST['username']);
  78. }
  79. $creds = array();
  80. if ($user && wp_check_password( $_POST['password'], $user->data->user_pass, $user->ID)) {
  81. $creds = array('user_login' => $user->data->user_login, 'user_password' => $_POST['password']);
  82. $creds['remember'] = true;
  83. }
  84. $user = wp_signon( $creds, false );
  85. if ( !is_wp_error($user) ):
  86. echo 'success';
  87. endif;
  88. }
  89. endif;
  90. wp_die();
  91. }
  92. public function booked_ajax_forgot(){
  93. booked_wpml_ajax();
  94. global $wpdb, $wp_hasher;
  95. if (isset($_POST['security']) && isset($_POST['username'])):
  96. $nonce_check = wp_verify_nonce( $_POST['security'], 'ajax_forgot_nonce' );
  97. if ($nonce_check){
  98. $password_reset = booked_reset_password( $_POST['username'] );
  99. if ( $password_reset ):
  100. echo 'success';
  101. endif;
  102. }
  103. endif;
  104. wp_die();
  105. }
  106. public function booked_add_appt(){
  107. booked_wpml_ajax();
  108. $can_add_appt = apply_filters(
  109. 'booked_can_add_appt',
  110. isset($_POST['date']) && isset($_POST['timestamp']) && isset($_POST['timeslot']) && isset($_POST['customer_type'])
  111. );
  112. if ( $can_add_appt ):
  113. include(BOOKED_AJAX_INCLUDES_DIR . 'front/book-appointment.php');
  114. endif;
  115. wp_die();
  116. }
  117. public function booked_cancel_appt(){
  118. booked_wpml_ajax();
  119. if (is_user_logged_in() && isset($_POST['appt_id'])):
  120. include(BOOKED_AJAX_INCLUDES_DIR . 'front/cancel-appointment.php');
  121. endif;
  122. wp_die();
  123. }
  124. }
  125. }