public static function get_default_value($value, $field, $dynamic_default = true, $allow_array = false)
 {
     if (is_array(maybe_unserialize($value))) {
         if (FrmAppHelper::is_empty_value($value) || count(array_filter($value)) === 0) {
             $value = '';
         } else {
             return $value;
         }
     }
     $prev_val = '';
     if ($field && $dynamic_default) {
         if (FrmField::is_option_value_in_object($field, 'dyn_default_value')) {
             $prev_val = $value;
             $value = $field->field_options['dyn_default_value'];
         }
     }
     $matches = self::get_shortcodes_from_string($value);
     if (!isset($matches[0])) {
         return do_shortcode($value);
     }
     $args = array('matches' => $matches, 'allow_array' => $allow_array, 'field' => $field, 'prev_val' => $prev_val);
     foreach ($matches[1] as $match_key => $shortcode) {
         $args['shortcode'] = $shortcode;
         $args['match_key'] = $match_key;
         self::replace_shortcode_in_string($value, $args);
     }
     unset($matches);
     self::replace_field_id_shortcodes($value, $allow_array);
     self::do_shortcode($value, $allow_array);
     self::maybe_force_array($value, $field, $allow_array);
     return $value;
 }
 /**
  * @covers FrmAppHelper::is_empty_value
  */
 function test_is_empty_value()
 {
     $empty_value = FrmAppHelper::is_empty_value('');
     $this->assertTrue($empty_value);
     $empty_value = FrmAppHelper::is_empty_value(array());
     $this->assertTrue($empty_value);
     $not_empty_value = FrmAppHelper::is_empty_value('test');
     $this->assertFalse($not_empty_value);
     $not_empty_value = FrmAppHelper::is_empty_value(array('test'));
     $this->assertFalse($not_empty_value);
 }
 public static function fill_entry_values($atts, $f, array &$values)
 {
     if (FrmField::is_no_save_field($f->type)) {
         return;
     }
     if ($atts['default_email']) {
         $values[$f->id] = array('label' => '[' . $f->id . ' show=field_label]', 'val' => '[' . $f->id . ']');
         return;
     }
     //Remove signature from default-message shortcode
     if ($f->type == 'signature') {
         return;
     }
     if ($atts['entry'] && !isset($atts['entry']->metas[$f->id])) {
         // In case include_blank is set
         $atts['entry']->metas[$f->id] = '';
         if (FrmAppHelper::pro_is_installed()) {
             FrmProEntryMeta::add_post_value_to_entry($f, $atts['entry']);
             FrmProEntryMeta::add_repeating_value_to_entry($f, $atts['entry']);
         }
     }
     $val = '';
     if ($atts['entry']) {
         $prev_val = maybe_unserialize($atts['entry']->metas[$f->id]);
         $meta = array('item_id' => $atts['id'], 'field_id' => $f->id, 'meta_value' => $prev_val, 'field_type' => $f->type);
         //This filter applies to the default-message shortcode and frm-show-entry shortcode only
         if (isset($atts['filter']) && $atts['filter'] == false) {
             $val = $prev_val;
         } else {
             $val = apply_filters('frm_email_value', $prev_val, (object) $meta, $atts['entry']);
         }
     }
     // Don't include blank values
     if (!$atts['include_blank'] && FrmAppHelper::is_empty_value($val)) {
         return;
     }
     self::textarea_display_value($f->type, $atts['plain_text'], $val);
     if (is_array($val) && $atts['format'] == 'text') {
         $val = implode(', ', $val);
     }
     if ($atts['format'] != 'text') {
         $values[$f->field_key] = $val;
     } else {
         $values[$f->id] = array('label' => $f->name, 'val' => $val);
     }
 }
