user_id = $user_id; $this->path = 'block_student'; if ($this->is_block_visible_for_user($user_id)) { $this->students = UserManager::get_users_followed_by_drh($user_id, STUDENT); } } /** * This method check if a user is allowed to see the block inside dashboard interface * @param int User id * @return bool Is block visible for user */ public function is_block_visible_for_user($user_id) { $user_info = api_get_user_info($user_id); $user_status = $user_info['status']; $is_block_visible_for_user = false; if (UserManager::is_admin($user_id) || in_array($user_status, $this->permission)) { $is_block_visible_for_user = true; } return $is_block_visible_for_user; } /** * This method return content html containing information about students and its position for showing it inside dashboard interface * it's important to use the name 'get_block' for beeing used from dashboard controller * @return array column and content html */ public function get_block() { global $charset; $column = 1; $data = array(); $student_content_html = $this->get_students_content_html_for_drh(); $html = '
  • '.get_lang('StudentsInformationsList').'

    '.$student_content_html.'
  • '; $data['column'] = $column; $data['content_html'] = $html; return $data; } /** * This method return a content html, it's used inside get_block method for showing it inside dashboard interface * @return string content html */ public function get_students_content_html_for_platform_admin() { $students = $this->students; $content = '
    '; $content .= '

    '.get_lang('YourStudents').'

    '; $students_table = null; if (count($students) > 0) { $students_table .= ''; $students_table .= ''; $i = 1; foreach ($students as $student) { $courses_by_user = CourseManager::get_courses_list_by_user_id($student['user_id'], true); $count_courses = count($courses_by_user); $rowspan = $count_courses?$count_courses+1:2; if ($i%2 == 0) { $style = ' style="background-color:#F2F2F2" '; } else { $style = ' style="background-color:#FFF" '; } $students_table .= ''; // courses information about the student if (!empty($courses_by_user)) { foreach ($courses_by_user as $course) { $course_code = $course['code']; $course_title = $course['title']; $time = api_time_to_hms(Tracking :: get_time_spent_on_the_course($student['user_id'], $course_code)); $students_table .= ''; } } else { $students_table .= ''; } $i++; } $students_table .= '
    '.get_lang('FirstName').' '.get_lang('LastName').' '.get_lang('CourseInformation').'
    '.get_lang('Courses').' '.get_lang('Time').'
    '.$student['firstname'].' '.$student['lastname'].'
    '.$course_title.' '.$time.'
    '.get_lang('Empty').'
    '; } else { $students_table .= get_lang('ThereIsNoInformationAboutYourStudents'); } $content .= $students_table; if (count($students) > 0) { $content .= '
    '.get_lang('SeeMore').'
    '; } $content .= '
    '; return $content; } public function get_students_content_html_for_drh() { $attendance = new Attendance(); $students = $this->students; $content = '
    '; $content .= '

    '.get_lang('YourStudents').'

    '; $students_table = null; if (count($students) > 0) { $students_table .= ''; $students_table .= ''; $i = 1; foreach ($students as $student) { $student_id = $student['user_id']; $firstname = $student['firstname']; $lastname = $student['lastname']; $username = $student['username']; // get average of faults in attendances by student $results_faults_avg = $attendance->get_faults_average_inside_courses($student_id); if (!empty($results_faults_avg)) { $attendances_faults_avg = ''.$results_faults_avg['faults'].'/'.$results_faults_avg['total'].' ('.$results_faults_avg['porcent'].'%)'; } else { $attendances_faults_avg = '0%'; } $courses_by_user = CourseManager::get_courses_list_by_user_id($student_id, true); $evaluations_avg = 0; $score = $weight = 0; foreach ($courses_by_user as $course) { $course_code = $course['code']; $cats = Category::load(null, null, $course_code, null, null, null, false); $scoretotal = array(); if (isset($cats) && isset($cats[0])) { $scoretotal= $cats[0]->calc_score($student_id, $course_code); } if (!empty($scoretotal)) { $score += $scoretotal[0]; $weight += $scoretotal[1]; } } if (!empty($weight)) { $evaluations_avg = ''.round($score,2).'/'.round($weight,2).'('.round(($score / $weight) * 100,2) . ' %)'; } if ($i%2 == 0) { $class_tr = 'row_odd'; } else { $class_tr = 'row_even'; } $students_table .= ''; $i++; } $students_table .= '
    '.get_lang('User').' '.get_lang('AttendancesFaults').' '.get_lang('Evaluations').'
    '.api_get_person_name($firstname, $lastname).' ('.$username.') '.$attendances_faults_avg.' '.$evaluations_avg.'
    '; } else { $students_table .= get_lang('ThereIsNoInformationAboutYourStudents'); } $content .= $students_table; if (count($students) > 0) { $content .= '
    '.get_lang('SeeMore').'
    '; } $content .= '
    '; return $content; } /** * Get number of students * @return int */ function get_number_of_students() { return count($this->students); } }