if ($application->approval_state > 0) { // Already finally approved or rejected? $message = get_string('application_unavailable', 'local_obu_application'); } else { $message = ''; } $mform = new mdl_redirect_form(null, $parameters); if ($mform->is_cancelled()) { redirect($home); } if ($mform_data = $mform->get_data()) { if ($mform_data->submitbutton == get_string('save', 'local_obu_application')) { if ($application->approval_level == 1) { $application->manager_email = $approver_email; } else { $application->funder_email = $approver_email; } update_application($application); update_approver($application, $approver_email); // Update the approvals and send notification emails redirect($home); } } echo $OUTPUT->header(); echo $OUTPUT->heading($heading); if ($message) { notice($message, $url); } else { $mform->display(); } echo $OUTPUT->footer();
function update_workflow(&$application, $approved = true, $data = null) { $approver_email = ''; // Update the application record if ($application->approval_level == 0) { // Being submitted /* $application->approval_level = 1; $approver_email = $application->manager_email; } else if ($application->approval_level == 1) { // Manager $application->approval_1_comment = $data->comment; $application->approval_1_date = time(); if (!$approved) { $application->approval_state = 1; // Rejected } else*/ if ($application->self_funding == 0) { $application->approval_level = 2; // Funder $application->funding_id = $data->funding_organisation; if ($application->funding_id == 0) { // 'Other Organisation' $application->funding_organisation = ''; $application->funder_email = $data->funder_email; // Must have been given } else { // A known organisation with a fixed email address $organisation = read_organisation($application->funding_id); $application->funding_organisation = $organisation->name; $application->funder_email = $organisation->email; } $approver_email = $application->funder_email; } else { $application->approval_level = 3; // Brookes $hls = get_complete_user_data('username', 'hls'); $approver_email = $hls->email; } } else { if ($application->approval_level == 2) { // Funder $application->approval_2_comment = $data->comment; $application->approval_2_date = time(); if (!$approved) { $application->approval_state = 1; // Rejected } else { $application->approval_level = 3; // Brookes // Store the funding details if ($application->funding_organisation != '') { // NHS trust (previously selected by the manager) $application->funding_method = $data->funding_method; $application->funder_name = $data->funder_name; if ($application->funding_method == 1) { // Invoice $application->invoice_ref = $data->invoice_ref; $application->invoice_address = $data->invoice_address; $application->invoice_email = $data->invoice_email; $application->invoice_phone = $data->invoice_phone; $application->invoice_contact = $data->invoice_contact; } } else { // Must be an invoice to a non-NHS organisation $application->funding_method = 0; $application->funding_organisation = $data->organisation; $application->invoice_ref = $data->invoice_ref; $application->invoice_address = $data->invoice_address; $application->invoice_email = $data->invoice_email; $application->invoice_phone = $data->invoice_phone; $application->invoice_contact = $data->invoice_contact; } $hls = get_complete_user_data('username', 'hls'); $approver_email = $hls->email; } } else { // Brookes $application->approval_3_comment = $data->comment; $application->approval_3_date = time(); if (!$approved) { $application->approval_state = 1; // Rejected } else { $application->approval_state = 2; // It ends here } } } update_application($application); // Update the stored approval requests and send notification emails update_approver($application, $approver_email); }