Exemple #1
0
 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();" />&nbsp;
			<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 
    }