function definition() { global $USER; $mform =& $this->_form; $data = new stdClass(); $data->organisations = $this->_customdata['organisations']; $data->record = $this->_customdata['record']; $data->status_text = $this->_customdata['status_text']; $data->button_text = $this->_customdata['button_text']; $data->administrator = $this->_customdata['administrator']; $approval_sought = 0; // Level at which we are seeking approval from this user (if at all) if ($data->record !== false) { // Level (if any) at which we are seeking approval from this user if ($data->button_text == 'approve') { $approval_sought = $data->record->approval_level; } // Format the fields nicely before we load them into the form $date = date_create(); $date_format = 'd-m-y'; date_timestamp_set($date, $data->record->birthdate); $birthdate_formatted = date_format($date, $date_format); date_timestamp_set($date, $data->record->prof_date); $prof_date_formatted = date_format($date, $date_format); if ($data->record->criminal_record == '1') { $criminal_record_formatted = 'Yes'; } else { $criminal_record_formatted = 'No'; } if ($data->record->self_funding == '1') { $self_funding_formatted = '✔'; // Tick } else { $self_funding_formatted = '✘'; // Cross } $self_funding_formatted .= ' ' . get_string('self_funding_text', 'local_obu_application'); if ($data->record->declaration == '1') { $declaration_formatted = '✔'; // Tick } else { $declaration_formatted = '✘'; // Cross } $declaration_formatted .= ' ' . get_string('declaration_text', 'local_obu_application', get_string('conditions', 'local_obu_application')); if ($data->record->funding_method == 0) { // non-NHS $funding_method_formatted = get_string('other', 'local_obu_application') . ' (' . get_string('invoice', 'local_obu_application') . ')'; } else { // NHS trust $funding_method_formatted = get_string('trust', 'local_obu_application') . ' ('; if ($data->record->funding_method == 1) { $funding_method_formatted .= get_string('invoice', 'local_obu_application'); } else { if ($data->record->funding_method == 2) { $funding_method_formatted .= get_string('prepaid', 'local_obu_application'); } else { $funding_method_formatted .= get_string('contract', 'local_obu_application'); } } $funding_method_formatted .= ')'; } $funder_name_formatted = $data->record->funder_name; $invoice_address = $data->record->invoice_address; if ($approval_sought == 2) { // Funder $funder_name_formatted = $USER->firstname . ' ' . $USER->lastname; if ($data->record->funding_organisation != '') { // Get the address to use as the default $organisation = read_organisation($data->record->funding_id); $invoice_address = $organisation->address; } } $fields = ['name' => $data->record->title . ' ' . $data->record->firstname . ' ' . $data->record->lastname, 'title' => $data->record->title, 'firstname' => $data->record->firstname, 'lastname' => $data->record->lastname, 'address_1' => $data->record->address_1, 'address_2' => $data->record->address_2, 'address_3' => $data->record->address_3, 'town' => $data->record->town, 'county' => $data->record->county, 'postcode' => $data->record->postcode, 'phone' => $data->record->phone, 'email' => $data->record->email, 'birthdate' => $birthdate_formatted, 'nationality' => $data->record->nationality, 'p16school' => $data->record->p16school, 'p16schoolperiod' => $data->record->p16schoolperiod, 'p16fe' => $data->record->p16fe, 'p16feperiod' => $data->record->p16feperiod, 'training' => $data->record->training, 'trainingperiod' => $data->record->trainingperiod, 'prof_level' => $data->record->prof_level, 'prof_award' => $data->record->prof_award, 'prof_date_formatted' => $prof_date_formatted, 'emp_place' => $data->record->emp_place, 'emp_area' => $data->record->emp_area, 'emp_title' => $data->record->emp_title, 'emp_prof' => $data->record->emp_prof, 'prof_reg_no' => $data->record->prof_reg_no, 'criminal_record_formatted' => $criminal_record_formatted, 'course_name' => $data->record->course_code . ' ' . $data->record->course_name, 'course_date' => $data->record->course_date, 'statement' => $data->record->statement, 'self_funding_formatted' => $self_funding_formatted, 'manager_email' => $data->record->manager_email, 'declaration_formatted' => $declaration_formatted, 'funding_method' => $funding_method_formatted, 'funding_organisation' => $data->record->funding_organisation, 'funder_name' => $funder_name_formatted, 'invoice_ref' => $data->record->invoice_ref, 'invoice_address' => $invoice_address, 'invoice_email' => $data->record->invoice_email, 'invoice_phone' => $data->record->invoice_phone, 'invoice_contact' => $data->record->invoice_contact]; $this->set_data($fields); } // Start with the required hidden fields $mform->addElement('hidden', 'id', $data->record->id); $mform->setType('id', PARAM_RAW); $mform->addElement('hidden', 'approval_state', $data->record->approval_state); $mform->setType('approval_state', PARAM_RAW); $mform->addElement('hidden', 'approval_level', $data->record->approval_level); $mform->setType('approval_level', PARAM_RAW); $mform->addElement('hidden', 'nhs_trust', $data->record->funding_organisation); $mform->setType('nhs_trust', PARAM_RAW); // Our own hidden field (for use in form validation) $mform->addElement('hidden', 'self_funding', $data->record->self_funding); $mform->setType('self_funding', PARAM_RAW); // This 'dummy' element has two purposes: // - To force open the Moodle Forms invisible fieldset outside of any table on the form (corrupts display otherwise) // - To let us inform the user that there are validation errors without them having to scroll down further $mform->addElement('static', 'form_errors'); // Application status if (!empty($data->status_text)) { $mform->addElement('header', 'status_head', get_string('status', 'local_obu_application'), ''); $mform->setExpanded('status_head'); $mform->addElement('html', '<p /><strong>' . $data->status_text . '</strong>'); // output any status text } // Contact details if ($data->button_text == 'approve') { $mform->addElement('header', 'contactdetails', get_string('applicantdetails', 'local_obu_application'), ''); $mform->setExpanded('contactdetails'); } else { $mform->addElement('header', 'contactdetails', get_string('contactdetails', 'local_obu_application'), ''); } $mform->addElement('static', 'name', get_string('name', 'local_obu_application')); if ($approval_sought == 0 || $approval_sought == 3) { $mform->addElement('static', 'address_1', get_string('address_1', 'local_obu_application')); $mform->addElement('static', 'address_2', get_string('address_2', 'local_obu_application')); $mform->addElement('static', 'address_3', get_string('address_3', 'local_obu_application')); $mform->addElement('static', 'town', get_string('town', 'local_obu_application')); $mform->addElement('static', 'county', get_string('county', 'local_obu_application')); $mform->addElement('static', 'postcode', get_string('postcode', 'local_obu_application')); } $mform->addElement('static', 'phone', get_string('phone', 'local_obu_application')); $mform->addElement('static', 'email', get_string('email')); if ($approval_sought == 0 || $approval_sought == 3) { // Birth details $mform->addElement('header', 'birth_head', get_string('birth_head', 'local_obu_application'), ''); if ($data->button_text == 'approve') { $mform->setExpanded('birth_head'); } $mform->addElement('static', 'birthdate', get_string('birthdate', 'local_obu_application')); $mform->addElement('static', 'nationality', get_string('nationality', 'local_obu_application')); // Education $mform->addElement('header', 'education_head', get_string('education_head', 'local_obu_application'), ''); if ($data->button_text == 'approve') { $mform->setExpanded('education_head'); } $mform->addElement('static', 'p16school', get_string('p16school', 'local_obu_application')); $mform->addElement('static', 'p16schoolperiod', get_string('period', 'local_obu_application')); $mform->addElement('static', 'p16fe', get_string('p16fe', 'local_obu_application')); $mform->addElement('static', 'p16feperiod', get_string('period', 'local_obu_application')); $mform->addElement('static', 'training', get_string('training', 'local_obu_application')); $mform->addElement('static', 'trainingperiod', get_string('period', 'local_obu_application')); // Professional qualifications $mform->addElement('header', 'prof_qual_head', get_string('prof_qual_head', 'local_obu_application'), ''); if ($data->button_text == 'approve') { $mform->setExpanded('prof_qual_head'); } $mform->addElement('static', 'prof_level', get_string('prof_level', 'local_obu_application')); $mform->addElement('static', 'prof_award', get_string('prof_award', 'local_obu_application')); $mform->addElement('static', 'prof_date_formatted', get_string('prof_date', 'local_obu_application')); // Current employment $mform->addElement('header', 'employment_head', get_string('employment_head', 'local_obu_application'), ''); if ($data->button_text == 'approve') { $mform->setExpanded('employment_head'); } $mform->addElement('static', 'emp_place', get_string('emp_place', 'local_obu_application')); $mform->addElement('static', 'emp_area', get_string('emp_area', 'local_obu_application')); $mform->addElement('static', 'emp_title', get_string('emp_title', 'local_obu_application')); $mform->addElement('static', 'emp_prof', get_string('emp_prof', 'local_obu_application')); // Professional registration $mform->addElement('header', 'prof_reg_head', get_string('prof_reg_head', 'local_obu_application'), ''); if ($data->button_text == 'approve') { $mform->setExpanded('prof_reg_head'); } $mform->addElement('static', 'prof_reg_no', get_string('prof_reg_no', 'local_obu_application')); // Criminal record $mform->addElement('header', 'criminal_record_head', get_string('criminal_record_head', 'local_obu_application'), ''); if ($data->button_text == 'approve') { $mform->setExpanded('criminal_record_head'); } $mform->addElement('static', 'criminal_record_formatted', get_string('criminal_record', 'local_obu_application')); } // Course name $mform->addElement('header', 'course_head', get_string('course', 'local_obu_application'), ''); if ($data->button_text == 'approve') { $mform->setExpanded('course_head'); } $mform->addElement('static', 'course_name', get_string('name', 'local_obu_application')); $mform->addElement('static', 'course_date', get_string('course_date', 'local_obu_application')); // Supporting statement $mform->addElement('header', 'statement_head', get_string('statement_head', 'local_obu_application'), ''); if ($data->button_text == 'approve') { $mform->setExpanded('statement_head'); } $mform->addElement('static', 'statement', get_string('statement', 'local_obu_application')); if ($approval_sought == 0 || $approval_sought == 3) { // Supplementary course information (if any) unpack_supplement_data($data->record->supplement_data, $fields); if (!empty($fields)) { $supplement = read_supplement_form($fields['supplement'], $fields['version']); if ($supplement !== false) { $mform->addElement('header', 'supplement_head', get_string('course_supplement', 'local_obu_application'), ''); if ($data->button_text == 'approve') { $mform->setExpanded('supplement_head'); } $this->supplement_display($supplement, $fields); } } } if ($approval_sought == 0 && $data->record->approval_level == 1) { // Manager to approve $mform->addElement('header', 'manager_head', get_string('manager_to_approve', 'local_obu_application'), ''); $mform->addElement('static', 'manager_email', get_string('email')); } if ($approval_sought == 0 || $approval_sought == 3) { // Declaration $mform->addElement('header', 'declaration_head', get_string('declaration', 'local_obu_application'), ''); if ($data->button_text == 'approve') { $mform->setExpanded('declaration_head'); } $mform->addElement('static', 'self_funding_formatted', get_string('self_funding', 'local_obu_application')); $mform->addElement('static', 'declaration_formatted', get_string('declaration', 'local_obu_application')); } if ($approval_sought > 0 && $data->record->self_funding == '1') { $mform->addElement('html', '<h2>' . get_string('self_funding', 'local_obu_application') . ' ' . get_string('applicant', 'local_obu_application') . '</h2>'); } else { if ($approval_sought == 1 && $data->record->self_funding == '0') { // Approving manager must enter either the organisation or email of funder to approve $mform->addElement('static', 'funding', ''); $mform->closeHeaderBefore('funding'); $mform->addElement('html', '<h1>' . get_string('funding_organisation', 'local_obu_application') . '</h1>'); $options = []; if ($data->record->funding_organisation == '') { $options['-1'] = get_string('select', 'local_obu_application'); } foreach ($data->organisations as $organisation_id => $organisation_name) { $options[$organisation_id] = $organisation_name; } $options['0'] = get_string('other', 'local_obu_application'); $mform->addElement('select', 'funding_organisation', get_string('organisation', 'local_obu_application'), $options, null); $mform->addElement('static', 'funding_text', get_string('funding_text', 'local_obu_application')); $mform->addElement('text', 'funder_email', get_string('email'), 'size="40" maxlength="100"'); $mform->setType('funder_email', PARAM_RAW_TRIMMED); $mform->disabledIf('funder_email', 'funding_organisation', 'neq', '0'); $mform->addElement('text', 'funder_email2', get_string('confirm_email', 'local_obu_application'), 'size="40" maxlength="100"'); $mform->setType('funder_email2', PARAM_RAW_TRIMMED); $mform->disabledIf('funder_email2', 'funding_organisation', 'neq', '0'); } else { if ($approval_sought > 1 && $data->record->self_funding == '0') { // Approving funder must enter the funding details and HLS approver must see them if ($approval_sought == 2) { // Funder $mform->addElement('static', 'funding', ''); $mform->closeHeaderBefore('funding'); $mform->addElement('html', '<h1>' . get_string('funding', 'local_obu_application') . '</h1>'); if ($data->record->funding_organisation != '') { // Must be an organisation previously selected by the manager $mform->addElement('text', 'funder_name', get_string('funder_name', 'local_obu_application'), 'size="40" maxlength="100"'); $mform->setType('funder_name', PARAM_TEXT); $options = []; if ($data->record->funding_method == 0) { $options['0'] = get_string('select', 'local_obu_application'); } $options['1'] = get_string('invoice', 'local_obu_application'); $options['2'] = get_string('prepaid', 'local_obu_application'); $options['3'] = get_string('contract', 'local_obu_application'); $mform->addElement('select', 'funding_method', get_string('funding_method', 'local_obu_application'), $options); $mform->addElement('static', 'invoice_text', get_string('invoice_text', 'local_obu_application')); $mform->addElement('text', 'invoice_ref', get_string('invoice_ref', 'local_obu_application'), 'size="40" maxlength="100"'); $mform->setType('invoice_ref', PARAM_TEXT); $mform->disabledIf('invoice_ref', 'funding_method', 'neq', '1'); $mform->addElement('textarea', 'invoice_address', get_string('address'), 'cols="40" rows="5"'); $mform->setType('invoice_address', PARAM_TEXT); $mform->disabledIf('invoice_address', 'funding_method', 'neq', '1'); $mform->addElement('text', 'invoice_email', get_string('email'), 'size="40" maxlength="100"'); $mform->setType('invoice_email', PARAM_RAW_TRIMMED); $mform->disabledIf('invoice_email', 'funding_method', 'neq', '1'); $mform->addElement('text', 'invoice_phone', get_string('phone', 'local_obu_application'), 'size="40" maxlength="100"'); $mform->setType('invoice_phone', PARAM_TEXT); $mform->disabledIf('invoice_phone', 'funding_method', 'neq', '1'); $mform->addElement('text', 'invoice_contact', get_string('invoice_contact', 'local_obu_application'), 'size="40" maxlength="100"'); $mform->setType('invoice_contact', PARAM_TEXT); $mform->disabledIf('invoice_contact', 'funding_method', 'neq', '1'); } else { // 'Other Organisation' (must be payable by invoice) $mform->addElement('text', 'funding_organisation', get_string('organisation', 'local_obu_application'), 'size="40" maxlength="100"'); $mform->setType('funding_organisation', PARAM_TEXT); $mform->addElement('text', 'invoice_ref', get_string('invoice_ref', 'local_obu_application'), 'size="40" maxlength="100"'); $mform->setType('invoice_ref', PARAM_TEXT); $mform->addElement('textarea', 'invoice_address', get_string('address'), 'cols="40" rows="5"'); $mform->setType('invoice_address', PARAM_TEXT); $mform->addElement('text', 'invoice_email', get_string('email'), 'size="40" maxlength="100"'); $mform->setType('invoice_email', PARAM_RAW_TRIMMED); $mform->addElement('text', 'invoice_phone', get_string('phone', 'local_obu_application'), 'size="40" maxlength="100"'); $mform->setType('invoice_phone', PARAM_TEXT); $mform->addElement('text', 'invoice_contact', get_string('invoice_contact', 'local_obu_application'), 'size="40" maxlength="100"'); $mform->setType('invoice_contact', PARAM_TEXT); } } else { // HLS $mform->addElement('html', '<h1>' . get_string('funding', 'local_obu_application') . '</h1>'); $mform->addElement('static', 'funding_method', get_string('funding_method', 'local_obu_application')); $mform->addElement('static', 'funding_organisation', get_string('organisation', 'local_obu_application')); if ($data->record->funding_method > 0) { // NHS trust $mform->addElement('static', 'funder_name', get_string('funder_name', 'local_obu_application')); } if ($data->record->funding_method < 2) { // By invoice $mform->addElement('static', 'invoice_ref', get_string('invoice_ref', 'local_obu_application')); $mform->addElement('static', 'invoice_address', get_string('address')); $mform->addElement('static', 'invoice_email', get_string('email')); $mform->addElement('static', 'invoice_phone', get_string('phone', 'local_obu_application')); $mform->addElement('static', 'invoice_contact', get_string('invoice_contact', 'local_obu_application')); } } } } } // Options $buttonarray = array(); if ($data->button_text != 'cancel') { $buttonarray[] =& $mform->createElement('submit', 'submitbutton', get_string($data->button_text, 'local_obu_application')); } if ($data->button_text != 'continue') { if ($data->button_text == 'approve') { $mform->addElement('static', 'approval', ''); $mform->closeHeaderBefore('approval'); $mform->addElement('html', '<h1>' . get_string('approval_head', 'local_obu_application') . '</h1>'); $mform->addElement('text', 'comment', get_string('comment', 'local_obu_application'), 'size="40" maxlength="100"'); $mform->setType('comment', PARAM_TEXT); $buttonarray[] =& $mform->createElement('submit', 'rejectbutton', get_string('reject', 'local_obu_application')); if ($approval_sought == 3 && has_capability('local/obu_application:admin', context_system::instance())) { // HLS administrator $buttonarray[] =& $mform->createElement('submit', 'amendcoursebutton', get_string('amend_course', 'local_obu_application')); $buttonarray[] =& $mform->createElement('submit', 'amendfundingbutton', get_string('amend_funding', 'local_obu_application')); } } $buttonarray[] =& $mform->createElement('cancel'); } $mform->addGroup($buttonarray, 'buttonarray', '', array(' '), false); $mform->closeHeaderBefore('buttonarray'); }
if ($record === false || $record->birthdate == 0) { // Must have completed the profile $message = get_string('complete_profile', 'local_obu_application'); } else { if (!isset($record->course_code) || $record->course_code === '') { // They must complete the course $message = get_string('complete_course', 'local_obu_application'); } else { $course = read_course_record($record->course_code); if ($course->supplement != '') { $supplement = get_supplement_form($course->supplement, is_siteadmin()); if (!$supplement) { $message = get_string('invalid_data', 'local_obu_application'); // Shouldn't be here } else { unpack_supplement_data($record->supplement_data, $fields); if ($fields['supplement'] != $supplement->ref || $fields['version'] != $supplement->version) { $message = get_string('complete_course', 'local_obu_application'); // Shouldn't be here } } } } } $parameters = ['organisations' => get_organisations(), 'record' => $record]; $mform = new apply_form(null, $parameters); if ($mform->is_cancelled()) { redirect($home); } else { if ($mform_data = $mform->get_data()) { if ($mform_data->submitbutton == get_string('apply', 'local_obu_application')) {