$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; }