/**
 * When the reservation form has been filled and submitted this function
 * will process the form.
 * @global type $syn_restaurant_config
 * @return boolean
 */
function syn_restaurant_manager_process_reservation_form()
{
    global $syn_restaurant_config;
    $session = new \syntaxthemes\restaurant\session();
    if ('POST' !== strtoupper($session->server_var('REQUEST_METHOD'))) {
        return false;
    }
    if ('request_booking' !== $session->post_var('form_action')) {
        return false;
    }
    $nonce = $session->post_var('_wpnonce');
    if (!wp_verify_nonce($nonce, 'request_booking')) {
        return false;
    }
    $first_name = $session->post_var('first_name');
    $last_name = $session->post_var('last_name');
    $telephone = $session->post_var('telephone');
    $email_address = $session->post_var('email_address');
    $guests_count = $session->post_var('guests_count');
    $reservation_date = $session->post_var('reservation_date');
    $reservation_time = $session->post_var('reservation_time');
    $notes = $session->post_var('notes');
    $post_title = 'Reservation: ' . $first_name . ' ' . $last_name;
    $post_status = 'pending';
    //install the default set of pages
    $post = array('menu_order' => 0, 'comment_status' => 'closed', 'ping_status' => 'closed', 'pinged' => '', 'post_author' => get_current_user_id(), 'post_content' => $notes, 'post_excerpt' => '', 'post_parent' => '', 'post_password' => '', 'post_status' => $post_status, 'post_title' => $post_title, 'post_name' => sanitize_title($post_title), 'post_type' => 'syn_rest_reservation', 'to_ping' => '');
    $post_id = wp_insert_post($post);
    //insert arrival time in MySql dateformat.
    $arrival_time = date('Y-m-d H:i:s', strtotime("{$reservation_date}, {$reservation_time}"));
    update_post_meta($post_id, 'first_name', $first_name);
    update_post_meta($post_id, 'last_name', $last_name);
    update_post_meta($post_id, 'phone_number', $telephone);
    update_post_meta($post_id, 'email_address', $email_address);
    update_post_meta($post_id, 'guests_count', $guests_count);
    update_post_meta($post_id, 'reservation_date', $reservation_date);
    update_post_meta($post_id, 'reservation_time', $reservation_time);
    update_post_meta($post_id, 'arrival_time', $arrival_time);
    update_post_meta($post_id, 'notes', $notes);
    $syn_email = new syntaxthemes\restaurant\email_notifications();
    $site_name = get_bloginfo('name');
    $site_link = site_url();
    $date_format = get_option('date_format');
    $time_format = get_option('time_format');
    $current_time = date("{$date_format} - {$time_format}");
    $reservation_date = date("{$date_format}", strtotime($reservation_date));
    $reservation_time = date("{$time_format}", strtotime($reservation_time));
    $replace = array($site_name, $first_name, $last_name, $telephone, $email_address, $guests_count, $reservation_date, $reservation_time, $current_time, $site_link);
    $customer_sent = syntaxthemes_process_notification_email($post_status, $email_address, $post_id);
    $details = array($first_name, $last_name, $email_address);
    apply_filters('syn_restaurant_reservation_form_processing_end', $details);
    return $customer_sent;
}
 public function process_status($post_id)
 {
     global $post_type;
     $session = new session();
     if ('POST' !== strtoupper($session->server_var('REQUEST_METHOD'))) {
         return false;
     }
     if ($post_type !== 'syn_rest_reservation') {
         return false;
     }
     $event_log = new event_log();
     $old_post_status = $session->post_var('original_post_status');
     $post = get_post($post_id);
     $post_status = $post->post_status;
     $email_address = get_post_meta($post_id, 'email_address', true);
     //check if the post status has changed
     if ($post_status !== $old_post_status) {
         $result = syntaxthemes_process_notification_email($post_status, $email_address, $post_id);
         $event_log->status_event($post_id, $old_post_status, $post_status, $result);
     }
 }