Exemple #4
0
 /**
  * @param string $meta_key
  */
 public static function add_entry_meta($entry_id, $field_id, $meta_key = null, $meta_value)
 {
     global $wpdb;
     if (FrmAppHelper::is_empty_value($meta_value)) {
         // don't save blank fields
         return;
     }
     $new_values = array('meta_value' => is_array($meta_value) ? serialize(array_filter($meta_value, 'FrmAppHelper::is_not_empty_value')) : trim($meta_value), 'item_id' => $entry_id, 'field_id' => $field_id, 'created_at' => current_time('mysql', 1));
     $new_values = apply_filters('frm_add_entry_meta', $new_values);
     $query_results = $wpdb->insert($wpdb->prefix . 'frm_item_metas', $new_values);
     if ($query_results) {
         self::clear_cache();
         $id = $wpdb->insert_id;
     } else {
         $id = 0;
     }
     return $id;
 }
 public static function validate($errors, $field, $value, $args)
 {
     $field->temp_id = $args['id'];
     // Keep current value for "Other" fields because it is needed for correct validation
     if (!$args['other']) {
         FrmEntriesHelper::get_posted_value($field, $value, $args);
     }
     if ($field->type == 'form' || FrmField::is_repeating_field($field)) {
         self::validate_embedded_form($errors, $field, $args['exclude']);
     } else {
         if ($field->type == 'user_id') {
             // make sure we have a user ID
             if (!is_numeric($value)) {
                 $value = FrmAppHelper::get_user_id_param($value);
                 FrmEntriesHelper::set_posted_value($field, $value, $args);
             }
             //add user id to post variables to be saved with entry
             $_POST['frm_user_id'] = $value;
         } else {
             if ($field->type == 'time' && is_array($value)) {
                 $value = $value['H'] . ':' . $value['m'] . (isset($value['A']) ? ' ' . $value['A'] : '');
                 FrmEntriesHelper::set_posted_value($field, $value, $args);
             }
         }
     }
     // don't validate if going backwards
     if (FrmProFormsHelper::going_to_prev($field->form_id)) {
         return array();
     }
     // clear any existing errors if draft
     if (FrmProFormsHelper::saving_draft() && isset($errors['field' . $field->temp_id])) {
         unset($errors['field' . $field->temp_id]);
     }
     self::validate_file_upload($errors, $field, $args);
     // if saving draft, only check file type since it won't be checked later
     // and confirmation field since the confirmation field value is not saved
     if (FrmProFormsHelper::saving_draft()) {
         //Check confirmation field if saving a draft
         self::validate_confirmation_field($errors, $field, $value, $args);
         return $errors;
     }
     self::validate_no_input_fields($errors, $field);
     if (empty($args['parent_field_id']) && !isset($_POST['item_meta'][$field->id])) {
         return $errors;
     }
     if (($field->type != 'tag' && $value == 0 || $field->type == 'tag' && $value == '') && isset($field->field_options['post_field']) && $field->field_options['post_field'] == 'post_category' && $field->required == '1') {
         $frm_settings = FrmAppHelper::get_settings();
         $errors['field' . $field->temp_id] = !isset($field->field_options['blank']) || $field->field_options['blank'] == '' || $field->field_options['blank'] == 'Untitled cannot be blank' ? $frm_settings->blank_msg : $field->field_options['blank'];
     }
     //Don't require fields hidden with shortcode fields="25,26,27"
     global $frm_vars;
     if (self::is_field_hidden_by_shortcode($field, $errors)) {
         unset($errors['field' . $field->temp_id]);
         $value = '';
     }
     //Don't require a conditionally hidden field
     self::validate_conditional_field($errors, $field, $value);
     //Don't require a field hidden in a conditional page or section heading
     self::validate_child_conditional_field($errors, $field, $value);
     //make sure the [auto_id] is still unique
     self::validate_auto_id($field, $value);
     //check uniqueness
     self::validate_unique_field($errors, $field, $value);
     self::set_post_fields($field, $value, $errors);
     if (!FrmProFieldsHelper::is_field_visible_to_user($field)) {
         //don't validate admin only fields that can't be seen
         unset($errors['field' . $field->temp_id]);
         FrmEntriesHelper::set_posted_value($field, $value, $args);
         return $errors;
     }
     self::validate_confirmation_field($errors, $field, $value, $args);
     //Don't validate the format if field is blank
     if (FrmAppHelper::is_empty_value($value)) {
         FrmEntriesHelper::set_posted_value($field, $value, $args);
         return $errors;
     }
     if (!is_array($value)) {
         $value = trim($value);
     }
     $validate_fields = array('number', 'phone', 'date');
     if (in_array($field->type, $validate_fields)) {
         $function = 'validate_' . $field->type . '_field';
         self::$function($errors, $field, $value);
     }
     FrmEntriesHelper::set_posted_value($field, $value, $args);
     return $errors;
 }