Ejemplo n.º 1
0
 private static function get_post_fields($form, $lead)
 {
     $post_data = array();
     $post_data["post_custom_fields"] = array();
     $post_data["tags_input"] = array();
     $categories = array();
     $images = array();
     foreach ($form["fields"] as $field) {
         if ($field['type'] == 'post_category') {
             $field = GFCommon::add_categories_as_choices($field, '');
         }
         $value = self::get_post_field_value($field, $lead);
         switch ($field["type"]) {
             case "post_title":
             case "post_excerpt":
             case "post_content":
                 $post_data[$field["type"]] = $value;
                 break;
             case "post_tags":
                 $tags = explode(",", $value);
                 if (is_array($tags) && sizeof($tags) > 0) {
                     $post_data["tags_input"] = array_merge($post_data["tags_input"], $tags);
                 }
                 break;
             case "post_custom_field":
                 $meta_name = $field["postCustomFieldName"];
                 if (!isset($post_data["post_custom_fields"][$meta_name])) {
                     $post_data["post_custom_fields"][$meta_name] = $value;
                 } else {
                     if (!is_array($post_data["post_custom_fields"][$meta_name])) {
                         $post_data["post_custom_fields"][$meta_name] = array($post_data["post_custom_fields"][$meta_name], $value);
                     } else {
                         $post_data["post_custom_fields"][$meta_name][] = $value;
                     }
                 }
                 break;
             case "post_category":
                 foreach (explode(',', $value) as $cat_string) {
                     list($cat_name, $cat_id) = rgexplode(":", $cat_string, 2);
                     array_push($categories, $cat_id);
                 }
                 break;
             case "post_image":
                 $ary = !empty($value) ? explode("|:|", $value) : array();
                 $url = count($ary) > 0 ? $ary[0] : "";
                 $title = count($ary) > 1 ? $ary[1] : "";
                 $caption = count($ary) > 2 ? $ary[2] : "";
                 $description = count($ary) > 3 ? $ary[3] : "";
                 array_push($images, array("field_id" => $field["id"], "url" => $url, "title" => $title, "description" => $description, "caption" => $caption));
                 break;
         }
     }
     $post_data["post_status"] = rgar($form, "postStatus");
     $post_data["post_category"] = !empty($categories) ? $categories : array(rgar($form, 'postCategory'));
     $post_data["images"] = $images;
     //setting current user as author depending on settings
     $post_data["post_author"] = $form["useCurrentUserAsAuthor"] && !empty($lead["created_by"]) ? $lead["created_by"] : $form["postAuthor"];
     return $post_data;
 }
 public static function get_grid_columns($form_id, $input_label_only = false)
 {
     $form = self::get_form_meta($form_id);
     $field_ids = self::get_grid_column_meta($form_id);
     if (!is_array($field_ids)) {
         $field_ids = array();
         for ($i = 0, $count = sizeof($form['fields']); $i < $count && $i < 5; $i++) {
             /* @var GF_Field $field */
             $field = $form['fields'][$i];
             //loading post category fields with choices and inputs
             if ($field->type == 'post_category') {
                 $field = GFCommon::add_categories_as_choices($field, '');
             }
             if (RGForms::get('displayOnly', $field) || self::get_input_type($field) == 'list') {
                 continue;
             }
             $inputs = $field->get_entry_inputs();
             if (is_array($inputs)) {
                 if ($field->type == 'name') {
                     $field_ids[] = $field->id . '.3';
                     //adding first name
                     $field_ids[] = $field->id . '.6';
                     //adding last name
                 } else {
                     $field_ids[] = $field->inputs[0]['id'];
                     //getting first input
                 }
             } else {
                 $field_ids[] = $field->id;
             }
         }
         //adding default entry meta columns
         $entry_metas = GFFormsModel::get_entry_meta($form_id);
         foreach ($entry_metas as $key => $entry_meta) {
             if (rgar($entry_meta, 'is_default_column')) {
                 $field_ids[] = $key;
             }
         }
     }
     $columns = array();
     $entry_meta = self::get_entry_meta($form_id);
     foreach ($field_ids as $field_id) {
         switch ($field_id) {
             case 'id':
                 $columns[$field_id] = array('label' => esc_html__('Entry Id', 'gravityforms'), 'type' => 'id');
                 break;
             case 'ip':
                 $columns[$field_id] = array('label' => esc_html__('User IP', 'gravityforms'), 'type' => 'ip');
                 break;
             case 'date_created':
                 $columns[$field_id] = array('label' => esc_html__('Entry Date', 'gravityforms'), 'type' => 'date_created');
                 break;
             case 'source_url':
                 $columns[$field_id] = array('label' => esc_html__('Source Url', 'gravityforms'), 'type' => 'source_url');
                 break;
             case 'payment_status':
                 $columns[$field_id] = array('label' => esc_html__('Payment Status', 'gravityforms'), 'type' => 'payment_status');
                 break;
             case 'transaction_id':
                 $columns[$field_id] = array('label' => esc_html__('Transaction Id', 'gravityforms'), 'type' => 'transaction_id');
                 break;
             case 'payment_date':
                 $columns[$field_id] = array('label' => esc_html__('Payment Date', 'gravityforms'), 'type' => 'payment_date');
                 break;
             case 'payment_amount':
                 $columns[$field_id] = array('label' => esc_html__('Payment Amount', 'gravityforms'), 'type' => 'payment_amount');
                 break;
             case 'created_by':
                 $columns[$field_id] = array('label' => esc_html__('User', 'gravityforms'), 'type' => 'created_by');
                 break;
             case (is_string($field_id) || is_int($field_id)) && array_key_exists($field_id, $entry_meta):
                 $columns[$field_id] = array('label' => $entry_meta[$field_id]['label'], 'type' => $field_id);
                 break;
             default:
                 $field = self::get_field($form, $field_id);
                 if ($field) {
                     $input_label_only = apply_filters('gform_entry_list_column_input_label_only', $input_label_only, $form, $field);
                     $columns[strval($field_id)] = array('label' => self::get_label($field, $field_id, $input_label_only), 'type' => $field->type, 'inputType' => $field->inputType);
                 }
         }
     }
     return $columns;
 }
 /**
  *
  * Fill-in the saved values into the form inputs
  *
  * @param string $field_content Always empty.
  * @param GF_Field $field
  * @param string|array $value If array, it's a field with multiple inputs. If string, single input.
  * @param int $lead_id Lead ID. Always 0 for the `gform_field_input` filter.
  * @param int $form_id Form ID
  *
  * @return mixed
  */
 function modify_edit_field_input($field_content = '', $field, $value, $lead_id = 0, $form_id)
 {
     // If the form has been submitted, then we don't need to pre-fill the values,
     // Except for fileupload type - run always!!
     if ($this->is_edit_entry_submission() && 'fileupload' !== $field->type || GFCommon::is_product_field($field->type)) {
         return $field_content;
     }
     // Turn on Admin-style display for file upload fields only
     if ('fileupload' === $field->type) {
         $_GET['page'] = 'gf_entries';
     }
     // SET SOME FIELD DEFAULTS TO PREVENT ISSUES
     $field->adminOnly = false;
     /** @see GFFormDisplay::get_counter_init_script() need to prevent adminOnly */
     // add categories as choices for Post Category field
     if ('post_category' === $field->type) {
         $field = GFCommon::add_categories_as_choices($field, $value);
     }
     /**
      * @filter `gravityview/edit_entry/pre_populate/override` Allow the pre-populated value to override saved value in Edit Entry form. By default, pre-populate mechanism only kicks on empty fields.
      * @param boolean True: override saved values; False: don't override (default)
      * @param $field GF_Field object Gravity Forms field object
      * @since 1.13
      */
     $override_saved_value = apply_filters('gravityview/edit_entry/pre_populate/override', false, $field);
     // We're dealing with multiple inputs (e.g. checkbox) but not time or date (as it doesn't store data in input IDs)
     if (isset($field->inputs) && is_array($field->inputs) && !in_array($field->type, array('time', 'date'))) {
         $field_value = array();
         // only accept pre-populated values if the field doesn't have any choice selected.
         $allow_pre_populated = $field->allowsPrepopulate;
         foreach ((array) $field->inputs as $input) {
             $input_id = strval($input['id']);
             if (!empty($this->entry[$input_id])) {
                 $field_value[$input_id] = 'post_category' === $field->type ? GFCommon::format_post_category($this->entry[$input_id], true) : $this->entry[$input_id];
                 $allow_pre_populated = false;
             }
         }
         $pre_value = $field->get_value_submission(array(), false);
         $field_value = !$allow_pre_populated && !($override_saved_value && !empty($pre_value)) ? $field_value : $pre_value;
     } else {
         $id = intval($field->id);
         // get pre-populated value if exists
         $pre_value = $field->allowsPrepopulate ? GFFormsModel::get_parameter_value($field->inputName, array(), $field) : '';
         // saved field entry value (if empty, fallback to the pre-populated value, if exists)
         // or pre-populated value if not empty and set to override saved value
         $field_value = !empty($this->entry[$id]) && !($override_saved_value && !empty($pre_value)) ? $this->entry[$id] : $pre_value;
         // in case field is post_category but inputType is select, multi-select or radio, convert value into array of category IDs.
         if ('post_category' === $field->type && !empty($field_value)) {
             $categories = array();
             foreach (explode(',', $field_value) as $cat_string) {
                 $categories[] = GFCommon::format_post_category($cat_string, true);
             }
             $field_value = 'multiselect' === $field->get_input_type() ? $categories : implode('', $categories);
         }
     }
     // if value is empty get the default value if defined
     $field_value = $field->get_value_default_if_empty($field_value);
     /**
      * @filter `gravityview/edit_entry/field_value` Change the value of an Edit Entry field, if needed
      * @since 1.11
      * @param mixed $field_value field value used to populate the input
      * @param object $field Gravity Forms field object ( Class GF_Field )
      */
     $field_value = apply_filters('gravityview/edit_entry/field_value', $field_value, $field);
     // Prevent any PHP warnings, like undefined index
     ob_start();
     $return = $field->get_field_input($this->form, $field_value, $this->entry);
     // If there was output, it's an error
     $warnings = ob_get_clean();
     if (!empty($warnings)) {
         do_action('gravityview_log_error', __METHOD__ . $warnings, $field_value);
     }
     /**
      * Unset hack $_GET['page'] = 'gf_entries'
      * We need the fileupload html field to render with the proper id
      *  ( <li id="field_80_16" ... > )
      */
     unset($_GET['page']);
     return $return;
 }
