This example is for a two-page form. The data submitted from the first page is displayed on the second page as a preview. The second page has only one field, an html field that will be populated with the data from the first page.
<?php
add_filter( 'gform_pre_render_31', '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 3 on my form), exclude page break
if ( $field->id != 3 && $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
foreach ( $field->inputs as $input ) {
//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 .= '<li>' . $input['label'] . ': ' . $value . '</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)
$html_content .= '<li>' . $field->label . ': ' . rgpost( 'input_' . $field->id ) . '</li>';
}
}
}
}
$html_content .= '</ul>';
//loop back through form fields to get html field (id 3 on my form) that we are populating with the data gathered above
foreach( $form['fields'] as &$field ) {
//get html field
if ( $field->id == 3 ) {
//set the field content to the html
$field->content = $html_content;
}
}
}
//return altered form so changes are displayed
return $form;
}
?>