function get_programme_lead($student_id = 0, $modular = false, $index = 0) { global $DB; // Get all courses for this student (normally 1 but 2 for joint honours students) $courses = get_current_courses($student_id, $modular); if (empty($courses)) { return 0; } $programme_leads = array(); foreach ($courses as $course_id => $course_name) { $context = context_course::instance($course_id); if ($context == null) { continue; } // Get all the users enrolled on the course (with their enrollment methods) that have the Programme Lead role $sql = 'SELECT ue.userid, e.enrol' . ' FROM {enrol} e' . ' JOIN {user_enrolments} ue ON ue.enrolid = e.id' . ' JOIN {role_assignments} ra ON ra.userid = ue.userid' . ' JOIN {role} r ON r.id = ra.roleid' . ' WHERE e.courseid = ? AND ra.contextid = ? AND r.shortname = "programme_lead"' . ' ORDER BY ue.timecreated'; $db_ret = $DB->get_records_sql($sql, array($course_id, $context->id)); // Find the latest PL enrollment (giving precedence to external ones) $programme_lead = 0; $external = false; foreach ($db_ret as $row) { if ($row->enrol == 'databaseextended') { $programme_lead = $row->userid; $external = true; } else { if (!$external) { $programme_lead = $row->userid; } } } // Store them if ($programme_lead > 0 && !in_array($programme_lead, $programme_leads, true)) { $programme_leads[] = $programme_lead; } } if (empty($programme_leads[$index])) { return 0; } return $programme_leads[$index]; }
$start_selected = 6; } break; case 'adviser': if (empty($adviser)) { $adviser = get_advisers($USER->id); } break; case 'supervisor': if (empty($supervisor)) { $supervisor = get_supervisors($USER->id); } break; case 'course': if (empty($course)) { $course = get_current_courses(0, $form->modular); } break; case 'not_enroled': if (empty($not_enroled)) { $not_enroled = get_current_modules(0, null, $USER->id, false); } break; case 'enroled': if (empty($enroled)) { $enroled = get_current_modules(0, null, $USER->id, true); } break; case 'study_mode': if (empty($study_mode)) { $study_mode = get_study_modes();
function validation($data, $files) { $errors = parent::validation($data, $files); // Ensure we don't miss errors from any higher-level validation // Get valid dates for +- 5 years (MMMYY format) $start_dates = get_dates(date('m'), date('y'), 60, 60); // Check if at least one field in a required group has an entry if (empty($this->required_group)) { $group_entry = true; } else { $group_entry = false; foreach ($this->required_group as $key) { if ($data[$key] != '') { $group_entry = true; } } } // Do our own validation and add errors to array $required_value = false; foreach ($data as $key => $value) { if ($value == '' && in_array($key, $this->required_field, true)) { $required_value = true; // Leave the field error display to Moodle } else { if (!$group_entry && in_array($key, $this->required_group, true)) { // One of a required group with no entries $errors[$key] = get_string('group_required', 'local_obu_forms'); } else { if ($value == '' && in_array($key, $this->set_group, true) && (array_key_exists($this->check_id, $data) && $data[$this->check_id] == '1')) { // Controlled by a check box $errors[$key] = get_string('value_required', 'local_obu_forms'); } else { if ($value == '' && in_array($key, $this->unset_group, true) && (array_key_exists($this->check_id, $data) && $data[$this->check_id] == '0')) { // Controlled by a check box $errors[$key] = get_string('value_required', 'local_obu_forms'); } else { if ($key == 'adviser') { // They must have selected one if ($value == '0') { // Oh No! They haven't! $errors[$key] = get_string('value_required', 'local_obu_forms'); } } else { if ($key == 'supervisor') { // They must have selected one if ($value == '0') { // Oh No! They haven't! $errors[$key] = get_string('value_required', 'local_obu_forms'); } } else { if ($key == 'course') { // Exact match - should be a current course (programme) code if ($value != '') { // Might not be mandatory $current_courses = get_current_courses(0, $this->_customdata['modular']); if (!in_array(strtoupper($value), $current_courses, true)) { $errors[$key] = get_string('course_not_found', 'local_obu_forms'); } } } else { if (strpos($key, 'module') !== false) { // Validate module code format etcetera if ($value != '') { // Only validate if the field was completed $prefix = strtoupper(substr($value, 0, 1)); $suffix = substr($value, 1); if (strlen($value) != 6 || $prefix != 'C' && $prefix != 'F' && $prefix != 'P' && $prefix != 'U' || !is_numeric($suffix)) { $errors[$key] = get_string('invalid_module_code', 'local_obu_forms'); } else { if ($this->_customdata['modular'] && $prefix != 'U') { $errors[$key] = get_string('invalid_module_code', 'local_obu_forms'); } else { if ($key == 'module') { // Exact match - should be a current module $current_modules = get_current_modules(); if (!in_array($prefix . $suffix, $current_modules, true)) { $errors[$key] = get_string('module_not_found', 'local_obu_forms'); } } } } // Check that any associated module fields have also been completed $pos = strpos($key, 'module'); $prefix = substr($key, 0, $pos); $suffix = substr($key, $pos + 6); $key = $prefix . 'title' . $suffix; if (array_key_exists($key, $data) && $data[$key] == '') { $errors[$key] = get_string('value_required', 'local_obu_forms'); } $key = $prefix . 'start' . $suffix; if (array_key_exists($key, $data) && $data[$key] == '') { $errors[$key] = get_string('value_required', 'local_obu_forms'); } $key = $prefix . 'mark' . $suffix; if (array_key_exists($key, $data) && $data[$key] == '') { $errors[$key] = get_string('value_required', 'local_obu_forms'); } $key = $prefix . 'credit' . $suffix; if (array_key_exists($key, $data) && $data[$key] == '') { $errors[$key] = get_string('value_required', 'local_obu_forms'); } } } else { if (strpos($key, 'start') !== false) { // Validate start date format if ($value != '') { // Only validate if the field was completed $month = strtoupper(substr($value, 0, 3)); $year = substr($value, 3); if (strlen($value) != 5 || is_numeric($month) || !is_numeric($year)) { $errors[$key] = get_string('invalid_date_format', 'local_obu_forms'); } else { if (!in_array($month . $year, $start_dates, true)) { $errors[$key] = get_string('invalid_start_date', 'local_obu_forms'); } } } } } } } } } } } } } if ($required_value || !empty($errors)) { $errors['form_error'] = get_string('form_error', 'local_obu_forms'); } return $errors; }