Ejemplo n.º 4
0
 public static function get_grid_columns($form_id, $input_label_only = false)
 {
     $form = self::get_form_meta($form_id);
     $field_ids = self::get_grid_column_meta($form_id);
     if (!is_array($field_ids)) {
         $field_ids = array();
         for ($i = 0, $count = sizeof($form["fields"]); $i < $count && $i < 5; $i++) {
             $field = $form["fields"][$i];
             //loading post category fields with choices and inputs
             if ($field["type"] == "post_category") {
                 $field = GFCommon::add_categories_as_choices($field, "");
             }
             if (RGForms::get("displayOnly", $field) || self::get_input_type($field) == "list") {
                 continue;
             }
             if (isset($field["inputs"]) && is_array($field["inputs"])) {
                 if ($field["type"] == "name") {
                     $field_ids[] = $field["id"] . '.3';
                     //adding first name
                     $field_ids[] = $field["id"] . '.6';
                     //adding last name
                 } else {
                     $field_ids[] = $field["inputs"][0]["id"];
                     //getting first input
                 }
             } else {
                 $field_ids[] = $field["id"];
             }
         }
         //adding default entry meta columns
         $entry_metas = GFFormsModel::get_entry_meta($form_id);
         foreach ($entry_metas as $key => $entry_meta) {
             if (rgar($entry_meta, "is_default_column")) {
                 $field_ids[] = $key;
             }
         }
     }
     $columns = array();
     $entry_meta = self::get_entry_meta($form_id);
     foreach ($field_ids as $field_id) {
         switch ($field_id) {
             case "id":
                 $columns[$field_id] = array("label" => "Entry Id", "type" => "id");
                 break;
             case "ip":
                 $columns[$field_id] = array("label" => "User IP", "type" => "ip");
                 break;
             case "date_created":
                 $columns[$field_id] = array("label" => "Entry Date", "type" => "date_created");
                 break;
             case "source_url":
                 $columns[$field_id] = array("label" => "Source Url", "type" => "source_url");
                 break;
             case "payment_status":
                 $columns[$field_id] = array("label" => "Payment Status", "type" => "payment_status");
                 break;
             case "transaction_id":
                 $columns[$field_id] = array("label" => "Transaction Id", "type" => "transaction_id");
                 break;
             case "payment_date":
                 $columns[$field_id] = array("label" => "Payment Date", "type" => "payment_date");
                 break;
             case "payment_amount":
                 $columns[$field_id] = array("label" => "Payment Amount", "type" => "payment_amount");
                 break;
             case "created_by":
                 $columns[$field_id] = array("label" => "User", "type" => "created_by");
                 break;
             case (is_string($field_id) || is_int($field_id)) && array_key_exists($field_id, $entry_meta):
                 $columns[$field_id] = array("label" => $entry_meta[$field_id]["label"], "type" => $field_id);
                 break;
             default:
                 $field = self::get_field($form, $field_id);
                 if ($field) {
                     $columns[strval($field_id)] = array("label" => self::get_label($field, $field_id, $input_label_only), "type" => rgget("type", $field), "inputType" => rgget("inputType", $field));
                 }
         }
     }
     return $columns;
 }
