// Load Elgg engine
require_once dirname(dirname(dirname(__FILE__))) . "/engine/start.php";
// Load form model
require_once dirname(__FILE__) . "/models/model.php";
// Define context
set_context('form:content');
$form_id = get_input('id', 0);
$form_data_id = get_input('d', 0);
$preview = get_input('preview', 0);
$form = get_entity($form_id);
if ($form && $form->type == 'object' && get_subtype_from_id($form->subtype) == 'form:form') {
    set_page_owner($form->owner_guid);
    if ($form_data_id && ($form_data = form_get_data($form_data_id))) {
        if (get_entity($form_data_id)->canEdit()) {
            $tab_data = form_get_data_for_edit_form($form, $form_data);
        } else {
            register_error(elgg_echo('form:content_not_found'));
            forward();
        }
    } else {
        $tab_data = form_get_data_for_edit_form($form);
    }
    $title = form_form_t($form, 'title');
    $body = elgg_view('form/forms/display_form', array('form' => $form, 'tab_data' => $tab_data, 'preview' => $preview, 'form_data_id' => $form_data_id));
    $pg_owner_entity = page_owner_entity();
    $username = $pg_owner_entity->username;
    page_draw($title, elgg_view_layout("two_column_left_sidebar", '', elgg_view_title($title) . $body));
} else {
    register_error(elgg_echo('form:not_found'));
    forward();
}
$title = $form->title;
if ($preview) {
    $body = '<p class="form-description">' . elgg_echo('form:preview_results_description') . '</p>';
    $form_data = form_get_data_from_form_submit($form_id);
    $maps = form_get_maps($form_id);
    if ($maps) {
        foreach ($maps as $map) {
            $field = get_entity($map->field_id);
            $value = isset($form_data[$field->internal_name]) ? $form_data[$field->internal_name] : '';
            $body .= '<p><b>' . $field->title . ' (' . $field->internal_name . ') : ' . $value . '</p>';
        }
    }
} else {
    $result = form_set_data_from_form($form_data_id);
    if ($result->error_status) {
        if ($result->error_reason == 'missing') {
            register_error(elgg_view('form/missing_error', array('missing' => $result->missing)));
        } else {
            if ($result->error_reason == 'save_failed') {
                register_error(elgg_echo('form:err_save_failed'));
            }
        }
        // redisplay the form
        $tab_data = form_get_data_for_edit_form($form, $result->form_data);
        $body = elgg_view('form/forms/display_form', array('form' => $form, 'tab_data' => $tab_data, 'preview' => $preview));
    } else {
        // display response
        $body = elgg_view('form/response', array('form' => $form));
    }
}
page_draw($title, elgg_view_layout("two_column_left_sidebar", '', elgg_view_title($title) . $body));