|
|
|
@ -23,10 +23,23 @@ $interbreadcrumb[] = array( |
|
|
|
|
$selectedSession = isset($_POST['session']) && !empty($_POST['session']) ? intval($_POST['session']) : 0; |
|
|
|
|
$selectedCourse = isset($_POST['course']) && !empty($_POST['course']) ? intval($_POST['course']) : 0; |
|
|
|
|
$selectedMonth = isset($_POST['month']) && !empty($_POST['month']) ? intval($_POST['month']) : 0; |
|
|
|
|
$selectedYear = isset($_POST['year']) && !empty($_POST['year']) ? $_POST['year'] : null; |
|
|
|
|
$selectedYear = isset($_POST['year']) && !empty($_POST['year']) ? trim($_POST['year']) : null; |
|
|
|
|
$selectedStudent = isset($_POST['student']) && !empty($_POST['student']) ? intval($_POST['student']) : 0; |
|
|
|
|
|
|
|
|
|
$userId = api_get_user_id(); |
|
|
|
|
$sessions = SessionManager::getSessionsCoachedByUser($userId); |
|
|
|
|
|
|
|
|
|
$sessions = $courses = $months = $students = [0 => get_lang('Select')]; |
|
|
|
|
|
|
|
|
|
if (api_is_student_boss()) { |
|
|
|
|
$userList = GroupPortalManager::getGroupUsersByUser($userId); |
|
|
|
|
$sessionsList = SessionManager::getSessionsFollowedForGroupAdmin($userId); |
|
|
|
|
} else { |
|
|
|
|
$sessionsList = SessionManager::getSessionsCoachedByUser($userId); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
foreach ($sessionsList as $session) { |
|
|
|
|
$sessions[$session['id']] = $session['name']; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ($selectedSession > 0) { |
|
|
|
|
if (!SessionManager::isValidId($selectedSession)) { |
|
|
|
@ -36,32 +49,39 @@ if ($selectedSession > 0) { |
|
|
|
|
exit; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$courses = SessionManager::get_course_list_by_session_id($selectedSession); |
|
|
|
|
$coursesList = SessionManager::get_course_list_by_session_id($selectedSession); |
|
|
|
|
|
|
|
|
|
if (is_array($courses)) { |
|
|
|
|
foreach ($courses as &$course) { |
|
|
|
|
if (is_array($coursesList)) { |
|
|
|
|
foreach ($coursesList as &$course) { |
|
|
|
|
$course['real_id'] = $course['id']; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
$courses = CourseManager::get_courses_list_by_user_id($userId); |
|
|
|
|
if (api_is_student_boss()) { |
|
|
|
|
$coursesList = CourseManager::getCoursesFollowedByGroupAdmin($userId); |
|
|
|
|
} else { |
|
|
|
|
$coursesList = CourseManager::get_courses_list_by_user_id($userId); |
|
|
|
|
|
|
|
|
|
if (is_array($courses)) { |
|
|
|
|
foreach ($courses as &$course) { |
|
|
|
|
if (is_array($coursesList)) { |
|
|
|
|
foreach ($coursesList as &$course) { |
|
|
|
|
$courseInfo = api_get_course_info_by_id($course['real_id']); |
|
|
|
|
|
|
|
|
|
$course = array_merge($course, $courseInfo); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$months = array(); |
|
|
|
|
foreach ($coursesList as $course) { |
|
|
|
|
if (isset($course['real_id'])) { |
|
|
|
|
$courses[$course['real_id']] = $course['title']; |
|
|
|
|
} else { |
|
|
|
|
$courses[$course['id']] = $course['title']; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for ($key = 1; $key <= 12; $key++) { |
|
|
|
|
$months[] = array( |
|
|
|
|
'key' => $key, |
|
|
|
|
'name' => sprintf("%02d", $key) |
|
|
|
|
); |
|
|
|
|
$months[$key] = sprintf("%02d", $key); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$exportAllLink = null; |
|
|
|
@ -69,6 +89,7 @@ $certificateStudents = array(); |
|
|
|
|
|
|
|
|
|
$searchSessionAndCourse = $selectedSession > 0 && $selectedCourse > 0; |
|
|
|
|
$searchCourseOnly = $selectedSession <= 0 && $selectedCourse > 0; |
|
|
|
|
$searchStudentOnly = $selectedStudent > 0; |
|
|
|
|
|
|
|
|
|
if ($searchSessionAndCourse || $searchCourseOnly) { |
|
|
|
|
$selectedCourseInfo = api_get_course_info_by_id($selectedCourse); |
|
|
|
@ -98,14 +119,23 @@ if ($searchSessionAndCourse || $searchCourseOnly) { |
|
|
|
|
"cat_id" => $gradebook->get_id() |
|
|
|
|
)); |
|
|
|
|
|
|
|
|
|
$sessionName = api_get_session_name($selectedSession); |
|
|
|
|
$courseName = api_get_course_info($selectedCourseInfo['code'])['title']; |
|
|
|
|
|
|
|
|
|
$studentList = GradebookUtils::get_list_users_certificates($gradebook->get_id()); |
|
|
|
|
|
|
|
|
|
$certificateStudents = array(); |
|
|
|
|
|
|
|
|
|
if (is_array($studentList) && !empty($studentList)) { |
|
|
|
|
foreach ($studentList as $student) { |
|
|
|
|
if (api_is_student_boss() && !in_array($student['user_id'], $userList)) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$certificateStudent = array( |
|
|
|
|
'fullName' => api_get_person_name($student['firstname'], $student['lastname']), |
|
|
|
|
'sessionName' => $sessionName, |
|
|
|
|
'courseName' => $courseName, |
|
|
|
|
'certificates' => array() |
|
|
|
|
); |
|
|
|
|
|
|
|
|
@ -133,7 +163,7 @@ if ($searchSessionAndCourse || $searchCourseOnly) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
} elseif ($selectedMonth > 0 && !empty($selectedYear)) { |
|
|
|
|
if ($creationMonthYear != sprintf("%d %s", $selectedMonth, $selectedYear)) { |
|
|
|
|
if ($creationMonthYear != sprintf("%02d %s", $selectedMonth, $selectedYear)) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -144,6 +174,62 @@ if ($searchSessionAndCourse || $searchCourseOnly) { |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (count($certificateStudent['certificates']) > 0) { |
|
|
|
|
$certificateStudents[] = $certificateStudent; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} elseif ($searchStudentOnly) { |
|
|
|
|
$selectedStudentInfo = api_get_user_info($selectedStudent); |
|
|
|
|
|
|
|
|
|
if (empty($selectedStudentInfo)) { |
|
|
|
|
Session::write('reportErrorMessage', get_lang('NoUser')); |
|
|
|
|
|
|
|
|
|
Header::location($selfUrl); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$sessionList = SessionManager::getSessionsFollowedByUser($selectedStudent); |
|
|
|
|
|
|
|
|
|
foreach ($sessionList as $session) { |
|
|
|
|
$sessionCourseList = SessionManager::get_course_list_by_session_id($session['id']); |
|
|
|
|
|
|
|
|
|
foreach ($sessionCourseList as $sessionCourse) { |
|
|
|
|
$gradebookCategories = Category::load(null, null, $sessionCourse['code'], null, false, $session['id']); |
|
|
|
|
|
|
|
|
|
$gradebook = null; |
|
|
|
|
|
|
|
|
|
if (!empty($gradebookCategories)) { |
|
|
|
|
$gradebook = current($gradebookCategories); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!is_null($gradebook)) { |
|
|
|
|
$sessionName = $session['name']; |
|
|
|
|
$courseName = $sessionCourse['title']; |
|
|
|
|
|
|
|
|
|
$certificateStudent = [ |
|
|
|
|
'fullName' => $selectedStudentInfo['complete_name'], |
|
|
|
|
'sessionName' => $sessionName, |
|
|
|
|
'courseName' => $courseName, |
|
|
|
|
'certificates' => [] |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
$studentCertificates = GradebookUtils::get_list_gradebook_certificates_by_user_id( |
|
|
|
|
$selectedStudent, |
|
|
|
|
$gradebook->get_id() |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
if (!is_array($studentCertificates) || empty($studentCertificates)) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
foreach ($studentCertificates as $certificate) { |
|
|
|
|
$certificateStudent['certificates'][] = array( |
|
|
|
|
'createdAt' => api_convert_and_format_date($certificate['created_at']), |
|
|
|
|
'id' => $certificate['id'] |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (count($certificateStudent['certificates']) > 0) { |
|
|
|
|
$certificateStudents[] = $certificateStudent; |
|
|
|
|
} |
|
|
|
@ -159,10 +245,54 @@ if (Session::has('reportErrorMessage')) { |
|
|
|
|
$template->assign('errorMessage', Session::read('reportErrorMessage')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$template->assign('selectedSession', $selectedSession); |
|
|
|
|
$template->assign('selectedCourse', $selectedCourse); |
|
|
|
|
$template->assign('selectedMonth', $selectedMonth); |
|
|
|
|
$template->assign('selectedYear', $selectedYear); |
|
|
|
|
$searchBySessionCourseDateForm = new FormValidator( |
|
|
|
|
'certificate_report_form', |
|
|
|
|
'post', |
|
|
|
|
api_get_path(WEB_CODE_PATH) . 'gradebook/certificate_report.php' |
|
|
|
|
); |
|
|
|
|
$searchBySessionCourseDateForm->addSelect('session', get_lang('Sessions'), $sessions, ['id' => 'session']); |
|
|
|
|
$searchBySessionCourseDateForm->addSelect('course', get_lang('Courses'), $courses, ['id' => 'course']); |
|
|
|
|
$searchBySessionCourseDateForm->addGroup( |
|
|
|
|
[ |
|
|
|
|
$searchBySessionCourseDateForm->createElement('select', 'month', null, $months, ['id' => 'month']), |
|
|
|
|
$searchBySessionCourseDateForm->createElement( |
|
|
|
|
'text', |
|
|
|
|
'year', |
|
|
|
|
null, |
|
|
|
|
['id' => 'year', 'placeholder' => get_lang('Year')] |
|
|
|
|
) |
|
|
|
|
], |
|
|
|
|
null, |
|
|
|
|
get_lang('Date') |
|
|
|
|
); |
|
|
|
|
$searchBySessionCourseDateForm->addButtonSearch(); |
|
|
|
|
$searchBySessionCourseDateForm->setDefaults([ |
|
|
|
|
'session' => $selectedSession, |
|
|
|
|
'course' => $selectedCourse, |
|
|
|
|
'month' => $selectedMonth, |
|
|
|
|
'year' => $selectedYear |
|
|
|
|
]); |
|
|
|
|
|
|
|
|
|
if (api_is_student_boss()) { |
|
|
|
|
foreach ($userList as $studentId) { |
|
|
|
|
$students[$studentId] = api_get_user_info($studentId)['complete_name_with_username']; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$searchByStudentForm = new FormValidator( |
|
|
|
|
'certificate_report_form', |
|
|
|
|
'post', |
|
|
|
|
api_get_path(WEB_CODE_PATH) . 'gradebook/certificate_report.php' |
|
|
|
|
); |
|
|
|
|
$searchByStudentForm->addSelect('student', get_lang('Students'), $students, ['id' => 'student']); |
|
|
|
|
$searchByStudentForm->addButtonSearch(); |
|
|
|
|
$searchByStudentForm->setDefaults([ |
|
|
|
|
'student' => $selectedStudent |
|
|
|
|
]); |
|
|
|
|
|
|
|
|
|
$template->assign('searchByStudentForm', $searchByStudentForm->returnForm()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$template->assign('searchBySessionCourseDateForm', $searchBySessionCourseDateForm->returnForm()); |
|
|
|
|
$template->assign('sessions', $sessions); |
|
|
|
|
$template->assign('courses', $courses); |
|
|
|
|
$template->assign('months', $months); |
|
|
|
|