function get_all_fields_for_form_key($form_key) { $field_totals = array($this->all_fields_form_key => 44, $this->create_post_form_key => 10, $this->contact_form_key => 8, $this->repeat_sec_form_key => 3); $expected_field_num = isset($field_totals[$form_key]) ? $field_totals[$form_key] : 0; $form_id = $this->factory->form->get_id_by_key($form_key); $fields = FrmField::get_all_for_form($form_id, '', 'include'); $actual_field_num = count($fields); $this->assertEquals($actual_field_num, $expected_field_num, $actual_field_num . ' fields were retrieved for ' . $form_key . ' form, but ' . $expected_field_num . ' were expected. This could mean that certain fields were not imported correctly.'); return $fields; }
function _check_if_child_fields_duplicate($old_child_forms, $new_child_forms) { // Just check the first form $old_child_form = reset($old_child_forms); $new_child_form = reset($new_child_forms); // Get all fields in each form $old_child_form_fields = FrmField::get_all_for_form($old_child_form->id); $new_child_form_fields = FrmField::get_all_for_form($new_child_form->id); // Check if there are the same number of child form fields in the duplicated child form $this->assertEquals(count($old_child_form_fields), count($new_child_form_fields), 'When a form is duplicated, the fields in the repeating section are not duplicated correctly.'); }
public static function show_entry($atts) { $atts = shortcode_atts(array('id' => false, 'entry' => false, 'fields' => false, 'plain_text' => false, 'user_info' => false, 'include_blank' => false, 'default_email' => false, 'form_id' => false, 'format' => 'text', 'direction' => 'ltr', 'font_size' => '', 'text_color' => '', 'border_width' => '', 'border_color' => '', 'bg_color' => '', 'alt_bg_color' => '', 'clickable' => false), $atts); if ($atts['format'] != 'text') { //format options are text, array, or json $atts['plain_text'] = true; } if (is_object($atts['entry']) && !isset($atts['entry']->metas)) { // if the entry does not include metas, force it again $atts['entry'] = false; } if (!$atts['entry'] || !is_object($atts['entry'])) { if (!$atts['id'] && !$atts['default_email']) { return ''; } if ($atts['id']) { $atts['entry'] = FrmEntry::getOne($atts['id'], true); } } if ($atts['entry']) { $atts['form_id'] = $atts['entry']->form_id; $atts['id'] = $atts['entry']->id; } if (!$atts['fields'] || !is_array($atts['fields'])) { $atts['fields'] = FrmField::get_all_for_form($atts['form_id'], '', 'include'); } $values = array(); foreach ($atts['fields'] as $f) { if ($f->type != 'password' && $f->type != 'credit_card') { self::fill_entry_values($atts, $f, $values); } unset($f); } self::fill_entry_user_info($atts, $values); if ($atts['format'] == 'json') { return json_encode($values); } else { if ($atts['format'] == 'array') { return $values; } } $content = array(); self::convert_entry_to_content($values, $atts, $content); if ('text' == $atts['format']) { $content = implode('', $content); } if ($atts['clickable']) { $content = make_clickable($content); } return $content; }
function wpfg_lookup_formidable($form_id) { if (!class_exists('FrmField')) { return false; } $form = FrmField::get_all_for_form($form_id); if (is_array($form)) { $form = reset($form); } if (isset($form->form_name) && $form->form_name) { return $form->form_name; } return false; }
function _check_updated_values($form_id) { $fields = FrmField::get_all_for_form($form_id); // Compare to posted values foreach ($fields as $field) { // Check default value $posted_val = $_POST['item_meta'][$field->id]; $actual_val = $field->default_value; $this->assertEquals($posted_val, $actual_val, 'The default value was not updated correctly for field ' . $field->field_key . '.'); // Check calculations $posted_val = $_POST['field_options']['use_calc_' . $field->id]; $actual_val = $field->field_options['use_calc']; $this->assertEquals($posted_val, $actual_val, 'The calculation was not updated correctly for field ' . $field->field_key . '.'); } }
/** * @covers FrmField::get_all_for_form */ function test_get_all_for_form() { $forms = array('basic_test' => array('form_key' => $this->contact_form_key, 'count' => 8), 'repeat' => array('form_key' => $this->all_fields_form_key, 'count' => 33 + 3), 'no_repeat_or_embed' => array('form_key' => $this->all_fields_form_key, 'count' => 33), 'repeat_and_embed' => array('form_key' => $this->all_fields_form_key, 'count' => 33 + 3 + 8)); foreach ($forms as $test => $args) { $form_id = FrmForm::getIdByKey($args['form_key']); if ($test == 'no_repeat_or_embed') { $fields = FrmField::get_all_for_form($form_id, '', 'exclude', 'exclude'); } else { if ($test == 'repeat_and_embed') { $fields = FrmField::get_all_for_form($form_id, '', 'include', 'include'); } else { $fields = FrmField::get_all_for_form($form_id); } } $this->assertNotEmpty($fields); $this->assertEquals($args['count'], count($fields), 'An incorrect number of fields are retrieved with FrmField::get_all_for_form.'); } }
/** * @covers FrmProFieldsController::toggle_repeat */ function test_toggle_repeat() { /* 1. Start with repeating, switch to regular - move child fields to parent form √ - move child entries to parent form √ - child entries deleted √ - child form deleted √ - form_select and repeat updated √ - check if correct form_id is echoed √ 2. Switch to repeating - child form created w/correct parent_form_id √ - move child fields to child form √ - child entries created from parent data √ - form_select updated and repeat updated √ - check if correct form_id is echoed */ $form_id = $this->factory->form->get_id_by_key('all_field_types'); $section_fields = FrmField::get_all_types_in_form($form_id, 'divider'); foreach ($section_fields as $section) { if (FrmField::is_repeating_field($section)) { $repeating_section = $section; break; } } $child_form_id = $repeating_section->field_options['form_select']; $children = FrmField::get_all_for_form($child_form_id, '', 'include'); $child_ids = array(); foreach ($children as $child) { $child_ids[] = $child->id; } $this->assertNotEmpty($child_ids, 'There were no fields retrieved for the repeating section form'); self::_switch_to_not_repeating($repeating_section, $child_ids); self::_switch_to_repeating($repeating_section, $child_ids); // TODO: Again, but update the form this time // Update form /*self::_switch_to_not_repeating( $repeating_section, $child_ids ); // Update form self::_switch_to_repeating( $repeating_section, $child_ids ); // Update form*/ }
public static function get_form_fields($form_id, $error = false) { $fields = FrmField::get_all_for_form($form_id); $fields = apply_filters('frm_get_paged_fields', $fields, $form_id, $error); return $fields; }
<?php if (!$item_ids) { return; } $item_form_id = 0; // fetch 20 posts at a time rather than loading the entire table into memory while ($next_set = array_splice($item_ids, 0, 20)) { $entries = FrmDb::get_results('frm_items', array('or' => 1, 'id' => $next_set, 'parent_item_id' => $next_set)); // Begin Loop foreach ($entries as $entry) { if ($item_form_id != $entry->form_id) { $fields = FrmField::get_all_for_form($entry->form_id); $item_form_id = $entry->form_id; } ?> <item> <id><?php echo absint($entry->id); ?> </id> <item_key><?php echo FrmXMLHelper::cdata($entry->item_key); ?> </item_key> <name><?php echo FrmXMLHelper::cdata($entry->name); ?> </name> <description><?php echo FrmXMLHelper::cdata($entry->description);
public static function mb_tags_box($form_id, $class = '') { $fields = FrmField::get_all_for_form($form_id, '', 'include'); $linked_forms = array(); $col = 'one'; $settings_tab = FrmAppHelper::is_admin_page('formidable') ? true : false; $cond_shortcodes = apply_filters('frm_conditional_shortcodes', array()); $adv_shortcodes = self::get_advanced_shortcodes(); $user_fields = apply_filters('frm_user_shortcodes', array()); $entry_shortcodes = self::get_shortcode_helpers($settings_tab); include FrmAppHelper::plugin_path() . '/classes/views/shared/mb_adv_info.php'; }
public static function get_shortcodes($content, $form_id) { if (empty($form_id) || strpos($content, '[') === false) { // don't continue if there are no shortcodes to check return array(array()); } $tagregexp = array('deletelink', 'detaillink', 'evenodd', 'get', 'entry_count', 'event_date'); $form_id = (int) $form_id; $form_ids = array($form_id); //get linked form ids $fields = FrmProFormsHelper::has_repeat_field($form_id, false); foreach ($fields as $field) { if (FrmField::is_option_true($field, 'form_select')) { $form_ids[] = $field->field_options['form_select']; $tagregexp[] = $field->id; $tagregexp[] = $field->field_key; } unset($field); } foreach ($form_ids as $form_id) { $fields = FrmField::get_all_for_form($form_id, '', 'include'); foreach ($fields as $field) { $tagregexp[] = $field->id; $tagregexp[] = $field->field_key; } } $tagregexp = implode('|', $tagregexp) . '|'; $tagregexp .= FrmFieldsHelper::allowed_shortcodes(); if (!ini_get('safe_mode')) { // make sure the backtrack limit is as least at the default $backtrack_limit = ini_get('pcre.backtrack_limit'); if ($backtrack_limit < 1000000) { ini_set('pcre.backtrack_limit', 1000000); } } preg_match_all("/\\[(if |foreach )?({$tagregexp})\\b(.*?)(?:(\\/))?\\](?:(.+?)\\[\\/\\])?/s", $content, $matches, PREG_PATTERN_ORDER); // run conditional and foreach first $new_order = $matches[0]; $move_up = array(); foreach ($new_order as $short_key => $tag) { $conditional = preg_match('/^\\[if/s', $matches[0][$short_key]) ? true : false; $foreach = preg_match('/^\\[foreach/s', $matches[0][$short_key]) ? true : false; if ($conditional || $foreach) { $move_up[$short_key] = $tag; } } if (!empty($move_up)) { $matches[0] = $move_up + $matches[0]; } return $matches; }
public static function include_logic_row($atts) { $defaults = array('meta_name' => '', 'condition' => array('hide_field' => '', 'hide_field_cond' => '==', 'hide_opt' => ''), 'key' => '', 'type' => 'form', 'form_id' => 0, 'id' => '', 'name' => '', 'names' => array(), 'showlast' => '', 'onchange' => '', 'exclude_fields' => array_merge(FrmField::no_save_fields(), array('file', 'rte', 'date'))); $atts = wp_parse_args($atts, $defaults); if (empty($atts['id'])) { $atts['id'] = 'frm_logic_' . $atts['key'] . '_' . $atts['meta_name']; } if (empty($atts['name'])) { $atts['name'] = 'frm_form_action[' . $atts['key'] . '][post_content][conditions][' . $atts['meta_name'] . ']'; } if (empty($atts['names'])) { $atts['names'] = array('hide_field' => $atts['name'] . '[hide_field]', 'hide_field_cond' => $atts['name'] . '[hide_field_cond]', 'hide_opt' => $atts['name'] . '[hide_opt]'); } if ($atts['onchange'] == '') { $atts['onchange'] = "frmGetFieldValues(this.value,'" . $atts['key'] . "','" . $atts['meta_name'] . "','" . (isset($atts['field']['type']) ? $atts['field']['type'] : '') . "','" . $atts['names']['hide_opt'] . "')"; } $form_fields = FrmField::get_all_for_form($atts['form_id']); extract($atts); include FrmAppHelper::plugin_path() . '/pro/classes/views/frmpro-forms/_logic_row.php'; }
/** * Get the fields that should be included in the CSV export * * @since 2.0.19 * * @param int $form_id * @param object $form * @return array $csv_fields */ private static function get_fields_for_csv_export($form_id, $form) { // Phase frm_csv_field_ids out by 2.01.05 $csv_field_ids = apply_filters('frm_csv_field_ids', '', $form_id, array('form' => $form)); if ($csv_field_ids) { _deprecated_function('The frm_csv_field_ids filter', '2.0.19', 'the frm_csv_columns filter'); $where = array('fi.type not' => FrmField::no_save_fields()); $where[] = array('or' => 1, 'fi.form_id' => $form->id, 'fr.parent_form_id' => $form->id); if (!is_array($csv_field_ids)) { $csv_field_ids = explode(',', $csv_field_ids); } if (!empty($csv_field_ids)) { $where['fi.id'] = $csv_field_ids; } $csv_fields = FrmField::getAll($where, 'field_order'); } else { $csv_fields = FrmField::get_all_for_form($form_id, '', 'include', 'include'); $no_export_fields = FrmField::no_save_fields(); foreach ($csv_fields as $k => $f) { if (in_array($f->type, $no_export_fields)) { unset($csv_fields[$k]); } } } return $csv_fields; }
private static function fields_to_values($form_id, array &$values) { $form = FrmForm::getOne($form_id); $values = array('fields' => array(), 'id' => $form->id); $fields = FrmField::get_all_for_form($form->id); foreach ($fields as $k => $f) { $f = (array) $f; $opts = (array) $f['field_options']; $f = array_merge($opts, $f); if (!isset($f['post_field'])) { $f['post_field'] = ''; } $values['fields'][] = $f; unset($k, $f); } return $form; }
function _check_xml_updated_repeating_fields($args) { $fields = FrmField::get_all_for_form($args['repeating_section']->field_options['form_select']); // Check if the number of fields in repeating form is correct $this->assertEquals(count($args['repeating_fields']), count($fields), 'Fields in repeating section were either added or deleted when they should have been updated.'); // Make sure the same fields are still in the section $repeating_field_keys = array('repeating-text', 'repeating-checkbox', 'repeating-date'); foreach ($fields as $field) { $this->assertTrue(in_array($field->field_key, $repeating_field_keys), 'A field with the key ' . $field->field_key . ' was created when it should have been upated.'); } }
function _get_xml_update_args() { $repeating_section_id = FrmField::get_id_by_key('repeating-section'); $repeating_section_values = self::_get_repeating_section_values($repeating_section_id); $repeating_section = FrmField::getOne($repeating_section_id); $repeating_fields = FrmField::get_all_for_form($repeating_section->field_options['form_select']); $parent_form_id = FrmForm::getIdByKey($this->all_fields_form_key); $parent_entries = FrmEntry::getAll(array('form_id' => $parent_form_id)); $child_entries = FrmEntry::getAll(array('form_id' => $repeating_section->field_options['form_select'])); $embed_form_id = FrmForm::getIdByKey($this->contact_form_key); $embedded_entries = FrmEntry::getAll(array('form_id' => $embed_form_id, 'parent_item_id !' => 0)); $args = array('repeating_section' => $repeating_section, 'repeating_section_values' => $repeating_section_values, 'repeating_fields' => $repeating_fields, 'parent_form_id' => $parent_form_id, 'parent_entries' => $parent_entries, 'child_entries' => $child_entries, 'embedded_entries' => $embedded_entries); return $args; }
public static function show($id = 0) { FrmAppHelper::permission_check('frm_view_entries'); if (!$id) { $id = FrmAppHelper::get_param('id', 0, 'get', 'absint'); if (!$id) { $id = FrmAppHelper::get_param('item_id', 0, 'get', 'absint'); } } $entry = FrmEntry::getOne($id, true); if (!$entry) { echo '<div id="form_show_entry_page" class="wrap">' . __('You are trying to view an entry that does not exist.', 'formidable') . '</div>'; return; } $data = maybe_unserialize($entry->description); if (!is_array($data) || !isset($data['referrer'])) { $data = array('referrer' => $data); } $fields = FrmField::get_all_for_form($entry->form_id, '', 'include'); $to_emails = array(); include FrmAppHelper::plugin_path() . '/classes/views/frm-entries/show.php'; }
public static function show($id = 0) { FrmAppHelper::permission_check('frm_view_entries'); if (!$id) { $id = FrmAppHelper::get_param('id', 0, 'get', 'absint'); if (!$id) { $id = FrmAppHelper::get_param('item_id', 0, 'get', 'absint'); } } $entry = FrmEntry::getOne($id, true); $data = maybe_unserialize($entry->description); if (!is_array($data) || !isset($data['referrer'])) { $data = array('referrer' => $data); } $fields = FrmField::get_all_for_form($entry->form_id, '', 'include'); $to_emails = array(); include FrmAppHelper::plugin_path() . '/classes/views/frm-entries/show.php'; }
/** * @return array */ public static function update_fields($id, $values) { if (!isset($values['options']) && !isset($values['item_meta']) && !isset($values['field_options'])) { return $values; } $all_fields = FrmField::get_all_for_form($id); if (empty($all_fields)) { return $values; } if (!isset($values['item_meta'])) { $values['item_meta'] = array(); } $field_array = array(); $existing_keys = array_keys($values['item_meta']); foreach ($all_fields as $fid) { if (!in_array($fid->id, $existing_keys) && (isset($values['frm_fields_submitted']) && in_array($fid->id, $values['frm_fields_submitted'])) || isset($values['options'])) { $values['item_meta'][$fid->id] = ''; } $field_array[$fid->id] = $fid; } unset($all_fields); foreach ($values['item_meta'] as $field_id => $default_value) { if (isset($field_array[$field_id])) { $field = $field_array[$field_id]; } else { $field = FrmField::getOne($field_id); } if (!$field) { continue; } $is_settings_page = isset($values['options']) || isset($values['field_options']['custom_html_' . $field_id]); if ($is_settings_page) { //updating the settings page if (isset($values['field_options']['custom_html_' . $field_id])) { $field->field_options['custom_html'] = isset($values['field_options']['custom_html_' . $field_id]) ? $values['field_options']['custom_html_' . $field_id] : (isset($field->field_options['custom_html']) ? $field->field_options['custom_html'] : FrmFieldsHelper::get_default_html($field->type)); $field->field_options = apply_filters('frm_update_form_field_options', $field->field_options, $field, $values); FrmField::update($field_id, array('field_options' => $field->field_options)); } else { if ($field->type == 'hidden' || $field->type == 'user_id') { $prev_opts = $field->field_options; $field->field_options = apply_filters('frm_update_form_field_options', $field->field_options, $field, $values); if ($prev_opts != $field->field_options) { FrmField::update($field_id, array('field_options' => $field->field_options)); } unset($prev_opts); } } } if ($is_settings_page && !defined('WP_IMPORTING')) { continue; } //updating the form $update_options = FrmFieldsHelper::get_default_field_opts($field->type, $field, true); unset($update_options['custom_html']); // don't check for POST html $update_options = apply_filters('frm_field_options_to_update', $update_options); foreach ($update_options as $opt => $default) { $field->field_options[$opt] = isset($values['field_options'][$opt . '_' . $field_id]) ? trim(sanitize_text_field($values['field_options'][$opt . '_' . $field_id])) : $default; } $field->field_options = apply_filters('frm_update_field_options', $field->field_options, $field, $values); $default_value = maybe_serialize($values['item_meta'][$field_id]); $field_key = isset($values['field_options']['field_key_' . $field_id]) ? $values['field_options']['field_key_' . $field_id] : $field->field_key; $required = isset($values['field_options']['required_' . $field_id]) ? $values['field_options']['required_' . $field_id] : false; $field_type = isset($values['field_options']['type_' . $field_id]) ? $values['field_options']['type_' . $field_id] : $field->type; $field_description = isset($values['field_options']['description_' . $field_id]) ? $values['field_options']['description_' . $field_id] : $field->description; FrmField::update($field_id, array('field_key' => $field_key, 'type' => $field_type, 'default_value' => $default_value, 'field_options' => $field->field_options, 'description' => $field_description, 'required' => $required)); FrmField::delete_form_transient($field->form_id); } self::clear_form_cache(); return $values; }
public static function _logic_row() { check_ajax_referer('frm_ajax', 'nonce'); FrmAppHelper::permission_check('frm_edit_forms', 'show'); $meta_name = FrmAppHelper::get_post_param('meta_name', '', 'absint'); $field_id = FrmAppHelper::get_post_param('field_id', '', 'absint'); $form_id = FrmAppHelper::get_post_param('form_id', '', 'absint'); $hide_field = ''; $field = FrmField::getOne($field_id); $field = FrmFieldsHelper::setup_edit_vars($field); $form_fields = FrmField::get_all_for_form($form_id); if (!isset($field['hide_field_cond'][$meta_name])) { $field['hide_field_cond'][$meta_name] = '=='; } include FrmAppHelper::plugin_path() . '/pro/classes/views/frmpro-fields/_logic_row.php'; wp_die(); }
public static function repeat_field_set($field_name, $args = array()) { $defaults = array('i' => 0, 'entry_id' => false, 'form' => false, 'fields' => array(), 'errors' => array(), 'parent_field' => 0, 'repeat' => 0, 'row_count' => false, 'value' => '', 'field_name' => ''); $args = wp_parse_args($args, $defaults); if (empty($args['parent_field'])) { return; } if (is_numeric($args['parent_field'])) { $args['parent_field'] = (array) FrmField::getOne($args['parent_field']); $args['parent_field']['format'] = isset($args['parent_field']['field_options']['format']) ? $args['parent_field']['field_options']['format'] : ''; } FrmForm::maybe_get_form($args['form']); if (empty($args['fields'])) { $args['fields'] = FrmField::get_all_for_form($args['form']->id); } $values = array(); if ($args['fields']) { // Get the ID of the form that houses the embedded form or repeating section $parent_form_id = $args['parent_field']['form_id']; if (empty($args['entry_id'])) { $values = FrmEntriesHelper::setup_new_vars($args['fields'], $args['form'], false, array('parent_form_id' => $parent_form_id)); } else { $entry = FrmEntry::getOne($args['entry_id'], true); if ($entry && $entry->form_id == $args['form']->id) { $values = FrmAppHelper::setup_edit_vars($entry, 'entries', $args['fields'], false, array(), array('parent_form_id' => $parent_form_id)); } else { return; } } } $format = isset($args['parent_field']['format']) ? $args['parent_field']['format'] : ''; $end = false; $count = 0; foreach ($values['fields'] as $subfield) { if ('end_divider' == $subfield['type']) { $end = $subfield; } else { if (!in_array($subfield['type'], array('hidden', 'user_id'))) { if (isset($subfield['conf_field']) && $subfield['conf_field']) { $count = $count + 2; } else { $count++; } } } unset($subfield); } if ($args['repeat']) { $count++; } $classes = array(2 => 'half', 3 => 'third', 4 => 'fourth', 5 => 'fifth', 6 => 'sixth', 7 => 'seventh', 8 => 'eighth'); $field_class = !empty($format) && isset($classes[$count]) ? $classes[$count] : ''; echo '<div id="frm_section_' . $args['parent_field']['id'] . '-' . $args['i'] . '" class="frm_repeat_' . (empty($format) ? 'sec' : $format) . ' frm_repeat_' . $args['parent_field']['id'] . ($args['row_count'] === 0 ? ' frm_first_repeat' : '') . '">' . "\n"; self::add_hidden_repeat_entry_id($args); self::add_default_item_meta_field($args); $label_pos = 'top'; $field_num = 1; foreach ($values['fields'] as $subfield) { $subfield_name = $field_name . '[' . $args['i'] . '][' . $subfield['id'] . ']'; $subfield_plus_id = '-' . $args['i']; $subfield_id = $subfield['id'] . '-' . $args['parent_field']['id'] . $subfield_plus_id; if ($args['parent_field'] && !empty($args['parent_field']['value']) && isset($args['parent_field']['value']['form']) && isset($args['parent_field']['value'][$args['i']]) && isset($args['parent_field']['value'][$args['i']][$subfield['id']])) { // this is a posted value from moving between pages, so set the POSTed value $subfield['value'] = $args['parent_field']['value'][$args['i']][$subfield['id']]; } if (!empty($field_class)) { if (1 == $field_num) { $subfield['classes'] .= ' frm_first frm_' . $field_class; } else { $subfield['classes'] .= ' frm_' . $field_class; } } $field_num++; if ('top' == $label_pos && in_array($subfield['label'], array('top', 'hidden', ''))) { // add placeholder label if repeating $label_pos = 'hidden'; } $field_args = array('field_name' => $subfield_name, 'field_id' => $subfield_id, 'field_plus_id' => $subfield_plus_id, 'section_id' => $args['parent_field']['id']); if (apply_filters('frm_show_normal_field_type', true, $subfield['type'])) { echo FrmFieldsHelper::replace_shortcodes($subfield['custom_html'], $subfield, $args['errors'], $args['form'], $field_args); } else { do_action('frm_show_other_field_type', $subfield, $args['form'], $field_args); } unset($subfield_name, $subfield_id); do_action('frm_get_field_scripts', $subfield, $args['form'], $args['parent_field']['form_id']); } if (!$args['repeat']) { // Close frm_repeat div echo '</div>' . "\n"; return; } $args['format'] = $format; $args['label_pos'] = $label_pos; $args['field_class'] = $field_class; echo self::repeat_buttons($args, $end); // Close frm_repeat div echo '</div>' . "\n"; }
/** * Insert all post variables into the post array * @return array */ public static function setup_post($action, $entry, $form) { $temp_fields = FrmField::get_all_for_form($form->id); $fields = array(); foreach ($temp_fields as $f) { $fields[$f->id] = $f; unset($f); } unset($temp_fields); $new_post = array('post_custom' => array(), 'taxonomies' => array(), 'post_category' => array()); self::populate_post_author($new_post); self::populate_post_fields($action, $entry, $new_post); self::populate_custom_fields($action, $entry, $fields, $new_post); self::populate_taxonomies($action, $entry, $fields, $new_post); // Reverse compatability for custom code self::populate_from_custom_code($new_post); $new_post = apply_filters('frm_new_post', $new_post, compact('form', 'action', 'entry')); return $new_post; }
public static function import_xml_forms($forms, $imported) { // Keep track of repeating sections that are created $repeat_fields = array(); foreach ($forms as $item) { $form = array('id' => (int) $item->id, 'form_key' => (string) $item->form_key, 'name' => (string) $item->name, 'description' => (string) $item->description, 'options' => (string) $item->options, 'logged_in' => (int) $item->logged_in, 'is_template' => (int) $item->is_template, 'default_template' => (int) $item->default_template, 'editable' => (int) $item->editable, 'status' => (string) $item->status, 'parent_form_id' => isset($item->parent_form_id) ? (int) $item->parent_form_id : 0, 'created_at' => date('Y-m-d H:i:s', strtotime((string) $item->created_at))); $form['options'] = FrmAppHelper::maybe_json_decode($form['options']); // if template, allow to edit if form keys match, otherwise, creation date must also match $edit_query = array('form_key' => $form['form_key'], 'is_template' => $form['is_template']); if (!$form['is_template']) { $edit_query['created_at'] = $form['created_at']; } if (!empty($form['parent_form_id']) && isset($imported['forms'][$form['parent_form_id']])) { // replace the old parent id with the new one $form['parent_form_id'] = $imported['forms'][$form['parent_form_id']]; } $edit_query = apply_filters('frm_match_xml_form', $edit_query, $form); $this_form = FrmForm::getAll($edit_query, '', 1); unset($edit_query); if (!empty($this_form)) { $old_id = $form_id = $this_form->id; FrmForm::update($form_id, $form); $imported['updated']['forms']++; // Keep track of whether this specific form was updated or not $imported['form_status'][$form_id] = 'updated'; $form_fields = FrmField::get_all_for_form($form_id); $old_fields = array(); foreach ($form_fields as $f) { $old_fields[$f->id] = $f; $old_fields[$f->field_key] = $f->id; unset($f); } $form_fields = $old_fields; unset($old_fields); } else { $old_id = false; //form does not exist, so create it $form_id = FrmForm::create($form); if ($form_id) { $imported['imported']['forms']++; // Keep track of whether this specific form was updated or not $imported['form_status'][$form_id] = 'imported'; } } foreach ($item->field as $field) { $f = array('id' => (int) $field->id, 'field_key' => (string) $field->field_key, 'name' => (string) $field->name, 'description' => (string) $field->description, 'type' => (string) $field->type, 'default_value' => FrmAppHelper::maybe_json_decode((string) $field->default_value), 'field_order' => (int) $field->field_order, 'form_id' => (int) $form_id, 'required' => (int) $field->required, 'options' => FrmAppHelper::maybe_json_decode((string) $field->options), 'field_options' => FrmAppHelper::maybe_json_decode((string) $field->field_options)); if (is_array($f['default_value']) && in_array($f['type'], array('text', 'email', 'url', 'textarea', 'number', 'phone', 'date', 'time', 'hidden', 'password', 'tag', 'image'))) { if (count($f['default_value']) === 1) { $f['default_value'] = '[' . reset($f['default_value']) . ']'; } else { $f['default_value'] = reset($f['default_value']); } } $f = apply_filters('frm_duplicated_field', $f); if (!empty($this_form)) { // check for field to edit by field id if (isset($form_fields[$f['id']])) { FrmField::update($f['id'], $f); $imported['updated']['fields']++; unset($form_fields[$f['id']]); //unset old field key if (isset($form_fields[$f['field_key']])) { unset($form_fields[$f['field_key']]); } } else { if (isset($form_fields[$f['field_key']])) { // check for field to edit by field key unset($f['id']); FrmField::update($form_fields[$f['field_key']], $f); $imported['updated']['fields']++; unset($form_fields[$form_fields[$f['field_key']]]); //unset old field id unset($form_fields[$f['field_key']]); //unset old field key } else { $new_id = FrmField::create($f); if ($new_id == false) { continue; } self::track_repeating_fields($f, $new_id, $repeat_fields); // if no matching field id or key in this form, create the field $imported['imported']['fields']++; } } } else { $new_id = FrmField::create($f); if ($new_id == false) { continue; } self::track_repeating_fields($f, $new_id, $repeat_fields); $imported['imported']['fields']++; } unset($field, $new_id); } // Delete any fields attached to this form that were not included in the template if (isset($form_fields) && !empty($form_fields)) { foreach ($form_fields as $field) { if (is_object($field)) { FrmField::destroy($field->id); } unset($field); } unset($form_fields); } // Update field ids/keys to new ones do_action('frm_after_duplicate_form', $form_id, $form, array('old_id' => $old_id)); $imported['forms'][(int) $item->id] = $form_id; // Send pre 2.0 form options through function that creates actions self::migrate_form_settings_to_actions($form['options'], $form_id, $imported, $switch = true); unset($form, $item); } self::update_repeat_field_options($repeat_fields, $imported['forms']); return $imported; }
/** * Get entries and fields for formresults * * @since 2.0.09 * @param array $atts */ private static function get_table_values(&$atts) { // Get all fields in the form $atts['form_cols'] = FrmField::get_all_for_form($atts['form']->id, '', 'include'); // Get all entries for the form $atts['entries'] = self::get_entries_for_table($atts); $subforms_to_include = array(); $field_count = 0; foreach ($atts['form_cols'] as $k => $f) { if ($field_count < $atts['cols'] && self::is_field_needed($f, $atts, $subforms_to_include)) { $field_count++; self::get_sub_field_values($f, $atts); } else { unset($atts['form_cols'][$k]); } } }
/** * @return array */ public static function update_fields($id, $values) { if (!isset($values['options']) && !isset($values['item_meta']) && !isset($values['field_options'])) { return $values; } $all_fields = FrmField::get_all_for_form($id); if (empty($all_fields)) { return $values; } if (!isset($values['item_meta'])) { $values['item_meta'] = array(); } $field_array = array(); $existing_keys = array_keys($values['item_meta']); foreach ($all_fields as $fid) { if (!in_array($fid->id, $existing_keys) && (isset($values['frm_fields_submitted']) && in_array($fid->id, $values['frm_fields_submitted'])) || isset($values['options'])) { $values['item_meta'][$fid->id] = ''; } $field_array[$fid->id] = $fid; } unset($all_fields); foreach ($values['item_meta'] as $field_id => $default_value) { if (isset($field_array[$field_id])) { $field = $field_array[$field_id]; } else { $field = FrmField::getOne($field_id); } if (!$field) { continue; } if (isset($values['options']) || isset($values['field_options']['custom_html_' . $field_id])) { //updating the settings page if (isset($values['field_options']['custom_html_' . $field_id])) { $field->field_options['custom_html'] = isset($values['field_options']['custom_html_' . $field_id]) ? $values['field_options']['custom_html_' . $field_id] : (isset($field->field_options['custom_html']) ? $field->field_options['custom_html'] : FrmFieldsHelper::get_default_html($field->type)); $field->field_options = apply_filters('frm_update_form_field_options', $field->field_options, $field, $values); FrmField::update($field_id, array('field_options' => $field->field_options)); } else { if ($field->type == 'hidden' || $field->type == 'user_id') { $prev_opts = $field->field_options; $field->field_options = apply_filters('frm_update_form_field_options', $field->field_options, $field, $values); if ($prev_opts != $field->field_options) { FrmField::update($field_id, array('field_options' => $field->field_options)); } unset($prev_opts); } } } if ((isset($values['options']) || isset($values['field_options']['custom_html_' . $field_id])) && !defined('WP_IMPORTING')) { continue; } //updating the form foreach (array('size', 'max', 'label', 'invalid', 'blank', 'classes', 'captcha_size') as $opt) { $field->field_options[$opt] = isset($values['field_options'][$opt . '_' . $field_id]) ? trim($values['field_options'][$opt . '_' . $field_id]) : ''; } $field->field_options['required_indicator'] = isset($values['field_options']['required_indicator_' . $field_id]) ? trim($values['field_options']['required_indicator_' . $field_id]) : '*'; $field->field_options['separate_value'] = isset($values['field_options']['separate_value_' . $field_id]) ? trim($values['field_options']['separate_value_' . $field_id]) : 0; $field->field_options = apply_filters('frm_update_field_options', $field->field_options, $field, $values); $default_value = maybe_serialize($values['item_meta'][$field_id]); $field_key = isset($values['field_options']['field_key_' . $field_id]) ? $values['field_options']['field_key_' . $field_id] : $field->field_key; $required = isset($values['field_options']['required_' . $field_id]) ? $values['field_options']['required_' . $field_id] : false; $field_type = isset($values['field_options']['type_' . $field_id]) ? $values['field_options']['type_' . $field_id] : $field->type; $field_description = isset($values['field_options']['description_' . $field_id]) ? $values['field_options']['description_' . $field_id] : $field->description; FrmField::update($field_id, array('field_key' => $field_key, 'type' => $field_type, 'default_value' => $default_value, 'field_options' => $field->field_options, 'description' => $field_description, 'required' => $required)); FrmField::delete_form_transient($field->form_id); } return $values; }
private static function get_form_fields($form_id) { $form_fields = FrmField::get_all_for_form($form_id, '', 'exclude', 'exclude'); $old_fields = array(); foreach ($form_fields as $f) { $old_fields[$f->id] = $f; $old_fields[$f->field_key] = $f->id; unset($f); } $form_fields = $old_fields; return $form_fields; }
/** * Get all fields in a form */ function get_fields_from_form($form_id) { return FrmField::get_all_for_form($form_id); }
public static function get_shortcode_select($form_id, $target_id = 'content', $type = 'all') { $field_list = array(); $exclude = FrmField::no_save_fields(); if (is_numeric($form_id)) { if ($type == 'field_opt') { $exclude[] = 'data'; $exclude[] = 'checkbox'; } $field_list = FrmField::get_all_for_form($form_id, '', 'include'); } $linked_forms = array(); ?> <select class="frm_shortcode_select frm_insert_val" data-target="<?php echo esc_attr($target_id); ?> "> <option value="">— <?php _e('Select a value to insert into the box below', 'formidable'); ?> —</option> <?php if ($type != 'field_opt' && $type != 'calc') { ?> <option value="id"><?php _e('Entry ID', 'formidable'); ?> </option> <option value="key"><?php _e('Entry Key', 'formidable'); ?> </option> <option value="post_id"><?php _e('Post ID', 'formidable'); ?> </option> <option value="ip"><?php _e('User IP', 'formidable'); ?> </option> <option value="created-at"><?php _e('Entry creation date', 'formidable'); ?> </option> <option value="updated-at"><?php _e('Entry update date', 'formidable'); ?> </option> <optgroup label="<?php esc_attr_e('Form Fields', 'formidable'); ?> "> <?php } if (!empty($field_list)) { foreach ($field_list as $field) { if (in_array($field->type, $exclude)) { continue; } if ($type != 'calc' && FrmProField::is_list_field($field)) { continue; } ?> <option value="<?php echo esc_attr($field->id); ?> "><?php echo $field_name = esc_html(FrmAppHelper::truncate($field->name, 60)); ?> (<?php _e('ID', 'formidable'); ?> )</option> <option value="<?php echo esc_attr($field->field_key); ?> "><?php echo $field_name; ?> (<?php _e('Key', 'formidable'); ?> )</option> <?php if ($field->type == 'file' && $type != 'field_opt' && $type != 'calc') { ?> <option class="frm_subopt" value="<?php echo esc_attr($field->field_key); ?> size=thumbnail"><?php _e('Thumbnail', 'formidable'); ?> </option> <option class="frm_subopt" value="<?php echo esc_attr($field->field_key); ?> size=medium"><?php _e('Medium', 'formidable'); ?> </option> <option class="frm_subopt" value="<?php echo esc_attr($field->field_key); ?> size=large"><?php _e('Large', 'formidable'); ?> </option> <option class="frm_subopt" value="<?php echo esc_attr($field->field_key); ?> size=full"><?php _e('Full Size', 'formidable'); ?> </option> <?php } else { if ($field->type == 'data') { //get all fields from linked form if (isset($field->field_options['form_select']) && is_numeric($field->field_options['form_select'])) { $linked_form = FrmDb::get_var('frm_fields', array('id' => $field->field_options['form_select']), 'form_id'); if (!in_array($linked_form, $linked_forms)) { $linked_forms[] = $linked_form; $linked_fields = FrmField::getAll(array('fi.type not' => FrmField::no_save_fields(), 'fi.form_id' => (int) $linked_form)); foreach ($linked_fields as $linked_field) { ?> <option class="frm_subopt" value="<?php echo esc_attr($field->id . ' show=' . $linked_field->id); ?> "><?php echo esc_html(FrmAppHelper::truncate($linked_field->name, 60)); ?> (<?php _e('ID', 'formidable'); ?> )</option> <option class="frm_subopt" value="<?php echo esc_attr($field->field_key . ' show=' . $linked_field->field_key); ?> "><?php echo esc_html(FrmAppHelper::truncate($linked_field->name, 60)); ?> (<?php _e('Key', 'formidable'); ?> )</option> <?php } } } } } } } if ($type != 'field_opt' && $type != 'calc') { ?> </optgroup> <optgroup label="<?php esc_attr_e('Helpers', 'formidable'); ?> "> <option value="editlink"><?php _e('Admin link to edit the entry', 'formidable'); ?> </option> <?php if ($target_id == 'content') { ?> <option value="detaillink"><?php _e('Link to view single page if showing dynamic entries', 'formidable'); ?> </option> <?php } if ($type != 'email') { ?> <option value="evenodd"><?php _e('Add a rotating \'even\' or \'odd\' class', 'formidable'); ?> </option> <?php } else { if ($target_id == 'email_message') { ?> <option value="default-message"><?php _e('Default Email Message', 'formidable'); ?> </option> <?php } } ?> <option value="siteurl"><?php _e('Site URL', 'formidable'); ?> </option> <option value="sitename"><?php _e('Site Name', 'formidable'); ?> </option> </optgroup> <?php } ?> </select> <?php }
public static function import_xml_forms($forms, $imported) { // Keep track of repeating sections and child forms that are imported $repeat_fields = $child_forms_missing_parent = array(); foreach ($forms as $item) { $form = array('id' => (int) $item->id, 'form_key' => (string) $item->form_key, 'name' => (string) $item->name, 'description' => (string) $item->description, 'options' => (string) $item->options, 'logged_in' => (int) $item->logged_in, 'is_template' => (int) $item->is_template, 'default_template' => (int) $item->default_template, 'editable' => (int) $item->editable, 'status' => (string) $item->status, 'parent_form_id' => isset($item->parent_form_id) ? (int) $item->parent_form_id : 0, 'created_at' => date('Y-m-d H:i:s', strtotime((string) $item->created_at))); $form['options'] = FrmAppHelper::maybe_json_decode($form['options']); // if template, allow to edit if form keys match, otherwise, creation date must also match $edit_query = array('form_key' => $form['form_key'], 'is_template' => $form['is_template']); if (!$form['is_template']) { $edit_query['created_at'] = $form['created_at']; } $old_parent_form_id = self::maybe_replace_parent_form_id($imported['forms'], $form['parent_form_id']); $edit_query = apply_filters('frm_match_xml_form', $edit_query, $form); $this_form = FrmForm::getAll($edit_query, '', 1); unset($edit_query); if (!empty($this_form)) { $old_id = $form_id = $this_form->id; FrmForm::update($form_id, $form); $imported['updated']['forms']++; // Keep track of whether this specific form was updated or not $imported['form_status'][$form_id] = 'updated'; $form_fields = FrmField::get_all_for_form($form_id); $old_fields = array(); foreach ($form_fields as $f) { $old_fields[$f->id] = $f; $old_fields[$f->field_key] = $f->id; unset($f); } $form_fields = $old_fields; unset($old_fields); } else { $old_id = false; //form does not exist, so create it $form_id = FrmForm::create($form); if ($form_id) { $imported['imported']['forms']++; // Keep track of whether this specific form was updated or not $imported['form_status'][$form_id] = 'imported'; self::track_child_forms_missing_parent((int) $form_id, $old_parent_form_id, $child_forms_missing_parent); } } self::import_xml_fields($item->field, $form_id, $this_form, $form_fields, $imported, $repeat_fields); // Delete any fields attached to this form that were not included in the template if (isset($form_fields) && !empty($form_fields)) { foreach ($form_fields as $field) { if (is_object($field)) { FrmField::destroy($field->id); } unset($field); } unset($form_fields); } // Update field ids/keys to new ones do_action('frm_after_duplicate_form', $form_id, $form, array('old_id' => $old_id)); $imported['forms'][(int) $item->id] = $form_id; // Send pre 2.0 form options through function that creates actions self::migrate_form_settings_to_actions($form['options'], $form_id, $imported, $switch = true); unset($form, $item); } self::update_repeat_field_options($repeat_fields, $imported['forms']); self::update_child_form_parents($child_forms_missing_parent, $imported['forms']); return $imported; }
public static function map_csv_fields() { $name = 'frm_import_file'; if (!isset($_FILES) || !isset($_FILES[$name]) || empty($_FILES[$name]['name']) || (int) $_FILES[$name]['size'] < 1) { return; } $file = $_FILES[$name]['tmp_name']; // check if file was uploaded if (!is_uploaded_file($file)) { return; } if (empty($_POST['form_id'])) { $errors = array(__('All Fields are required', 'formidable')); FrmXMLController::form($errors); return; } //upload $media_id = isset($_POST[$name]) && !empty($_POST[$name]) && is_numeric($_POST[$name]) ? $_POST[$name] : FrmProAppHelper::upload_file($name); if ($media_id && !is_wp_error($media_id)) { $filename = get_attached_file($media_id); } if (empty($filename)) { $errors = array(__('That CSV was not uploaded. Are CSV files allowed on your site?', 'formidable')); FrmXMLController::form($errors); return; } $headers = $example = ''; $csv_del = FrmAppHelper::get_param('csv_del', ',', 'get', 'sanitize_text_field'); $form_id = FrmAppHelper::get_param('form_id', '', 'get', 'absint'); setlocale(LC_ALL, get_locale()); if (($f = fopen($filename, 'r')) !== false) { $row = 0; while (($data = fgetcsv($f, 100000, $csv_del)) !== false) { //while (($raw_data = fgets($f, 100000))){ $row++; if ($row == 1) { $headers = $data; } else { if ($row == 2) { $example = $data; } else { continue; } } } fclose($f); } else { $errors = array(__('CSV cannot be opened.', 'formidable')); FrmXMLController::form($errors); return; } $fields = FrmField::get_all_for_form($form_id); include FrmAppHelper::plugin_path() . '/pro/classes/views/xml/map_csv_fields.php'; }