Пример #1
0
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];
}
Пример #2
0
         $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();
Пример #3
0
 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;
 }