Ejemplo n.º 5
0
 /**
  * Adapted from forms_model.php, RGFormsModel::save_lead($Form, $lead)
  * @param  array $form Form object.
  * @param  array $lead Lead object
  * @return void
  */
 public static function save_lead($form, &$lead)
 {
     global $wpdb;
     if (IS_ADMIN && !GFCommon::current_user_can_any("gravityforms_edit_entries")) {
         die(__("You don't have adequate permission to edit entries.", "gravityforms"));
     }
     $lead_detail_table = RGFormsModel::get_lead_details_table_name();
     //Inserting lead if null
     if ($lead == null) {
         global $current_user;
         $user_id = $current_user && $current_user->ID ? $current_user->ID : 'NULL';
         $lead_table = RGFormsModel::get_lead_table_name();
         $user_agent = RGFormsModel::truncate($_SERVER["HTTP_USER_AGENT"], 250);
         $currency = GFCommon::get_currency();
         $source_url = RGFormsModel::truncate(RGFormsModel::get_current_page_url(), 200);
         $wpdb->query($wpdb->prepare("INSERT INTO {$lead_table}(form_id, ip, source_url, date_created, user_agent, currency, created_by) VALUES(%d, %s, %s, utc_timestamp(), %s, %s, {$user_id})", $form["id"], RGFormsModel::get_ip(), $source_url, $user_agent, $currency));
         //reading newly created lead id
         $lead_id = $wpdb->insert_id;
         $lead = array("id" => $lead_id);
     }
     $current_fields = $wpdb->get_results($wpdb->prepare("SELECT id, field_number FROM {$lead_detail_table} WHERE lead_id=%d", $lead["id"]));
     $original_post_id = rgget("post_id", $lead);
     $total_fields = array();
     $calculation_fields = array();
     $recalculate_total = false;
     foreach ($form["fields"] as $field) {
         //Ignore fields that are marked as display only
         if (rgget("displayOnly", $field) && $field["type"] != "password") {
             continue;
         }
         //ignore pricing fields in the entry detail
         if (RG_CURRENT_VIEW == "entry" && GFCommon::is_pricing_field($field["type"])) {
             continue;
         }
         //process total field after all fields have been saved
         if ($field["type"] == "total") {
             $total_fields[] = $field;
             continue;
         }
         //only save fields that are not hidden (except on entry screen)
         if (RG_CURRENT_VIEW == "entry" || !RGFormsModel::is_field_hidden($form, $field, array(), $lead)) {
             // process calculation fields after all fields have been saved (moved after the is hidden check)
             if (GFCommon::has_field_calculation($field)) {
                 $calculation_fields[] = $field;
                 continue;
             }
             if ($field['type'] == 'post_category') {
                 $field = GFCommon::add_categories_as_choices($field, '');
             }
             if (isset($field["inputs"]) && is_array($field["inputs"])) {
                 foreach ($field["inputs"] as $input) {
                     RGFormsModel::save_input($form, $field, $lead, $current_fields, $input["id"]);
                 }
             } else {
                 RGFormsModel::save_input($form, $field, $lead, $current_fields, $field["id"]);
             }
         }
         //Refresh lead to support conditionals (not optimal but...)
         $lead = RGFormsModel::get_lead($lead['id']);
     }
     if (!empty($calculation_fields)) {
         foreach ($calculation_fields as $calculation_field) {
             if (isset($calculation_field["inputs"]) && is_array($calculation_field["inputs"])) {
                 foreach ($calculation_field["inputs"] as $input) {
                     RGFormsModel::save_input($form, $calculation_field, $lead, $current_fields, $input["id"]);
                     RGFormsModel::refresh_lead_field_value($lead["id"], $input["id"]);
                 }
             } else {
                 RGFormsModel::save_input($form, $calculation_field, $lead, $current_fields, $calculation_field["id"]);
                 RGFormsModel::refresh_lead_field_value($lead["id"], $calculation_field["id"]);
             }
         }
         RGFormsModel::refresh_product_cache($form, $lead = RGFormsModel::get_lead($lead['id']));
     }
     //saving total field as the last field of the form.
     if (!empty($total_fields)) {
         foreach ($total_fields as $total_field) {
             GFCommon::log_debug("Saving total field.");
             RGFormsModel::save_input($form, $total_field, $lead, $current_fields, $total_field["id"]);
         }
     }
 }
 public function save_entry($form, &$lead, $editable_fields)
 {
     global $wpdb;
     gravity_flow()->log_debug(__METHOD__ . '(): Saving entry.');
     $lead_detail_table = GFFormsModel::get_lead_details_table_name();
     $is_new_lead = $lead == null;
     // Bailing if null
     if ($is_new_lead) {
         return;
     }
     $current_fields = $wpdb->get_results($wpdb->prepare("SELECT id, field_number FROM {$lead_detail_table} WHERE lead_id=%d", $lead['id']));
     $total_fields = array();
     /* @var $calculation_fields GF_Field[] */
     $calculation_fields = array();
     $recalculate_total = false;
     GFCommon::log_debug(__METHOD__ . '(): Saving entry fields.');
     foreach ($form['fields'] as &$field) {
         /* @var $field GF_Field */
         //Ignore fields that are marked as display only
         if ($field->displayOnly && $field->type != 'password') {
             continue;
         }
         //ignore pricing fields in the entry detail
         if (RG_CURRENT_VIEW == 'entry' && GFCommon::is_pricing_field($field->type)) {
             //continue;
         }
         //process total field after all fields have been saved
         if ($field->type == 'total') {
             $total_fields[] = $field;
             continue;
         }
         // process calculation fields after all fields have been saved (moved after the is hidden check)
         if ($field->has_calculation()) {
             $calculation_fields[] = $field;
             continue;
         }
         if (!in_array($field->id, $editable_fields)) {
             continue;
         }
         if (!$this->conditional_logic_editable_fields_enabled) {
             $field->conditionalLogic = null;
         }
         gravity_flow()->log_debug(__METHOD__ . "(): Saving field {$field->label}(#{$field->id} - {$field->type}).");
         if ($field->type == 'post_category') {
             $field = GFCommon::add_categories_as_choices($field, '');
         }
         $inputs = $field->get_entry_inputs();
         if (is_array($inputs)) {
             foreach ($inputs as $input) {
                 GFFormsModel::save_input($form, $field, $lead, $current_fields, $input['id']);
             }
         } else {
             GFFormsModel::save_input($form, $field, $lead, $current_fields, $field->id);
         }
     }
     if (!empty($calculation_fields)) {
         foreach ($calculation_fields as $calculation_field) {
             gravity_flow()->log_debug(__METHOD__ . "(): Saving calculated field {$calculation_field->label}(#{$calculation_field->id} - {$calculation_field->type}).");
             // Make sure that the value gets recalculated
             $calculation_field->conditionalLogic = null;
             $inputs = $calculation_field->get_entry_inputs();
             if (is_array($inputs)) {
                 if (!in_array($calculation_field->id, $editable_fields)) {
                     // Make sure calculated product names and quantities are saved as if they're submitted.
                     $value = array($calculation_field->id . '.1' => $lead[$calculation_field->id . '.1']);
                     $_POST['input_' . $calculation_field->id . '_1'] = $calculation_field->get_field_label(false, $value);
                     $quantity = trim($lead[$calculation_field->id . '.3']);
                     if ($calculation_field->disableQuantity && empty($quantity)) {
                         $_POST['input_' . $calculation_field->id . '_3'] = 1;
                     } else {
                         $_POST['input_' . $calculation_field->id . '_3'] = $quantity;
                     }
                 }
                 foreach ($inputs as $input) {
                     GFFormsModel::save_input($form, $calculation_field, $lead, $current_fields, $input['id']);
                     GFFormsModel::refresh_lead_field_value($lead['id'], $input['id']);
                 }
             } else {
                 GFFormsModel::save_input($form, $calculation_field, $lead, $current_fields, $calculation_field->id);
                 GFFormsModel::refresh_lead_field_value($lead['id'], $calculation_field->id);
             }
         }
     }
     GFFormsModel::refresh_product_cache($form, $lead = RGFormsModel::get_lead($lead['id']));
     //saving total field as the last field of the form.
     if (!empty($total_fields)) {
         foreach ($total_fields as $total_field) {
             gravity_flow()->log_debug(__METHOD__ . '(): Saving total field.');
             GFFormsModel::save_input($form, $total_field, $lead, $current_fields, $total_field->id);
             GFFormsModel::refresh_lead_field_value($lead['id'], $total_field->id);
         }
     }
 }
 /**
  * @param GF_Field $field
  * @param string   $value
  * @param int      $lead_id
  * @param int      $form_id
  * @param null     $form
  *
  * @return mixed|string|void
  */
 public static function get_field_input($field, $value = '', $lead_id = 0, $form_id = 0, $form = null)
 {
     if (!$field instanceof GF_Field) {
         $field = GF_Fields::create($field);
     }
     $field->adminOnly = false;
     $id = intval($field->id);
     $field_id = 'input_' . $form_id . "_{$id}";
     $entry = RGFormsModel::get_lead($lead_id);
     $post_id = $entry['post_id'];
     $post_link = '';
     if (is_numeric($post_id) && GFCommon::is_post_field($field)) {
         $post_link = "<div>You can <a href='post.php?action=edit&post={$post_id}'>edit this post</a> from the post page.</div>";
     }
     $field_input = apply_filters('gform_field_input', '', $field, $value, $lead_id, $form_id);
     if ($field_input) {
         return $field_input;
     }
     // add categories as choices for Post Category field
     if ($field->type == 'post_category') {
         $field = GFCommon::add_categories_as_choices($field, $value);
     }
     $type = RGFormsModel::get_input_type($field);
     switch ($type) {
         case 'honeypot':
             $autocomplete = RGFormsModel::is_html5_enabled() ? "autocomplete='off'" : '';
             return "<div class='ginput_container'><input name='input_{$id}' id='{$field_id}' type='text' value='' {$autocomplete}/></div>";
             break;
         case 'adminonly_hidden':
             if (!is_array($field->inputs)) {
                 if (is_array($value)) {
                     $value = json_encode($value);
                 }
                 return sprintf("<input name='input_%d' id='%s' class='gform_hidden' type='hidden' value='%s'/>", $id, $field_id, esc_attr($value));
             }
             $fields = '';
             foreach ($field->inputs as $input) {
                 $fields .= sprintf("<input name='input_%s' class='gform_hidden' type='hidden' value='%s'/>", $input['id'], esc_attr(rgar($value, strval($input['id']))));
             }
             return $fields;
             break;
         default:
             if (!empty($post_link)) {
                 return $post_link;
             }
             if (!isset($entry)) {
                 $entry = null;
             }
             return $field->get_field_input($form, $value, $entry);
             break;
     }
 }
