Example #1
0
$message = '';
$data_id = 0;
$fields = array();
if (isset($_REQUEST['ref'])) {
    // A request for a brand new form
    $form = read_form_settings_by_ref($_REQUEST['ref']);
    if ($form === false) {
        echo get_string('invalid_data', 'local_obu_forms');
        die;
    }
    if (!is_manager($form) && (!$form->student && !$staff || !$form->visible)) {
        // User hasn't the capability to view a non-student or hidden form
        $message = get_string('form_unavailable', 'local_obu_forms');
    }
    if (isset($_REQUEST['version'])) {
        $template = read_form_template($form->id, $_REQUEST['version']);
    } else {
        // Get the relevant form template (include draft templates if an administrator)
        $template = get_form_template($form->id, is_siteadmin());
    }
    if (!$template) {
        echo get_string('invalid_data', 'local_obu_forms');
        die;
    }
} else {
    if (isset($_REQUEST['id'])) {
        // An existing form
        $data_id = $_REQUEST['id'];
        if ($data_id == 0) {
            redirect($home);
        }
            $form_id = $settings->id;
            $formname = $settings->name;
            if (isset($_REQUEST['version'])) {
                $version = strtoupper($_REQUEST['version']);
            } else {
                if (!isset($_REQUEST['versions']) || isset($_REQUEST['versions']) && $_REQUEST['versions'] != 0) {
                    $templates = read_form_templates($form_id);
                    if ($templates) {
                        $versions[0] = get_string('new_version', 'local_obu_forms');
                        // The 'New Version' option
                        foreach ($templates as $template) {
                            $versions[] = $template->version;
                        }
                        if (isset($_REQUEST['versions'])) {
                            $version = $versions[$_REQUEST['versions']];
                            $record = read_form_template($form_id, $version);
                        }
                    }
                }
            }
        }
    }
}
$parameters = ['formref' => $formref, 'formname' => $formname, 'version' => $version, 'versions' => $versions, 'record' => $record];
$mform = new template_input(null, $parameters);
if ($mform->is_cancelled()) {
    redirect($url);
} else {
    if ($mform_data = $mform->get_data()) {
        if ($mform_data->submitbutton == get_string('save', 'local_obu_forms')) {
            if (!$mform_data->already_published || is_siteadmin()) {
function write_form_template($author, $form_data)
{
    global $DB;
    $settings = read_form_settings_by_ref($form_data->formref);
    if ($settings === false) {
        return 0;
    }
    $record = new stdClass();
    $record->form_id = $settings->id;
    $record->version = strtoupper($form_data->version);
    $record->author = $author;
    $record->date = time();
    $record->published = $form_data->published;
    $record->data = $form_data->data['text'];
    $template = read_form_template($record->form_id, $record->version);
    if ($template !== false) {
        $id = $template->id;
        $record->id = $id;
        $DB->update_record('local_obu_forms_templates', $record);
    } else {
        $id = $DB->insert_record('local_obu_forms_templates', $record);
    }
    return $id;
}