public function get_value_submission($field_values, $get_from_post_global_var = true)
 {
     $parameter_values = GFFormsModel::get_parameter_value($this->inputName, $field_values, $this);
     if (!empty($parameter_values) && !is_array($parameter_values)) {
         $parameter_values = explode(',', $parameter_values);
     }
     if (!is_array($this->inputs)) {
         return '';
     }
     $choice_index = 0;
     $value = array();
     foreach ($this->inputs as $input) {
         if (!empty($_POST['is_submit_' . $this->formId]) && $get_from_post_global_var) {
             $input_value = rgpost('input_' . str_replace('.', '_', strval($input['id'])));
             if (is_array($input_value)) {
                 $input_value = '';
             }
             $value[strval($input['id'])] = $input_value;
         } else {
             if (is_array($parameter_values)) {
                 foreach ($parameter_values as $item) {
                     $item = trim($item);
                     if (GFFormsModel::choice_value_match($this, $this->choices[$choice_index], $item)) {
                         $value[$input['id'] . ''] = $item;
                         break;
                     }
                 }
             }
         }
         $choice_index++;
     }
     return $value;
 }
Exemple #2
0
 /**
  * Retrieve the input value on submission.
  *
  * @param string $standard_name The input name used when accessing the $_POST.
  * @param string $custom_name The dynamic population parameter name.
  * @param array $field_values The dynamic population parameter names with their corresponding values to be populated.
  * @param bool|true $get_from_post_global_var Whether to get the value from the $_POST array as opposed to $field_values.
  *
  * @return array|string
  */
 public function get_input_value_submission($standard_name, $custom_name = '', $field_values = array(), $get_from_post_global_var = true)
 {
     $form_id = $this->formId;
     if (!empty($_POST['is_submit_' . $form_id]) && $get_from_post_global_var) {
         $value = rgpost($standard_name);
         $value = GFFormsModel::maybe_trim_input($value, $form_id, $this);
         return $value;
     } elseif ($this->allowsPrepopulate) {
         return GFFormsModel::get_parameter_value($custom_name, $field_values, $this);
     }
 }
 /**
  *
  * 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;
 }
 public function get_field_input($form, $value = '', $entry = null)
 {
     if (is_admin()) {
         return '';
     } else {
         $form_id = $form['id'];
         $is_entry_detail = $this->is_entry_detail();
         $is_form_editor = $this->is_form_editor();
         $id = (int) $this->id;
         $field_id = $is_entry_detail || $is_form_editor || $form_id == 0 ? "input_{$id}" : 'input_' . $form_id . "_{$id}";
         $tabindex = $this->get_tabindex();
         $repeater_id = $this->repeaterId;
         $repeater_parem = $this->inputName;
         $repeater_required = $this->repeaterRequiredChildren;
         $repeater_children = $this->repeaterChildren;
         $repeater_start = apply_filters('gf_repeater_start', $this->start, $form, $this);
         $repeater_min = apply_filters('gf_repeater_min', $this->min, $form, $this);
         $repeater_max = apply_filters('gf_repeater_max', $this->max, $form, $this);
         $repeater_animations = apply_filters('gf_repeater_animations', $this->animations, $form, $this);
         if (!empty($repeater_parem)) {
             $repeater_parem_value = GFFormsModel::get_parameter_value($repeater_parem, $value, $this);
             if (!empty($repeater_parem_value)) {
                 $repeater_start = $repeater_parem_value;
             }
         }
         if (!empty($repeater_children)) {
             $repeater_children_info = array();
             $repeater_parems = GF_Field_Repeater::get_children_parem_values($form, $repeater_children);
             foreach ($repeater_children as $repeater_child) {
                 $repeater_children_info[$repeater_child] = array();
                 $repeater_child_field_index = GF_Field_Repeater::get_field_index($form, 'id', $repeater_child);
                 if (!empty($repeater_required)) {
                     if (in_array($repeater_child, $repeater_required)) {
                         $repeater_children_info[$repeater_child]['required'] = true;
                     }
                 }
                 if (!empty($repeater_parems)) {
                     if (array_key_exists($repeater_child, $repeater_parems)) {
                         $repeater_children_info[$repeater_child]['prePopulate'] = $repeater_parems[$repeater_child];
                     }
                 }
                 if ($repeater_child_field_index !== false) {
                     $repeater_child_field = $form['fields'][$repeater_child_field_index];
                     if ($repeater_child_field['inputMask']) {
                         $repeater_children_info[$repeater_child]['inputMask'] = $repeater_child_field['inputMaskValue'];
                     } elseif ($repeater_child_field['type'] == 'phone' && ($repeater_child_field['phoneFormat'] = 'standard')) {
                         $repeater_children_info[$repeater_child]['inputMask'] = "(999) 999-9999";
                     }
                     if ($repeater_child_field['conditionalLogic']) {
                         $repeater_children_info[$repeater_child]['conditionalLogic'] = $repeater_child_field['conditionalLogic'];
                     }
                     if ($repeater_child_field['maxLength']) {
                         $repeater_children_info[$repeater_child]['maxLength'] = $repeater_child_field['maxLength'];
                     }
                     if ($repeater_child_field['enableEnhancedUI']) {
                         $repeater_children_info[$repeater_child]['enableEnhancedUI'] = $repeater_child_field['enableEnhancedUI'];
                     }
                 }
             }
             $repeater_children = $repeater_children_info;
         }
         $value = array();
         $value['formId'] = $form_id;
         if (!empty($repeater_start)) {
             $value['start'] = $repeater_start;
         }
         if (!empty($repeater_min)) {
             $value['min'] = $repeater_min;
         }
         if (!empty($repeater_max)) {
             $value['max'] = $repeater_max;
         }
         if (!empty($repeater_children)) {
             $value['children'] = $repeater_children;
         }
         $value = json_encode($value);
         if (!empty($repeater_animations)) {
             $animation_script = "var animations={" . $repeater_animations . "};jQuery.extend(true,gfRepeater_repeaters[" . $form_id . "][" . $repeater_id . "].settings.animations,animations);";
             GFFormDisplay::add_init_script($form_id, 'repeater_animations', GFFormDisplay::ON_PAGE_RENDER, $animation_script);
         }
         return sprintf("<input name='input_%d' id='%s' type='hidden' class='gform_repeater' value='%s' %s />", $id, $field_id, $value, $tabindex);
     }
 }
 public function get_field_input($form, $value = '', $entry = null)
 {
     if (is_admin()) {
         return '';
     } else {
         $form_id = $form['id'];
         $is_entry_detail = $this->is_entry_detail();
         $is_form_editor = $this->is_form_editor();
         $id = (int) $this->id;
         $field_id = $is_entry_detail || $is_form_editor || $form_id == 0 ? "input_{$id}" : 'input_' . $form_id . "_{$id}";
         $tabindex = $this->get_tabindex();
         $repeater_parem = $this->inputName;
         $repeater_start = $this->start;
         $repeater_min = $this->min;
         $repeater_max = $this->max;
         $repeater_required = $this->repeaterRequiredChildren;
         $repeater_children = $this->repeaterChildren;
         if (!empty($repeater_parem)) {
             $repeater_parem_value = GFFormsModel::get_parameter_value($repeater_parem, $value, $this);
             if (!empty($repeater_parem_value)) {
                 $repeater_start = $repeater_parem_value;
             }
         }
         if (!empty($repeater_children)) {
             $repeater_children_info = array();
             $repeater_parems = GF_Field_Repeater::get_children_parem_values($form, $repeater_children);
             foreach ($repeater_children as $repeater_child) {
                 $repeater_children_info[$repeater_child] = array();
                 $repeater_child_field_index = GF_Field_Repeater::get_field_index($form, 'id', $repeater_child);
                 if (!empty($repeater_required)) {
                     if (in_array($repeater_child, $repeater_required)) {
                         $repeater_children_info[$repeater_child]['required'] = true;
                     }
                 }
                 if (!empty($repeater_parems)) {
                     if (array_key_exists($repeater_child, $repeater_parems)) {
                         $repeater_children_info[$repeater_child]['prePopulate'] = $repeater_parems[$repeater_child];
                     }
                 }
                 if ($repeater_child_field_index !== false) {
                     if ($form['fields'][$repeater_child_field_index]['inputMask']) {
                         $repeater_children_info[$repeater_child]['inputMask'] = $form['fields'][$repeater_child_field_index]['inputMaskValue'];
                     } elseif ($form['fields'][$repeater_child_field_index]['type'] == 'phone' && ($form['fields'][$repeater_child_field_index]['phoneFormat'] = 'standard')) {
                         $repeater_children_info[$repeater_child]['inputMask'] = "(999) 999-9999";
                     }
                     if ($form['fields'][$repeater_child_field_index]['conditionalLogic']) {
                         $repeater_children_info[$repeater_child]['conditionalLogic'] = $form['fields'][$repeater_child_field_index]['conditionalLogic'];
                     }
                 }
             }
             $repeater_children = $repeater_children_info;
         }
         if (empty($value)) {
             $value['formId'] = $form_id;
             if (!empty($repeater_start)) {
                 $value['start'] = $repeater_start;
             }
             if (!empty($repeater_min)) {
                 $value['min'] = $repeater_min;
             }
             if (!empty($repeater_max)) {
                 $value['max'] = $repeater_max;
             }
             if (!empty($repeater_children)) {
                 $value['children'] = $repeater_children;
             }
             $value = json_encode($value);
         }
         return sprintf("<input name='input_%d' id='%s' type='hidden' class='gform_repeater' value='%s' %s />", $id, $field_id, $value, $tabindex);
     }
 }
 /**
  *
  * 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;
 }
 /**
  * Modify the value for the current field input
  *
  * @param GF_Field $field
  *
  * @return array|mixed|string|void
  */
 private function get_field_value($field)
 {
     /**
      * @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 (isset($this->entry[$input_id]) && !gv_empty($this->entry[$input_id], false, false)) {
                 $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 && !gv_empty($pre_value, false, false)) ? $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 = !gv_empty($this->entry[$id], false, false) && !($override_saved_value && !gv_empty($pre_value, false, false)) ? $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 && !gv_empty($field_value, false, false)) {
             $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);
     return $field_value;
 }