Ejemplo n.º 8
0
 /**
  *
  * Fill-in the saved values into the form inputs
  *
  * @param string $field_content Always empty.
  * @param GF_Field $field
  * @param string|array $value If array, it's a field with multiple inputs. If string, single input.
  * @param int $lead_id Lead ID. Always 0 for the `gform_field_input` filter.
  * @param int $form_id Form ID
  *
  * @return mixed
  */
 function modify_edit_field_input($field_content = '', $field, $value, $lead_id = 0, $form_id)
 {
     // If the form has been submitted, then we don't need to pre-fill the values,
     // Except for fileupload type - run always!!
     if ($this->is_edit_entry_submission() && 'fileupload' !== $field->type || GFCommon::is_product_field($field->type)) {
         return $field_content;
     }
     // Turn on Admin-style display for file upload fields only
     if ('fileupload' === $field->type) {
         $_GET['page'] = 'gf_entries';
     }
     // SET SOME FIELD DEFAULTS TO PREVENT ISSUES
     $field->adminOnly = false;
     /** @see GFFormDisplay::get_counter_init_script() need to prevent adminOnly */
     // add categories as choices for Post Category field
     if ('post_category' === $field->type) {
         $field = GFCommon::add_categories_as_choices($field, $value);
     }
     // We're dealing with multiple inputs (e.g. checkbox)
     if (isset($field->inputs) && is_array($field->inputs)) {
         $field_value = array();
         // only accept pre-populated values if the field doesn't have any choice selected.
         $allow_pre_populated = true;
         foreach ((array) $field->inputs as $input) {
             $input_id = strval($input['id']);
             if (!empty($this->entry[$input_id])) {
                 $allow_pre_populated = false;
                 $field_value[$input_id] = 'post_category' === $field->type ? GFCommon::format_post_category($this->entry[$input_id], true) : $this->entry[$input_id];
             }
         }
         if ($allow_pre_populated) {
             $field_value = $field->get_value_submission(array(), false);
         }
     } else {
         $id = intval($field->id);
         // get pre-populated value if exists
         $pre_value = $field->allowsPrepopulate ? GFFormsModel::get_parameter_value($field->inputName, array(), $field) : '';
         // saved field entry value (if empty, fallback to the pre-populated value, if exists)
         $field_value = !empty($this->entry[$id]) ? $this->entry[$id] : $pre_value;
         // in case field is post_category but inputType is select, multi-select or radio, convert value into array of category IDs.
         if ('post_category' === $field->type && !empty($field_value)) {
             $categories = array();
             foreach (explode(',', $field_value) as $cat_string) {
                 $categories[] = GFCommon::format_post_category($cat_string, true);
             }
             $field_value = 'multiselect' === $field->get_input_type() ? $categories : implode('', $categories);
         }
     }
     // if value is empty get the default value if defined
     $field_value = $field->get_value_default_if_empty($field_value);
     // Prevent any PHP warnings, like undefined index
     ob_start();
     $return = $field->get_field_input($this->form, $field_value, $this->entry);
     // If there was output, it's an error
     $warnings = ob_get_clean();
     if (!empty($warnings)) {
         do_action('gravityview_log_error', __METHOD__ . $warnings);
     }
     /**
      * Unset hack $_GET['page'] = 'gf_entries'
      * We need the fileupload html field to render with the proper id
      *  ( <li id="field_80_16" ... > )
      */
     unset($_GET['page']);
     return $return;
 }
 /**
  *
  * Fill-in the saved values into the form inputs
  *
  * @param string $field_content Always empty. Returning not-empty overrides the input.
  * @param GF_Field $field
  * @param string|array $value If array, it's a field with multiple inputs. If string, single input.
  * @param int $lead_id Lead ID. Always 0 for the `gform_field_input` filter.
  * @param int $form_id Form ID
  *
  * @return mixed
  */
 function modify_edit_field_input($field_content = '', $field, $value, $lead_id = 0, $form_id)
 {
     $gv_field = GravityView_Fields::get_associated_field($field);
     // If the form has been submitted, then we don't need to pre-fill the values,
     // Except for fileupload type and when a field input is overridden- run always!!
     if ($this->is_edit_entry_submission() && !in_array($field->type, array('fileupload', 'post_image')) && false === ($gv_field && is_callable(array($gv_field, 'get_field_input'))) || !empty($field_content) || in_array($field->type, array('honeypot')) || GFCommon::is_product_field($field->type)) {
         return $field_content;
     }
     // Turn on Admin-style display for file upload fields only
     if ('fileupload' === $field->type) {
         $_GET['page'] = 'gf_entries';
     }
     // SET SOME FIELD DEFAULTS TO PREVENT ISSUES
     $field->adminOnly = false;
     /** @see GFFormDisplay::get_counter_init_script() need to prevent adminOnly */
     // add categories as choices for Post Category field
     if ('post_category' === $field->type) {
         $field = GFCommon::add_categories_as_choices($field, $value);
     }
     $field_value = $this->get_field_value($field);
     /**
      * @filter `gravityview/edit_entry/field_value` Change the value of an Edit Entry field, if needed
      * @since 1.11
      * @param mixed $field_value field value used to populate the input
      * @param object $field Gravity Forms field object ( Class GF_Field )
      */
     $field_value = apply_filters('gravityview/edit_entry/field_value', $field_value, $field);
     /**
      * @filter `gravityview/edit_entry/field_value_{field_type}` Change the value of an Edit Entry field for a specific field type
      * @since 1.17
      * @param mixed $field_value field value used to populate the input
      * @param GF_Field $field Gravity Forms field object
      */
     $field_value = apply_filters('gravityview/edit_entry/field_value_' . $field->type, $field_value, $field);
     // Prevent any PHP warnings, like undefined index
     ob_start();
     if ($gv_field && is_callable(array($gv_field, 'get_field_input'))) {
         /** @var GF_Field $gv_field */
         $return = $gv_field->get_field_input($this->form, $field_value, $this->entry, $field);
     } else {
         $return = $field->get_field_input($this->form, $field_value, $this->entry);
     }
     // If there was output, it's an error
     $warnings = ob_get_clean();
     if (!empty($warnings)) {
         do_action('gravityview_log_error', __METHOD__ . $warnings, $field_value);
     }
     /**
      * Unset hack $_GET['page'] = 'gf_entries'
      * We need the fileupload html field to render with the proper id
      *  ( <li id="field_80_16" ... > )
      */
     unset($_GET['page']);
     return $return;
 }