diff --git a/main/gradebook/certificate_report.php b/main/gradebook/certificate_report.php new file mode 100644 index 0000000000..a1cc91dbf0 --- /dev/null +++ b/main/gradebook/certificate_report.php @@ -0,0 +1,178 @@ + + * @package chamilo.gradebook + */ +use \ChamiloSession as Session; + +$language_file = array('gradebook', 'exercice'); +$cidReset = true; + +require_once '../inc/global.inc.php'; + +$this_section = SECTION_TRACKING; + +api_block_anonymous_users(); + +$interbreadcrumb[] = array( + "url" => api_get_path(WEB_CODE_PATH) . "mySpace/index.php", + "name" => get_lang("MySpace") +); + +$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; + +$userId = api_get_user_id(); +$sessions = SessionManager::getSessionsCoachedByUser($userId); + +if ($selectedSession > 0) { + if (!SessionManager::isValidId($selectedSession)) { + Session::write('reportErrorMessage', get_lang('NoSession')); + + header("Location: $selfUrl"); + exit; + } + + $courses = SessionManager::get_course_list_by_session_id($selectedSession); + + if (is_array($courses)) { + foreach ($courses as &$course) { + $course['real_id'] = $course['id']; + } + } +} else { + $courses = CourseManager::get_courses_list_by_user_id($userId); + + if (is_array($courses)) { + foreach ($courses as &$course) { + $courseInfo = api_get_course_info_by_id($course['real_id']); + + $course = array_merge($course, $courseInfo); + } + } +} + +$months = array(); + +for ($key = 1; $key <= 12; $key++) { + $months[] = array( + 'key' => $key, + 'name' => sprintf("%02d", $key) + ); +} + +$exportAllLink = null; +$certificateStudents = array(); + +$searchSessionAndCourse = $selectedSession > 0 && $selectedCourse > 0; +$searchCourseOnly = $selectedSession <= 0 && $selectedCourse > 0; + +if ($searchSessionAndCourse || $searchCourseOnly) { + $selectedCourseInfo = api_get_course_info_by_id($selectedCourse); + + if (empty($selectedCourseInfo)) { + Session::write('reportErrorMessage', get_lang('NoCourse')); + + header("Location: $selfUrl"); + exit; + } + + $gradebookCategories = Category::load(null, null, $selectedCourseInfo['code'], null, false, $selectedSession); + + $gradebook = null; + + if (!empty($gradebookCategories)) { + $gradebook = current($gradebookCategories); + } + + if (!is_null($gradebook)) { + $exportAllLink = api_get_path(WEB_CODE_PATH) . "gradebook/gradebook_display_certificate.php?"; + $exportAllLink .= http_build_query(array( + "action" => "export_all_certificates", + "cidReq" => $selectedCourseInfo['code'], + "id_session" => 0, + "gidReq" => 0, + "cat_id" => $gradebook->get_id() + )); + + $studentList = GradebookUtils::get_list_users_certificates($gradebook->get_id()); + + $certificateStudents = array(); + + if (is_array($studentList) && !empty($studentList)) { + foreach ($studentList as $student) { + $certificateStudent = array( + 'fullName' => api_get_person_name($student['firstname'], $student['lastname']), + 'certificates' => array() + ); + + $studentCertificates = GradebookUtils::get_list_gradebook_certificates_by_user_id( + $student['user_id'], + $gradebook->get_id() + ); + + if (!is_array($studentCertificates) || empty($studentCertificates)) { + continue; + } + + foreach ($studentCertificates as $certificate) { + $creationDate = new DateTime($certificate['created_at']); + $creationMonth = $creationDate->format('m'); + $creationYear = $creationDate->format('Y'); + $creationMonthYear = $creationDate->format('m Y'); + + if ($selectedMonth > 0 && empty($selectedYear)) { + if ($creationMonth != $selectedMonth) { + continue; + } + } elseif ($selectedMonth <= 0 && !empty($selectedYear)) { + if ($creationYear != $selectedYear) { + continue; + } + } elseif ($selectedMonth > 0 && !empty($selectedYear)) { + if ($creationMonthYear != sprintf("%d %s", $selectedMonth, $selectedYear)) { + continue; + } + } + + $certificateStudent['certificates'][] = array( + 'createdAt' => api_convert_and_format_date($certificate['created_at']), + 'id' => $certificate['id'] + ); + } + + if (count($certificateStudent['certificates']) > 0) { + $certificateStudents[] = $certificateStudent; + } + } + } + } +} + +/* View */ +$template = new Template(get_lang('GradebookListOfStudentsCertificates')); + +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); +$template->assign('sessions', $sessions); +$template->assign('courses', $courses); +$template->assign('months', $months); +$template->assign('exportAllLink', $exportAllLink); +$template->assign('certificateStudents', $certificateStudents); +$content = $template->fetch("default/gradebook/certificate_report.tpl"); + +$template->assign('content', $content); + +$template->display_one_col_template(); + +Session::erase('reportErrorMessage'); diff --git a/main/mySpace/index.php b/main/mySpace/index.php index ede696a7ff..9e0ee77ce8 100755 --- a/main/mySpace/index.php +++ b/main/mySpace/index.php @@ -6,7 +6,7 @@ * @package chamilo.reporting */ -$language_file = array('registration', 'index', 'tracking', 'admin', 'exercice'); +$language_file = array('registration', 'index', 'tracking', 'admin', 'exercice', 'gradebook'); // resetting the course id $cidReset = true; @@ -150,6 +150,10 @@ if (!empty($session_id) && Display::return_icon('stats.png', get_lang('MyStats'),'',ICON_SIZE_MEDIUM), api_get_path(WEB_CODE_PATH)."auth/my_progress.php" ); + echo Display::url( + Display::return_icon("certificate_list.png", get_lang("GradebookSeeListOfStudentsCertificates"), array(), ICON_SIZE_MEDIUM), + api_get_path(WEB_CODE_PATH) . "gradebook/certificate_report.php" + ); } // Actions menu diff --git a/main/template/default/gradebook/certificate_report.tpl b/main/template/default/gradebook/certificate_report.tpl new file mode 100644 index 0000000000..67f3fdc953 --- /dev/null +++ b/main/template/default/gradebook/certificate_report.tpl @@ -0,0 +1,121 @@ + + +
+ ++ {{ 'ExportAllCertificatesToPDF' | get_lang }} +
+ +{{ 'Student' | get_lang }} | +{{ 'Date' | get_lang }} | +{{ 'Certificate' | get_lang }} | +
---|---|---|
{{ 'Student' | get_lang }} | +{{ 'Date' | get_lang }} | +{{ 'Certificate' | get_lang }} | +
{{ student.fullName }} | +
+ {% for certificate in student.certificates %}
+ {{ certificate.createdAt }} + {% endfor %} + |
+ + {% for certificate in student.certificates %} + {{ 'Certificate' | get_lang }} + {% endfor %} + | +
{{ 'NoResults' | get_lang }}
+{% endif %}