public static function add_default_export_fields($form) { //adding default fields array_push($form['fields'], array('id' => 'created_by', 'label' => __('Created By (User Id)', 'gravityforms'))); array_push($form['fields'], array('id' => 'id', 'label' => __('Entry Id', 'gravityforms'))); array_push($form['fields'], array('id' => 'date_created', 'label' => __('Entry Date', 'gravityforms'))); array_push($form['fields'], array('id' => 'source_url', 'label' => __('Source Url', 'gravityforms'))); array_push($form['fields'], array('id' => 'transaction_id', 'label' => __('Transaction Id', 'gravityforms'))); array_push($form['fields'], array('id' => 'payment_amount', 'label' => __('Payment Amount', 'gravityforms'))); array_push($form['fields'], array('id' => 'payment_date', 'label' => __('Payment Date', 'gravityforms'))); array_push($form['fields'], array('id' => 'payment_status', 'label' => __('Payment Status', 'gravityforms'))); //array_push($form['fields'],array('id' => 'payment_method' , 'label' => __('Payment Method', 'gravityforms'))); //wait until all payment gateways have been released array_push($form['fields'], array('id' => 'post_id', 'label' => __('Post Id', 'gravityforms'))); array_push($form['fields'], array('id' => 'user_agent', 'label' => __('User Agent', 'gravityforms'))); array_push($form['fields'], array('id' => 'ip', 'label' => __('User IP', 'gravityforms'))); $form = self::get_entry_meta($form); $form = apply_filters('gform_export_fields', $form); $form = GFFormsModel::convert_field_objects($form); return $form; }
/** * Saves form meta. Note the special requirements for the meta string. * * @param $id * @param string $form_json A valid JSON string. The JSON is manipulated before decoding and is designed to work together with jQuery.toJSON() rather than json_encode. Avoid using json_encode as it will convert unicode characters into their respective entities with slashes. These slashes get stripped so unicode characters won't survive intact. * * @return array */ public static function save_form_info($id, $form_json) { global $wpdb; $form_json = stripslashes($form_json); $form_json = nl2br($form_json); GFCommon::log_debug('GFFormDetail::save_form_info(): Form meta json: ' . $form_json); $form_meta = json_decode($form_json, true); $form_meta = GFFormsModel::convert_field_objects($form_meta); GFCommon::log_debug('GFFormDetail::save_form_info(): Form meta => ' . print_r($form_meta, true)); if (!$form_meta) { return array('status' => 'invalid_json', 'meta' => null); } $form_table_name = $wpdb->prefix . 'rg_form'; //Making sure title is not duplicate $forms = RGFormsModel::get_forms(); foreach ($forms as $form) { if (strtolower($form->title) == strtolower($form_meta['title']) && rgar($form_meta, 'id') != $form->id) { return array('status' => 'duplicate_title', 'meta' => $form_meta); } } if ($id > 0) { $form_meta = GFFormsModel::trim_form_meta_values($form_meta); RGFormsModel::update_form_meta($id, $form_meta); //updating form title $wpdb->query($wpdb->prepare("UPDATE {$form_table_name} SET title=%s WHERE id=%d", $form_meta['title'], $form_meta['id'])); $form_meta = RGFormsModel::get_form_meta($id); do_action('gform_after_save_form', $form_meta, false); return array('status' => $id, 'meta' => $form_meta); } else { //inserting form $id = RGFormsModel::insert_form($form_meta['title']); //updating object's id property $form_meta['id'] = $id; //creating default notification if (apply_filters('gform_default_notification', true)) { $default_notification = array('id' => uniqid(), 'to' => '{admin_email}', 'name' => __('Admin Notification', 'gravityforms'), 'event' => 'form_submission', 'toType' => 'email', 'subject' => __('New submission from', 'gravityforms') . ' {form_title}', 'message' => '{all_fields}'); $notifications = array($default_notification['id'] => $default_notification); //updating notifications form meta RGFormsModel::save_form_notifications($id, $notifications); } // add default confirmation when saving a new form $confirmation_id = uniqid(); $confirmations = array(); $confirmations[$confirmation_id] = array('id' => $confirmation_id, 'name' => __('Default Confirmation', 'gravityforms'), 'isDefault' => true, 'type' => 'message', 'message' => __('Thanks for contacting us! We will get in touch with you shortly.', 'gravityforms'), 'url' => '', 'pageId' => '', 'queryString' => ''); GFFormsModel::save_form_confirmations($id, $confirmations); //updating form meta RGFormsModel::update_form_meta($id, $form_meta); $form_meta = RGFormsModel::get_form_meta($id); do_action('gform_after_save_form', $form_meta, true); return array('status' => $id * -1, 'meta' => $form_meta); } }
/** * Renders the column selection page * * @access public * @static */ public static function select_columns_page() { $form_id = $_GET['id']; if (empty($form_id)) { echo __('Oops! We could not locate your form. Please try again.', 'gravityforms'); exit; } // Reading form metadata $form = RGFormsModel::get_form_meta($form_id); ?> <html> <head> <?php wp_print_styles(array('wp-admin', 'colors-fresh')); wp_print_scripts(array('jquery-ui-sortable')); //adds touchscreen support on mobile devices if (wp_is_mobile()) { wp_print_scripts(array('jquery-touch-punch')); } ?> <style type="text/css"> body { font-family: "Lucida Grande", Verdana, Arial, sans-serif; } #sortable_available, #sortable_selected { list-style-type: none; margin: 0; padding: 2px; height: 250px; border: 1px solid #eaeaea; -moz-border-radius: 4px; -webkit-border-radius: 4px; -khtml-border-radius: 4px; border-radius: 4px; background-color: #FFF; overflow: auto; } #sortable_available li, #sortable_selected li { margin: 0 2px 2px 2px; padding: 2px; width: 96%; border: 1px solid white; cursor: pointer; font-size: 13px; } .field_hover { border: 1px dashed #2175A9 !important; } .placeholder { background-color: #FFF0A5; height: 20px; } .gcolumn_wrapper { height: 290px; padding: 0 20px; } .gcolumn_container_left, .gcolumn_container_right { width: 46%; } .gcolumn_container_left { float: left; } .gcolumn_container_right { float: right; } .gform_select_column_heading { font-weight: bold; padding-bottom: 7px; font-size: 13px; } .column-arrow-mid { float: left; width: 45px; height: 250px; background-image: url(<?php echo GFCommon::get_base_url(); ?> /images/arrow-rightleft.png); background-repeat: no-repeat; background-position: center center; margin-top: 26px; } .panel-instructions { border-bottom: 1px solid #dfdfdf; color: #555; font-size: 11px; padding: 10px 20px; margin-bottom: 6px } div.panel-buttons { margin-top: 8px; padding: 0 20px; } div.panel-buttons { *margin-top: 0px } /* ie specific */ </style> <script type="text/javascript"> jQuery(document).ready(function () { jQuery("#sortable_available, #sortable_selected").sortable({connectWith: '.sortable_connected', placeholder: 'placeholder'}); jQuery(".sortable_connected li").hover( function () { jQuery(this).addClass("field_hover"); }, function () { jQuery(this).removeClass("field_hover"); } ); }); var columns = new Array(); function SelectColumns() { jQuery("#sortable_selected li").each(function () { columns.push(this.id); }); self.parent.parent.ChangeColumns(columns); } </script> </head> <body> <?php $columns = RGFormsModel::get_grid_columns($form_id); $field_ids = array_keys($columns); $form = RGFormsModel::get_form_meta($form_id); array_push($form['fields'], array('id' => 'id', 'label' => __('Entry Id', 'gravityforms'))); array_push($form['fields'], array('id' => 'date_created', 'label' => __('Entry Date', 'gravityforms'))); array_push($form['fields'], array('id' => 'ip', 'label' => __('User IP', 'gravityforms'))); array_push($form['fields'], array('id' => 'source_url', 'label' => __('Source Url', 'gravityforms'))); array_push($form['fields'], array('id' => 'payment_status', 'label' => __('Payment Status', 'gravityforms'))); array_push($form['fields'], array('id' => 'transaction_id', 'label' => __('Transaction Id', 'gravityforms'))); array_push($form['fields'], array('id' => 'payment_amount', 'label' => __('Payment Amount', 'gravityforms'))); array_push($form['fields'], array('id' => 'payment_date', 'label' => __('Payment Date', 'gravityforms'))); array_push($form['fields'], array('id' => 'created_by', 'label' => __('User', 'gravityforms'))); $form = self::get_selectable_entry_meta($form); $form = GFFormsModel::convert_field_objects($form); ?> <div class="panel-instructions"><?php esc_html_e('Drag & drop to order and select which columns are displayed in the entries table.', 'gravityforms'); ?> </div> <div class="gcolumn_wrapper"> <div class="gcolumn_container_left"> <div class="gform_select_column_heading"><?php esc_html_e('Active Columns', 'gravityforms'); ?> </div> <ul id="sortable_selected" class="sortable_connected"> <?php foreach ($columns as $field_id => $field_info) { ?> <li id="<?php echo esc_attr($field_id); ?> "><?php echo esc_html($field_info['label']); ?> </li> <?php } ?> </ul> </div> <div class="column-arrow-mid"></div> <div class="gcolumn_container_right" id="available_column"> <div class="gform_select_column_heading"> <?php esc_html_e('Inactive Columns', 'gravityforms'); ?> </div> <ul id="sortable_available" class="sortable_connected"> <?php foreach ($form['fields'] as $field) { /* @var GF_Field $field */ if (RGFormsModel::get_input_type($field) == 'checkbox' && !in_array($field->id, $field_ids)) { ?> <li id="<?php echo esc_attr($field->id); ?> "><?php echo esc_html(GFCommon::get_label($field)); ?> </li> <?php } $inputs = $field->get_entry_inputs(); if (is_array($inputs)) { foreach ($inputs as $input) { if (rgar($input, 'isHidden')) { continue; } if (!in_array($input['id'], $field_ids) && !($field->type == 'creditcard' && in_array($input['id'], array(floatval("{$field->id}.2"), floatval("{$field->id}.3"), floatval("{$field->id}.5"))))) { ?> <li id="<?php echo esc_attr($input['id']); ?> "><?php echo esc_html(GFCommon::get_label($field, $input['id'])); ?> </li> <?php } } } else { if (!$field->displayOnly && !in_array($field->id, $field_ids) && RGFormsModel::get_input_type($field) != 'list') { ?> <li id="<?php echo $field->id; ?> "><?php echo esc_html(GFCommon::get_label($field)); ?> </li> <?php } } } ?> </ul> </div> </div> <div class="panel-buttons"> <input type="button" value=" <?php esc_attr_e('Save', 'gravityforms'); ?> " class="button-primary" onclick="SelectColumns();" onkeypress="SelectColumns();" /> <input type="button" value="<?php esc_attr_e('Cancel', 'gravityforms'); ?> " class="button" onclick="self.parent.tb_remove();" onkeypress="self.parent.tb_remove();" /> </div> </body> </html> <?php }