Browse Source

Add ""$useUserLanguageFilterIfAvailable" to ignore user language filter

See BT#13099
jmontoyaa 7 years ago
parent
commit
729432ecca

+ 8 - 5
main/admin/gradebook_dependency.php

@@ -82,14 +82,17 @@ foreach ($dependencyList as $courseId => $courseInfo) {
     $userList = CourseManager::get_student_list_from_course_code($courseCode);
     foreach ($userList as $user) {
         $userId = $user['user_id'];
-        if ($userId != 37056) {
-            //continue;
-        }
-
         $userInfo = api_get_user_info($userId);
         $courseId = $courseInfo['real_id'];
 
-        $userCourseList = CourseManager::get_courses_list_by_user_id($userId);
+        $userCourseList = CourseManager::get_courses_list_by_user_id(
+            $userId,
+            false,
+            false,
+            true,
+            [],
+            false
+        );
         $userCourseListCode = array_column($userCourseList, 'code');
 
         if (!isset($userResult[$userId]['result_mandatory_20'])) {

+ 10 - 1
main/admin/skills_gradebook.php

@@ -89,7 +89,16 @@ $action_links = 'function action_formatter(cellvalue, options, rowObject) {
 $(function() {
 <?php
     // grid definition see the $career->display() function
-    echo Display::grid_js('gradebooks', $url, $columns, $column_model, $extra_params, array(), $action_links, true);
+    echo Display::grid_js(
+        'gradebooks',
+        $url,
+        $columns,
+        $column_model,
+        $extra_params,
+        array(),
+        $action_links,
+        true
+    );
 ?>
 });
 </script>

+ 26 - 11
main/inc/lib/course.lib.php

@@ -2730,6 +2730,7 @@ class CourseManager
      * whether he gets all the courses or just his. Note: This does *not* include all sessions
      * @param bool $loadSpecialCourses
      * @param array $skipCourseList List of course ids to skip
+     * @param bool $useUserLanguageFilterIfAvailable
      * @return array List of codes and db name
      * @author isaac flores paz
      */
@@ -2738,7 +2739,8 @@ class CourseManager
         $include_sessions = false,
         $adminGetsAllCourses = false,
         $loadSpecialCourses = true,
-        $skipCourseList = []
+        $skipCourseList = [],
+        $useUserLanguageFilterIfAvailable = true
     ) {
         $user_id = intval($user_id);
         $urlId = api_get_current_access_url_id();
@@ -2752,7 +2754,7 @@ class CourseManager
 
         $languageCondition = '';
         $onlyInUserLanguage = api_get_configuration_value('my_courses_show_courses_in_user_language_only');
-        if ($onlyInUserLanguage) {
+        if ($useUserLanguageFilterIfAvailable && $onlyInUserLanguage) {
             $userInfo = api_get_user_info(api_get_user_id());
             if (!empty($userInfo['language'])) {
                 $languageCondition = " AND course.course_language = '".$userInfo['language']."' ";
@@ -3581,10 +3583,14 @@ class CourseManager
      * in the sense that any user clicking them is registered as a student
      * @param int       $user_id User id
      * @param bool      $load_dirs Whether to show the document quick-loader or not
+     * @param bool $useUserLanguageFilterIfAvailable
      * @return string
      */
-    public static function returnSpecialCourses($user_id, $load_dirs = false)
-    {
+    public static function returnSpecialCourses(
+        $user_id,
+        $load_dirs = false,
+        $useUserLanguageFilterIfAvailable = true
+    ) {
         $user_id = intval($user_id);
         $table = Database::get_main_table(TABLE_MAIN_COURSE);
         $specialCourseList = self::get_special_course_list();
@@ -3596,7 +3602,7 @@ class CourseManager
         // Filter by language
         $languageCondition = '';
         $onlyInUserLanguage = api_get_configuration_value('my_courses_show_courses_in_user_language_only');
-        if ($onlyInUserLanguage) {
+        if ($useUserLanguageFilterIfAvailable && $onlyInUserLanguage) {
             $userInfo = api_get_user_info(api_get_user_id());
             if (!empty($userInfo['language'])) {
                 $languageCondition = " AND course_language = '".$userInfo['language']."' ";
@@ -3709,10 +3715,15 @@ class CourseManager
      * @param int $user_id
      * @param bool  $load_dirs Whether to show the document quick-loader or not
      * @param integer $user_id
+     * @param bool $useUserLanguageFilterIfAvailable
+     *
      * @return array
      */
-    public static function returnCourses($user_id, $load_dirs = false)
-    {
+    public static function returnCourses(
+        $user_id,
+        $load_dirs = false,
+        $useUserLanguageFilterIfAvailable = true
+    ) {
         $user_id = intval($user_id);
         if (empty($user_id)) {
             $user_id = api_get_user_id();
@@ -3733,7 +3744,8 @@ class CourseManager
             $courseInCategory = self::returnCoursesCategories(
                 $row['id'],
                 $load_dirs,
-                $user_id
+                $user_id,
+                $useUserLanguageFilterIfAvailable
             );
 
             $params = [
@@ -3748,7 +3760,8 @@ class CourseManager
         $coursesNotCategory = self::returnCoursesCategories(
             0,
             $load_dirs,
-            $user_id
+            $user_id,
+            $useUserLanguageFilterIfAvailable
         );
 
         if ($coursesNotCategory) {
@@ -3764,12 +3777,14 @@ class CourseManager
      * @param int      $user_category_id User category id
      * @param bool $load_dirs Whether to show the document quick-loader or not
      * @param int $user_id
+     * @param bool $useUserLanguageFilterIfAvailable
      * @return string
      */
     public static function returnCoursesCategories(
         $user_category_id,
         $load_dirs = false,
-        $user_id = 0
+        $user_id = 0,
+        $useUserLanguageFilterIfAvailable = true
     ) {
         $user_id = $user_id ?: api_get_user_id();
         $user_category_id = (int) $user_category_id;
@@ -3794,7 +3809,7 @@ class CourseManager
 
         $languageCondition = '';
         $onlyInUserLanguage = api_get_configuration_value('my_courses_show_courses_in_user_language_only');
-        if ($onlyInUserLanguage) {
+        if ($useUserLanguageFilterIfAvailable && $onlyInUserLanguage) {
             $userInfo = api_get_user_info(api_get_user_id());
             if (!empty($userInfo['language'])) {
                 $languageCondition = " AND course.course_language = '".$userInfo['language']."' ";

+ 7 - 3
main/inc/lib/userportal.lib.php

@@ -1140,12 +1140,14 @@ class IndexManager
      * @param int $user_id
      * @param bool $showSessions
      * @param string $categoryCodeFilter
+     * @param bool $useUserLanguageFilterIfAvailable
      * @return string
      */
     public function returnCoursesAndSessions(
         $user_id,
         $showSessions = true,
-        $categoryCodeFilter = ''
+        $categoryCodeFilter = '',
+        $useUserLanguageFilterIfAvailable = true
     ) {
         $gameModeIsActive = api_get_setting('gamification_mode');
         $listCourse = '';
@@ -1185,13 +1187,15 @@ class IndexManager
             // Display special courses.
             $specialCourses = CourseManager::returnSpecialCourses(
                 $user_id,
-                $this->load_directories_preview
+                $this->load_directories_preview,
+                $useUserLanguageFilterIfAvailable
             );
 
             // Display courses.
             $courses = CourseManager::returnCourses(
                 $user_id,
-                $this->load_directories_preview
+                $this->load_directories_preview,
+                $useUserLanguageFilterIfAvailable
             );
 
             // Course option (show student progress)

+ 16 - 4
user_portal.php

@@ -145,9 +145,14 @@ if (!$myCourseListAsCategory) {
 
     // if teacher, session coach or admin, display the button to change te course view
 
-    if ($displayMyCourseViewBySessionLink
-        && (api_is_drh() || api_is_session_general_coach() || api_is_platform_admin() || api_is_session_admin()
-            || api_is_teacher())
+    if ($displayMyCourseViewBySessionLink &&
+        (
+            api_is_drh() ||
+            api_is_session_general_coach() ||
+            api_is_platform_admin() ||
+            api_is_session_admin() ||
+            api_is_teacher()
+        )
     ) {
         $courseAndSessions['html'] = "
             <div class='view-by-session-link'>
@@ -291,7 +296,14 @@ if ($myCourseListAsCategory) {
 
 $allow = api_get_configuration_value('gradebook_dependency');
 
-if (!empty($courseAndSessions['courses']) && $allow) {
+if ($allow) {
+    $courseAndSessions = $controller->returnCoursesAndSessions(
+        $userId,
+        true,
+        '',
+        false
+    );
+
     $courseList = api_get_configuration_value('gradebook_dependency_mandatory_courses');
     $courseList = isset($courseList['courses']) ? $courseList['courses'] : [];
     $mandatoryCourse = [];