add_filter( 'gform_pre_render_81', 'populate_html' );
function populate_html( $form ) {
//this is a 2-page form with the data from page one being displayed in an html field on page 2
$current_page = GFFormDisplay::get_current_page( $form['id'] );
$html_content = "The information you have submitted is as follows:<br/><ul>";
if ( $current_page == 2 ) {
foreach ( $form['fields'] as &$field ) {
//gather form data to save into html field (id 6 on my form), exclude page break
if ( $field->id != 6 && $field->type != 'page' ) {
//see if this is a complex field (will have inputs)
if ( is_array( $field->inputs ) ) {
//this is a complex fieldset (name, adress, etc.) - get individual field info
//get field's label and put individual input information in a comma-delimited list
$html_content .= '<li>' .$field->label . ' - ';
$num_in_array = count( $field->inputs );
$counter = 0;
foreach ( $field->inputs as $input ) {
$counter++;
//get name of individual field, replace period with underscore when pulling from post
$input_name = 'input_' . str_replace( '.', '_', $input['id'] );
$value = rgpost( $input_name );
$html_content .= $input['label'] . ': ' . $value;
if ( $counter < $num_in_array ) {
$html_content .= ', ';
}
}
$html_content .= "</li>";
} else {
//this can be changed to be a switch statement if you need to handle each field type differently
//get the filename of file uploaded or post image uploaded
if ( $field->type == 'fileupload' || $field->type == 'post_image' ) {
$input_name = 'input_' . $field->id;
//before final submission, the image is stored in a temporary directory
//if displaying image in the html, point the img tag to the temporary location
$temp_filename = RGFormsModel::get_temp_filename( $form['id'], $input_name );
$uploaded_name = $temp_filename['uploaded_filename'];
$temp_location = RGFormsModel::get_upload_url( $form['id'] ) . '/tmp/' . $temp_filename['temp_filename'];
if ( !empty( $uploaded_name ) ) {
$html_content .= '<li>' . $field->label . ': ' . $uploaded_name . "<img src='" . $temp_location . "' height='200' width='200'></img></li>";
}
} else {
//get the label and then get the posted data for the field (this works for simple fields only - not the field groups like name and address)
$field_data = rgpost('input_' . $field->id );
if ( is_array( $field_data ) ){
//if data is an array, get individual input info
$html_content .= '<li>' . $field->label . ': ';
$num_in_array = count( $field_data );
$counter = 0;
foreach ( $field_data as $data ) {
$counter++;
$html_content .= print_r( $data, true );
if ( $counter < $num_in_array ) {
$html_content .= ', ';
}
}
$html_content .= '</li>';
}
else {
$html_content .= '<li>' . $field->label . ': ' . $field_data . '</li>';
}
}
}
}
}
$html_content .= '</ul>';
//loop back through form fields to get html field (id 6 on my form) that we are populating with the data gathered above
foreach( $form['fields'] as &$field ) {
//get html field
if ( $field->id == 6 ) {
//set the field content to the html
$field->content = $html_content;
}
}
}
//return altered form so changes are displayed
return $form;
}
|