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;
 }
Beispiel #9
0
<?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";
 }
Beispiel #22
0
 /**
  * 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]);
         }
     }
 }
Beispiel #25
0
 /**
  * @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="">&mdash; <?php 
        _e('Select a value to insert into the box below', 'formidable');
        ?>
 &mdash;</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 
    }
Beispiel #29
0
 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';
 }