Avoid duplication of code - refs #7363

1.10.x
Angel Fernando Quiroz Campos 11 years ago
parent ccbc30fe48
commit aa948fc1e2
  1. 114
      main/gradebook/lib/GradebookUtils.php
  2. 79
      main/gradebook/my_certificates.php

@ -1173,4 +1173,118 @@ class GradebookUtils
WHERE id = '.$id; WHERE id = '.$id;
Database::query($sql); Database::query($sql);
} }
/**
*
* Get the achieved certificates for a user in courses
* @param int $userId The user id
* @param type $includeNonPublicCertificates Whether include the non-plublic certificates
* @return array
*/
public static function getUserCertificatesInCourses($userId, $includeNonPublicCertificates = true)
{
$userId = intval($userId);
$courseList = [];
$courses = CourseManager::get_courses_list_by_user_id($userId);
foreach ($courses as $course) {
if (!$includeNonPublicCertificates) {
$allowPublicCertificates = api_get_course_setting('allow_public_certificates', $course['code']);
if (empty($allowPublicCertificates)) {
continue;
}
}
$courseGradebookCategory = Category::load(null, null, $course['code']);
if (empty($courseGradebookCategory)) {
continue;
}
$courseGradebookId = $courseGradebookCategory[0]->get_id();
$certificateInfo = GradebookUtils::get_certificate_by_user_id($courseGradebookId, $userId);
if (empty($certificateInfo)) {
continue;
}
$courseInfo = api_get_course_info($course['code']);
$courseList[] = [
'course' => $courseInfo['title'],
'score' => $certificateInfo['score_certificate'],
'date' => api_format_date($certificateInfo['created_at'], DATE_FORMAT_SHORT),
'link' => api_get_path(WEB_PATH) . "certificates/index.php?id={$certificateInfo['id']}"
];
}
return $courseList;
}
/**
* Get the achieved certificates for a user in course sessions
* @param int $userId The user id
* @param type $includeNonPublicCertificates Whether include the non-plublic certificates
* @return array
*/
public static function getUserCertificatesInSessions($userId, $includeNonPublicCertificates = true)
{
$userId = intval($userId);
$sessionList = [];
$sessions = SessionManager::get_sessions_by_user($userId);
foreach ($sessions as $session) {
if (empty($session['courses'])) {
continue;
}
$sessionCourses = SessionManager::get_course_list_by_session_id($session['session_id']);
foreach ($sessionCourses as $course) {
if (!$includeNonPublicCertificates) {
$allowPublicCertificates = api_get_course_setting('allow_public_certificates', $course['code']);
if (empty($allowPublicCertificates)) {
continue;
}
}
$courseGradebookCategory = Category::load(
null,
null,
$course['code'],
null,
null,
$session['session_id']
);
if (empty($courseGradebookCategory)) {
continue;
}
$courseGradebookId = $courseGradebookCategory[0]->get_id();
$certificateInfo = GradebookUtils::get_certificate_by_user_id($courseGradebookId, $userId);
if (empty($certificateInfo)) {
continue;
}
$sessionList[] = [
'session' => $session['session_name'],
'course' => $course['title'],
'score' => $certificateInfo['score_certificate'],
'date' => api_format_date($certificateInfo['created_at'], DATE_FORMAT_SHORT),
'link' => api_get_path(WEB_PATH) . "certificates/index.php?id={$certificateInfo['id']}"
];
}
}
return $sessionList;
}
} }

@ -15,74 +15,9 @@ if (api_is_anonymous()) {
} }
$userId = api_get_user_id(); $userId = api_get_user_id();
$courses = CourseManager::get_courses_list_by_user_id($userId);
$sessions = SessionManager::get_sessions_by_user($userId);
$courseList = $sessionList = []; $courseList = GradebookUtils::getUserCertificatesInCourses($userId);
$sessionList = GradebookUtils::getUserCertificatesInSessions($userId);
foreach ($courses as $course) {
$courseGradebookCategory = Category::load(null, null, $course['code']);
if (empty($courseGradebookCategory)) {
continue;
}
$courseGradebookId = $courseGradebookCategory[0]->get_id();
$certificateInfo = GradebookUtils::get_certificate_by_user_id($courseGradebookId, $userId);
if (empty($certificateInfo)) {
continue;
}
$courseInfo = api_get_course_info($course['code']);
$courseList[] = [
'course' => $courseInfo['title'],
'score' => $certificateInfo['score_certificate'],
'date' => api_format_date($certificateInfo['created_at'], DATE_FORMAT_SHORT),
'link' => api_get_path(WEB_PATH) . "certificates/index.php?id={$certificateInfo['id']}"
];
}
foreach ($sessions as $session) {
if (empty($session['courses'])) {
continue;
}
$sessionCourses = SessionManager::get_course_list_by_session_id($session['session_id']);
foreach ($sessionCourses as $sessionCourse) {
$courseGradebookCategory = Category::load(
null,
null,
$sessionCourse['code'],
null,
null,
$session['session_id']
);
if (empty($courseGradebookCategory)) {
continue;
}
$courseGradebookId = $courseGradebookCategory[0]->get_id();
$certificateInfo = GradebookUtils::get_certificate_by_user_id($courseGradebookId, $userId);
if (empty($certificateInfo)) {
continue;
}
$sessionList[] = [
'session' => $session['session_name'],
'course' => $sessionCourse['title'],
'score' => $certificateInfo['score_certificate'],
'date' => api_format_date($certificateInfo['created_at'], DATE_FORMAT_SHORT),
'link' => api_get_path(WEB_PATH) . "certificates/index.php?id={$certificateInfo['id']}"
];
}
}
$template = new Template(get_lang('MyCertificates')); $template = new Template(get_lang('MyCertificates'));
@ -97,5 +32,15 @@ if (empty($courseList) || empty($sessionList)) {
); );
} }
$template->assign(
'actions',
Display::toolbarButton(
get_lang('CertificatesSearch'),
api_get_path(WEB_CODE_PATH) . "gradebook/search.php",
'search',
'info'
)
);
$template->assign('content', $content); $template->assign('content', $content);
$template->display_one_col_template(); $template->display_one_col_template();

Loading…
Cancel
Save