diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php index 4d8b51f628..02f93fb27b 100755 --- a/main/inc/lib/course.lib.php +++ b/main/inc/lib/course.lib.php @@ -3685,7 +3685,7 @@ class CourseManager * @param int $user_id * @param bool $load_dirs Whether to show the document quick-loader or not * @param integer $user_id - * @return string + * @return array */ public static function returnCourses($user_id, $load_dirs = false) { @@ -3738,11 +3738,15 @@ class CourseManager * Display courses inside a category (without special courses) as HTML dics of * class userportal-course-item. * @param int $user_category_id User category id - * @param bool $load_dirs Whether to show the document quick-loader or not + * @param bool $load_dirs Whether to show the document quick-loader or not + * @param int $user_id * @return string */ - public static function returnCoursesCategories($user_category_id, $load_dirs = false, $user_id = 0) - { + public static function returnCoursesCategories( + $user_category_id, + $load_dirs = false, + $user_id = 0 + ) { $user_id = $user_id ?: api_get_user_id(); $user_category_id = (int) $user_category_id; @@ -3767,7 +3771,7 @@ class CourseManager $sql = "SELECT DISTINCT course.id, course_rel_user.status status, - course.code as course_code + course.code as course_code FROM $TABLECOURS course INNER JOIN $TABLECOURSUSER course_rel_user ON (course.id = course_rel_user.c_id) @@ -3787,12 +3791,13 @@ class CourseManager $sql .= " ORDER BY course_rel_user.user_course_cat, course_rel_user.sort ASC"; $result = Database::query($sql); - $courseList = array(); $showCustomIcon = api_get_setting('course_images_in_courses_list'); // Browse through all courses. $courseAdded = []; + $courseList = []; while ($row = Database::fetch_array($result)) { $course_info = api_get_course_info_by_id($row['id']); + if (isset($course_info['visibility']) && $course_info['visibility'] == COURSE_VISIBILITY_HIDDEN ) { @@ -3815,6 +3820,7 @@ class CourseManager $params = array(); //Param (course_code) needed to get the student process $params['course_code'] = $row['course_code']; + $params['code'] = $row['course_code']; if ($showCustomIcon === 'true' && $iconName != 'course.png') { $params['thumbnails'] = $course_info['course_image']; @@ -3823,7 +3829,6 @@ class CourseManager $thumbnails = null; $image = null; - if ($showCustomIcon === 'true' && $iconName != 'course.png') { $thumbnails = $course_info['course_image']; $image = $course_info['course_image_large']; @@ -3858,7 +3863,10 @@ class CourseManager $courseUrl = api_get_path(WEB_COURSE_PATH).$course_info['path'].'/index.php?id_session=0'; $teachers = []; if (api_get_setting('display_teacher_in_courselist') === 'true') { - $teachers = self::getTeachersFromCourse($course_info['real_id'], true); + $teachers = self::getTeachersFromCourse( + $course_info['real_id'], + true + ); } $params['status'] = $row['status']; @@ -3867,7 +3875,6 @@ class CourseManager } $params['current_user_is_teacher'] = false; - /** @var array $teacher */ foreach ($teachers as $teacher) { if ($teacher['id'] != $user_id) { diff --git a/main/inc/lib/userportal.lib.php b/main/inc/lib/userportal.lib.php index f8f76324d6..815dac1a7d 100755 --- a/main/inc/lib/userportal.lib.php +++ b/main/inc/lib/userportal.lib.php @@ -1176,6 +1176,8 @@ class IndexManager $studentInfoScore = (!empty($studentInfo['score']) && $studentInfo['score'] === true); $studentInfoCertificate = (!empty($studentInfo['certificate']) && $studentInfo['certificate'] === true); $courseCompleteList = []; + $coursesInCategoryCount = 0; + $coursesNotInCategoryCount = 0; // If we're not in the history view... if (!isset($_GET['history'])) { @@ -1191,8 +1193,8 @@ class IndexManager $this->load_directories_preview ); - //Course option (show student progress) - //This code will add new variables (Progress, Score, Certificate) + // Course option (show student progress) + // This code will add new variables (Progress, Score, Certificate) if ($studentInfoProgress || $studentInfoScore || $studentInfoCertificate) { if (!empty($specialCourses)) { foreach ($specialCourses as $key => $specialCourseInfo) { @@ -1240,9 +1242,7 @@ class IndexManager } } - if (isset($courses['in_category']) && - isset($courses['not_category']) - ) { + if (isset($courses['in_category'])) { foreach ($courses['in_category'] as $key1 => $value) { if (isset($courses['in_category'][$key1]['courses'])) { foreach ($courses['in_category'][$key1]['courses'] as $key2 => $courseInCatInfo) { @@ -1273,18 +1273,29 @@ class IndexManager null ); $courses['in_category'][$key1]['student_info']['certificate'] = null; + $isCertificateAvailable = $category[0]->is_certificate_available($user_id); if (isset($category[0])) { if ($viewGrid == 'true') { - if ($category[0]->is_certificate_available($user_id)) { - $courses['in_category'][$key1]['student_info']['certificate'] = get_lang('Yes'); + if ($isCertificateAvailable) { + $courses['in_category'][$key1]['student_info']['certificate'] = get_lang( + 'Yes' + ); } else { - $courses['in_category'][$key1]['student_info']['certificate'] = get_lang('No'); + $courses['in_category'][$key1]['student_info']['certificate'] = get_lang( + 'No' + ); } } else { - if ($category[0]->is_certificate_available($user_id)) { - $courses['in_category'][$key1]['student_info']['certificate'] = Display::label(get_lang('Yes'), 'success'); + if ($isCertificateAvailable) { + $courses['in_category'][$key1]['student_info']['certificate'] = Display::label( + get_lang('Yes'), + 'success' + ); } else { - $courses['in_category'][$key1]['student_info']['certificate'] = Display::label(get_lang('No'), 'danger'); + $courses['in_category'][$key1]['student_info']['certificate'] = Display::label( + get_lang('No'), + 'danger' + ); } } } @@ -1292,7 +1303,9 @@ class IndexManager } } } + } + if (isset($courses['not_category'])) { foreach ($courses['not_category'] as $key => $courseNotInCatInfo) { if ($studentInfoProgress) { $progress = Tracking::get_avg_student_progress( @@ -1347,7 +1360,6 @@ class IndexManager } } } - } if ($viewGridCourses) { @@ -1364,13 +1376,22 @@ class IndexManager } $this->tpl->assign('courses', $specialCourses); - $specialCourseList = $this->tpl->fetch( $this->tpl->get_template($coursesWithoutCategoryTemplate) ); } if ($courses['in_category'] || $courses['not_category']) { + foreach ($courses['in_category'] as $courseData) { + if (!empty($courseData['courses'])) { + $coursesInCategoryCount += count($courseData['courses']); + $courseCompleteList = array_merge($courseCompleteList, $courseData['courses']); + } + } + + $coursesNotInCategoryCount += count($courses['not_category']); + $courseCompleteList = array_merge($courseCompleteList, $courses['not_category']); + if ($categoryCodeFilter) { $courses['in_category'] = self::filterByCategory( $courses['in_category'], @@ -1391,10 +1412,9 @@ class IndexManager $listCourse .= $this->tpl->fetch( $this->tpl->get_template($coursesWithoutCategoryTemplate) ); - $courseCompleteList = $courses['in_category'] + $courses['not_category']; } - $courseCount = count($specialCourses) + count($courses['in_category']) + count($courses['not_category']); + $courseCount = count($specialCourses) + $coursesInCategoryCount + $coursesNotInCategoryCount; } $sessions_with_category = ''; diff --git a/user_portal.php b/user_portal.php index be5a8fc70c..8030c01995 100755 --- a/user_portal.php +++ b/user_portal.php @@ -132,9 +132,9 @@ $controller = new IndexManager(get_lang('MyCourses')); if (!$myCourseListAsCategory) { // Main courses and session list - if (isset($_COOKIE['defaultMyCourseView'.$userId]) - && $_COOKIE['defaultMyCourseView'.$userId] == IndexManager::VIEW_BY_SESSION - && $displayMyCourseViewBySessionLink + if (isset($_COOKIE['defaultMyCourseView'.$userId]) && + $_COOKIE['defaultMyCourseView'.$userId] == IndexManager::VIEW_BY_SESSION && + $displayMyCourseViewBySessionLink ) { $courseAndSessions = $controller->returnCoursesAndSessionsViewBySession($userId); IndexManager::setDefaultMyCourseView(IndexManager::VIEW_BY_SESSION, $userId); @@ -292,16 +292,17 @@ if (!empty($courseAndSessions['courses']) && $allow) { } // @todo improve calls of course info - $subscribedCourses = $courseAndSessions['courses']; + $subscribedCourses = !empty($courseAndSessions['courses']) ? $courseAndSessions['courses'] : []; $mainCategoryList = []; foreach ($subscribedCourses as $courseInfo) { - $courseCode = $courseInfo['course_code']; + $courseCode = $courseInfo['code']; $categories = Category::load(null, null, $courseCode); /** @var Category $category */ - $category = $categories[0]; - $mainCategoryList[]= $category; + $category = !empty($categories[0]) ? $categories[0] : []; + if (!empty($category)) { + $mainCategoryList[] = $category; + } } - $total = []; foreach ($mainCategoryList as $category) { $parentScore = Category::getCurrentScore( @@ -321,16 +322,18 @@ if (!empty($courseAndSessions['courses']) && $allow) { $courseCode = $courseInfo['code']; $categories = Category::load(null, null, $courseCode); /** @var Category $subCategory */ - $subCategory = $categories[0]; - $score = Category::getCurrentScore( - $userId, - $subCategory->get_id(), - $subCategory->get_course_code(), - 0, - true - ); - $totalScoreWithChildren += $score; - $children[$subCategory->get_course_code()] = ['score' => $score]; + $subCategory = !empty($categories[0]) ? $categories[0] : null; + if (!empty($subCategory)) { + $score = Category::getCurrentScore( + $userId, + $subCategory->get_id(), + $subCategory->get_course_code(), + 0, + true + ); + $totalScoreWithChildren += $score; + $children[$subCategory->get_course_code()] = ['score' => $score]; + } } } $totalScoreWithChildren += $parentScore; @@ -380,6 +383,7 @@ if (!empty($courseAndSessions['courses']) && $allow) { 'grade_book_result_validate', $validatedCoursesPercentage ); + $controller->tpl->assign('grade_book_result_completed', $completed); /*if ($finalScore > 0) { $finalScore = (int) $finalScore / count($total);