public static function duplicate_section($section_field, $form_id) { check_ajax_referer('frm_ajax', 'nonce'); global $wpdb; if (isset($_POST['children'])) { $children = array_filter((array) $_POST['children'], 'is_numeric'); $fields = FrmField::getAll(array('fi.id' => $children), 'field_order'); } else { $fields = array(); } array_unshift($fields, $section_field); $field_count = FrmDb::get_count($wpdb->prefix . 'frm_fields fi LEFT JOIN ' . $wpdb->prefix . 'frm_forms fr ON (fi.form_id = fr.id)', array('or' => 1, 'fr.id' => $form_id, 'fr.parent_form_id' => $form_id)); $ended = false; if (isset($section_field->field_options['repeat']) && $section_field->field_options['repeat']) { // create the repeatable form $new_form_id = FrmProField::create_repeat_form(0, array('parent_form_id' => $form_id, 'field_name' => $section_field->name)); } else { $new_form_id = $form_id; } foreach ($fields as $field) { // keep the current form id or give it the id of the newly created form $this_form_id = $field->form_id == $form_id ? $form_id : $new_form_id; $values = array(); FrmFieldsHelper::fill_field($values, $field, $this_form_id); if (FrmField::is_repeating_field($field)) { $values['field_options']['form_select'] = $new_form_id; } $field_count++; $values['field_order'] = $field_count; $field_id = FrmField::create($values); if (!$field_id) { continue; } if ('end_divider' == $field->type) { $ended = true; } $values['id'] = $this_form_id; FrmFieldsController::include_single_field($field_id, $values); } if (!$ended) { //make sure the section is ended self::create_multiple_fields((array) $section_field, $form_id); } // Prevent the function in the free version from completing wp_die(); }