Fix PHP warnings when getting course list

pull/2487/head
jmontoyaa 8 years ago
parent ab00cdbf0c
commit 1e0b8856c2
  1. 25
      main/inc/lib/course.lib.php
  2. 50
      main/inc/lib/userportal.lib.php
  3. 40
      user_portal.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) {

@ -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 = '';

@ -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);

Loading…
Cancel
Save