function admin_page_actions() { global $EM_Pro, $EM_Notices, $wpdb; if (!empty($_REQUEST['page']) && $_REQUEST['page'] == 'events-manager-forms-editor') { //Load the right form if (!empty($_REQUEST['form_id'])) { $sql = $wpdb->prepare("SELECT meta_value FROM " . EM_META_TABLE . " WHERE meta_key = 'booking-form' AND meta_id=%d", $_REQUEST['form_id']); $form_data = unserialize($wpdb->get_var($sql)); $EM_Form = self::$form = new EM_Form($form_data['form'], 'em_bookings_form'); self::$form_name = $form_data['name']; self::$form_id = $_REQUEST['form_id']; } else { $EM_Form = self::get_form(); } if (!empty($_REQUEST['form_name']) && $EM_Form->form_name == $_REQUEST['form_name'] && empty($_REQUEST['bookings_form_action'])) { //set up booking form field map and save/retreive previous data if ($EM_Form->editor_get_post()) { foreach ($EM_Form->form_fields as $form_field) { if ($form_field['fieldid'] == 'user_email') { $user_email_in_form = true; } } //Save into DB rather than as an option $booking_form_data = array('name' => self::$form_name, 'form' => $EM_Form->form_fields); $saved = false; if (empty($user_email_in_form)) { $EM_Notices->add_error(__('You must include an E-mail field type for booking forms to work. These are used to create the user account and aren\'t shown to logged in users.', 'em-pro')); } else { $saved = $wpdb->update(EM_META_TABLE, array('meta_value' => serialize($booking_form_data)), array('meta_id' => self::$form_id)); } //Update Values if ($saved !== false) { $EM_Notices->add_confirm(__('Changes Saved', 'em-pro')); } elseif (count($EM_Form->get_errors()) > 0) { $EM_Notices->add_error($EM_Form->get_errors()); } } } elseif (!empty($_REQUEST['bookings_form_action'])) { if ($_REQUEST['bookings_form_action'] == 'default' && wp_verify_nonce($_REQUEST['_wpnonce'], 'bookings_form_default')) { //make this booking form the default update_option('em_booking_form_fields', $_REQUEST['form_id']); $EM_Notices->add_confirm(sprintf(__('The form <em>%s</em> is now the default booking form. All events without a pre-defined booking form will start using this form from now on.', 'em-pro'), self::$form_name)); } elseif ($_REQUEST['bookings_form_action'] == 'delete' && wp_verify_nonce($_REQUEST['_wpnonce'], 'bookings_form_delete')) { //load and save booking form object with new name $saved = $wpdb->query($wpdb->prepare("DELETE FROM " . EM_META_TABLE . " WHERE meta_id='%s'", $_REQUEST['form_id'])); if ($saved) { self::$form = false; $EM_Notices->add_confirm(sprintf(__('%s Deleted', 'dbem'), __('Booking Form', 'em-pro')), 1); } } elseif ($_REQUEST['bookings_form_action'] == 'rename' && wp_verify_nonce($_REQUEST['_wpnonce'], 'bookings_form_rename')) { //load and save booking form object with new name $booking_form_data = array('name' => wp_kses_data($_REQUEST['form_name']), 'form' => $EM_Form->form_fields); self::$form_name = $booking_form_data['name']; $saved = $wpdb->update(EM_META_TABLE, array('meta_value' => serialize($booking_form_data)), array('meta_id' => self::$form_id)); $EM_Notices->add_confirm(sprintf(__('Form renamed to <em>%s</em>.', 'em-pro'), self::$form_name)); } elseif ($_REQUEST['bookings_form_action'] == 'add' && wp_verify_nonce($_REQUEST['_wpnonce'], 'bookings_form_add')) { //create new form with this name and save first off $EM_Form = new EM_Form(self::$form_template, 'em_bookings_form'); $booking_form_data = array('name' => wp_kses_data($_REQUEST['form_name']), 'form' => $EM_Form->form_fields); self::$form = $EM_Form; self::$form_name = $booking_form_data['name']; $saved = $wpdb->insert(EM_META_TABLE, array('meta_value' => serialize($booking_form_data), 'meta_key' => 'booking-form', 'object_id' => 0)); self::$form_id = $wpdb->insert_id; $EM_Notices->add_confirm(__('New form created. You are now editing your new form.', 'em-pro'), true); wp_redirect(add_query_arg(array('form_id' => self::$form_id), wp_get_referer())); exit; } } } }