/**
  * Gets the default form structure for creating a new form
  * @return array
  */
 public static function get_form_template()
 {
     if (empty(self::$form_template)) {
         self::$form_template = apply_filters('em_booking_form_get_form_template', array('name' => array('label' => __emp('Name', 'dbem'), 'type' => 'name', 'fieldid' => 'user_name', 'required' => 1), 'user_email' => array('label' => __emp('Email', 'dbem'), 'type' => 'user_email', 'fieldid' => 'user_email', 'required' => 1), 'dbem_address' => array('label' => __emp('Address', 'dbem'), 'type' => 'dbem_address', 'fieldid' => 'dbem_address', 'required' => 1), 'dbem_city' => array('label' => __emp('City/Town', 'dbem'), 'type' => 'dbem_city', 'fieldid' => 'dbem_city', 'required' => 1), 'dbem_state' => array('label' => __emp('State/County', 'dbem'), 'type' => 'dbem_state', 'fieldid' => 'dbem_state', 'required' => 1), 'dbem_zip' => array('label' => __('Zip/Post Code', 'em-pro'), 'type' => 'dbem_zip', 'fieldid' => 'dbem_zip', 'required' => 1), 'dbem_country' => array('label' => __emp('Country', 'dbem'), 'type' => 'dbem_country', 'fieldid' => 'dbem_country', 'required' => 1), 'dbem_phone' => array('label' => __emp('Phone', 'dbem'), 'type' => 'dbem_phone', 'fieldid' => 'dbem_phone'), 'dbem_fax' => array('label' => __('Fax', 'em-pro'), 'type' => 'dbem_fax', 'fieldid' => 'dbem_fax'), 'booking_comment' => array('label' => __emp('Comment', 'dbem'), 'type' => 'textarea', 'fieldid' => 'booking_comment')));
     }
     return self::$form_template;
 }
 function init()
 {
     //Menu/admin page
     add_action('admin_init', array('EM_Booking_Form', 'admin_page_actions'), 10);
     add_action('emp_forms_admin_page', array('EM_Booking_Form', 'admin_page'), 10);
     //Booking admin and exports
     add_action('em_bookings_single_custom', array('EM_Booking_Form', 'em_bookings_single_custom'), 1, 1);
     //show booking form and ticket summary
     //Booking Tables UI
     add_filter('em_bookings_table_rows_col', array('EM_Booking_Form', 'em_bookings_table_rows_col'), 10, 5);
     add_filter('em_bookings_table_cols_template', array('EM_Booking_Form', 'em_bookings_table_cols_template'), 10, 2);
     // Actions and Filters
     add_action('em_booking_form_custom', array('EM_Booking_Form', 'booking_form'), 10, 1);
     //handle the booking form template
     //Booking interception
     $booking_button_request = !empty($_REQUEST['action']) && $_REQUEST['action'] == 'booking_add_one' && is_user_logged_in();
     //in order to disable the form if booking button is pressed
     if (!$booking_button_request) {
         if (get_option('dbem_multiple_bookings')) {
             //Mulitiple Booking Mode
             add_filter('em_multiple_booking_get_post', array('EM_Booking_Form', 'em_booking_get_post'), 10, 2);
             //get post data + validate
             add_filter('em_multiple_booking_validate', array('EM_Booking_Form', 'em_booking_validate'), 10, 2);
             //validate object
             add_filter('em_multiple_booking_save', array('EM_Booking_Form', 'em_booking_save'), 1, 2);
             //add new user fields to current EM_Person instance for use on this run
         } else {
             //Normal bookings
             add_filter('em_booking_save', array('EM_Booking_Form', 'em_booking_save'), 1, 2);
             //add new user fields to current EM_Person instance for use on this run
         }
         add_filter('em_booking_get_post', array('EM_Booking_Form', 'em_booking_get_post'), 10, 2);
         //get post data + validate
         add_filter('em_booking_validate', array('EM_Booking_Form', 'em_booking_validate'), 10, 2);
         //validate object
         add_action('em_bookings_added', array('EM_Booking_Form', 'em_bookings_added'), 10, 1);
         //add extra use reg data
         add_filter('em_register_new_user_pre', array('EM_Booking_Form', 'em_register_new_user_pre'), 10, 1);
         //add extra use reg data
     }
     //Placeholder overriding
     add_filter('em_booking_output_placeholder', array('EM_Booking_Form', 'placeholders'), 1, 3);
     //for emails
     //custom form chooser in event bookings meta box:
     add_action('em_events_admin_bookings_footer', array('EM_Booking_Form', 'event_bookings_meta_box'), 20, 1);
     add_filter('em_event_save_meta', array('EM_Booking_Form', 'em_event_save_meta'), 10, 2);
     self::$form_template = array('name' => array('label' => __('Name', 'dbem'), 'type' => 'name', 'fieldid' => 'user_name', 'required' => 1), 'user_email' => array('label' => __('Email', 'dbem'), 'type' => 'user_email', 'fieldid' => 'user_email', 'required' => 1), 'dbem_address' => array('label' => __('Address', 'dbem'), 'type' => 'dbem_address', 'fieldid' => 'dbem_address', 'required' => 1), 'dbem_city' => array('label' => __('City', 'dbem'), 'type' => 'dbem_city', 'fieldid' => 'dbem_city', 'required' => 1), 'dbem_state' => array('label' => __('State/County', 'dbem'), 'type' => 'dbem_state', 'fieldid' => 'dbem_state', 'required' => 1), 'dbem_zip' => array('label' => __('Zip/Post Code', 'dbem'), 'type' => 'dbem_zip', 'fieldid' => 'dbem_zip', 'required' => 1), 'dbem_country' => array('label' => __('Country', 'dbem'), 'type' => 'dbem_country', 'fieldid' => 'dbem_country', 'required' => 1), 'dbem_phone' => array('label' => __('Phone', 'dbem'), 'type' => 'dbem_phone', 'fieldid' => 'dbem_phone'), 'dbem_fax' => array('label' => __('Fax', 'dbem'), 'type' => 'dbem_fax', 'fieldid' => 'dbem_fax'), 'textarea' => array('label' => __('Comment', 'dbem'), 'type' => 'textarea', 'fieldid' => 'booking_comment'));
 }