diff --git a/main/inc/lib/usermanager.lib.php b/main/inc/lib/usermanager.lib.php index 864bf45dbe..cbc4249824 100755 --- a/main/inc/lib/usermanager.lib.php +++ b/main/inc/lib/usermanager.lib.php @@ -3575,6 +3575,7 @@ class UserManager $categoryStart = $row['session_category_date_start'] ? $row['session_category_date_start']->format('Y-m-d') : ''; $categoryEnd = $row['session_category_date_end'] ? $row['session_category_date_end']->format('Y-m-d') : ''; $courseList = self::get_courses_list_by_session($user_id, $session_id); + $daysLeft = SessionManager::getDayLeftInSession($row, $user_id); // User portal filters: @@ -4077,9 +4078,19 @@ class UserManager $checkPosition = array_filter(array_column($myCourseList, 'position')); if (empty($checkPosition)) { // The session course list doesn't have any position, - // then order the course list by course code - $list = array_column($myCourseList, 'course_code'); - array_multisort($myCourseList, SORT_ASC, $list); + // then order the course list by course code. + $orderByCode = array_column($myCourseList, 'course_code'); + sort($orderByCode, SORT_NATURAL); + $newCourseList = []; + foreach ($orderByCode as $code) { + foreach ($myCourseList as $course) { + if ($code === $course['course_code']) { + $newCourseList[] = $course; + break; + } + } + } + $myCourseList = $newCourseList; } } diff --git a/main/session/resume_session.php b/main/session/resume_session.php index 6c9ec9ddfd..40b2cdb764 100644 --- a/main/session/resume_session.php +++ b/main/session/resume_session.php @@ -165,12 +165,41 @@ if ($session->getNbrCourses() === 0) { } else { $count = 0; $courseItem = ''; - $courses = $sessionRepository->getCoursesOrderedByPosition($session); + //$courses = $sessionRepository->getCoursesOrderedByPosition($session); + + $courses = $session->getCourses(); + $iterator = $courses->getIterator(); + // define ordering closure, using preferred comparison method/field + $iterator->uasort(function ($first, $second) { + return (int) $first->getPosition() > (int) $second->getPosition() ? 1 : -1; + }); + $courseList = []; + $positionList = []; + $courseListByCode = []; + /** @var \Chamilo\CoreBundle\Entity\SessionRelCourse $sessionRelCourse */ + foreach ($iterator as $sessionRelCourse) { + $courseList[] = $sessionRelCourse->getCourse(); + $courseListByCode[$sessionRelCourse->getCourse()->getCode()] = $sessionRelCourse->getCourse(); + $positionList[] = $sessionRelCourse->getPosition(); + } + + $checkPosition = array_filter($positionList); + if (empty($checkPosition)) { + // The session course list doesn't have any position, + // then order the course list by course code. + $orderByCode = array_keys($courseListByCode); + sort($orderByCode, SORT_NATURAL); + $newCourseList = []; + foreach ($orderByCode as $code) { + $newCourseList[] = $courseListByCode[$code]; + } + $courseList = $newCourseList; + } $allowSkills = api_get_configuration_value('allow_skill_rel_items'); /** @var Course $course */ - foreach ($courses as $course) { + foreach ($courseList as $course) { // Select the number of users $numberOfUsers = SessionManager::getCountUsersInCourseSession($course, $session); diff --git a/src/Chamilo/CoreBundle/Entity/Repository/SessionRepository.php b/src/Chamilo/CoreBundle/Entity/Repository/SessionRepository.php index db73663ae6..effe3b299c 100644 --- a/src/Chamilo/CoreBundle/Entity/Repository/SessionRepository.php +++ b/src/Chamilo/CoreBundle/Entity/Repository/SessionRepository.php @@ -23,7 +23,7 @@ class SessionRepository extends EntityRepository * * @param Session $session The session * - * @return array + * @return Course[] */ public function getCoursesOrderedByPosition(Session $session) {