Browse Source

Fixing function get_access_link_by_user() for the subscribe/enter to course buttons see #5599

Julio Montoya 12 years ago
parent
commit
d0ee4ac7e2

+ 25 - 12
main/inc/lib/course.lib.php

@@ -3717,13 +3717,16 @@ class CourseManager {
             $course_info = api_get_course_info($my_course['course_code']);            
             $my_course['extra_info'] = $course_info;
             $my_course['extra_info']['go_to_course_button'] = '';
+            $my_course['extra_info']['register_button'] = '';
             $access_link = self::get_access_link_by_user(api_get_user_id(), $course_info, $my_course_code_list);
 
             //Course visibility 
-            if (0 === strcmp($access_link,'register')) {
+            if (in_array('register', $access_link)) {
                 $stok = Security::get_token();
-                $my_course['extra_info']['go_to_course_button'] = Display::url(get_lang('Subscribe'), api_get_path(WEB_COURSE_PATH).$course_info['path'].'/index.php?action=subscribe&sec_token='.$stok, array('class' => 'btn btn-primary'));
-            } elseif (0 === strcmp($access_link,'enter')) {
+                $my_course['extra_info']['register_button'] = Display::url(get_lang('Subscribe'), api_get_path(WEB_COURSE_PATH).$course_info['path'].'/index.php?action=subscribe&sec_token='.$stok, array('class' => 'btn btn-primary'));
+            }
+            
+            if (in_array('enter', $access_link)) {
                 $my_course['extra_info']['go_to_course_button'] = Display::url(get_lang('GoToCourse'), api_get_path(WEB_COURSE_PATH).$course_info['path'].'/index.php', array('class' => 'btn btn-primary'));                        
             }
 
@@ -3806,30 +3809,40 @@ class CourseManager {
         if (empty($uid) or empty($course)) { return false; }
         if (empty($user_courses)) {
             // get the array of courses to which the user is subscribed
-            $user_courses = CourseManager::get_courses_list_by_user_id($uid);
+            $user_courses = CourseManager::get_courses_list_by_user_id($uid);            
             foreach ($user_courses as $k => $v) {
                 $user_courses[$k] = $v['real_id'];
             }            
         }
         
+        if (!isset($course['real_id']) && empty($course['real_id'])) {
+            $course = api_get_course_info($course['code']);
+        }
+        
         $is_admin = api_is_platform_admin_by_id($uid);
+        $options =  array();
+        
         // Register button
-        if (!api_is_anonymous($uid) && !$is_admin
-          && ($course['visibility'] == COURSE_VISIBILITY_OPEN_WORLD || $course['visibility'] == COURSE_VISIBILITY_OPEN_PLATFORM)
-          && $course['subscribe_allowed'] == SUBSCRIBE_ALLOWED
-          && (!in_array($course['real_id'], $user_courses) || empty($user_courses))
+        if (!api_is_anonymous($uid) && 
+            !$is_admin && 
+            (
+                ($course['visibility'] == COURSE_VISIBILITY_OPEN_WORLD || $course['visibility'] == COURSE_VISIBILITY_OPEN_PLATFORM) || 
+                $course['visibility'] == COURSE_VISIBILITY_REGISTERED && $course['subscribe'] == SUBSCRIBE_ALLOWED
+            ) && 
+            $course['subscribe'] == SUBSCRIBE_ALLOWED &&
+            (!in_array($course['real_id'], $user_courses) || empty($user_courses))
           ) {
-            return 'register';
+            $options[]= 'register';
         }
+        
         // Go To Course button (only if admin, if course public or if student already subscribed)
         if ($is_admin
           || $course['visibility'] == COURSE_VISIBILITY_OPEN_WORLD
           || (api_user_is_login($uid) && $course['visibility'] == COURSE_VISIBILITY_OPEN_PLATFORM)
           || (in_array($course['real_id'], $user_courses) && $course['visibility'] != COURSE_VISIBILITY_CLOSED)
         ) {
-            return 'enter';
+            $options[]=  'enter';
         }
-        // Print register button (if any)
-        return false;
+        return $options;        
     }
 } //end class CourseManager

+ 4 - 5
main/inc/lib/main_api.lib.php

@@ -1338,7 +1338,8 @@ function api_format_course_array($course_data) {
     $_course['categoryName' ]         = $course_data['faName'         ];
 
     $_course['visibility'   ]         = $course_data['visibility'      ];
-    $_course['subscribe_allowed']     = $course_data['subscribe'       ];
+    $_course['subscribe_allowed']     = $course_data['subscribe'];
+    $_course['subscribe']             = $course_data['subscribe'];
     $_course['unsubscribe']           = $course_data['unsubscribe'     ];
   
     $_course['course_language']       = $course_data['course_language'];
@@ -1357,10 +1358,8 @@ function api_format_course_array($course_data) {
     } else {
         $url_image = api_get_path(WEB_IMG_PATH).'without_picture.png';
     }
-    $_course['course_image'] = $url_image;
-    
-    return $_course;
-    
+    $_course['course_image'] = $url_image;    
+    return $_course;    
 }
 
 

+ 12 - 14
main/template/default/auth/courses_categories.php

@@ -118,8 +118,7 @@ $stok = Security::get_token();
             echo "<p><strong>".get_lang('SearchResultsFor')." ".Security::remove_XSS($_POST['search_term'])."</strong><br />";
         }
 
-        $ajax_url = api_get_path(WEB_AJAX_PATH).'course.ajax.php?a=add_course_vote';
-         
+        $ajax_url = api_get_path(WEB_AJAX_PATH).'course.ajax.php?a=add_course_vote';         
 
         if (!empty($browse_courses_in_category)) {
 
@@ -170,21 +169,20 @@ $stok = Security::get_token();
                     if (api_get_setting('show_courses_descriptions_in_catalog') == 'true') {
                         echo '<a class="ajax btn" href="'.api_get_path(WEB_CODE_PATH).'inc/ajax/course_home.ajax.php?a=show_course_information&amp;code='.$course['code'].'" title="'.$icon_title.'" class="thickbox">'.get_lang('Description').'</a>';
                     }
-                    // Get access type for course button ("enter" or "register")
-                    $course['subscribe_allowed'] = $course['subscribe'];
-                    $access_type = CourseManager::get_access_link_by_user(api_get_user_id(),$course);
-                    $sub_btn = '';
-                    // Register button
-                    if (strcmp($access_type,'register')===0) {
-                        $sub_btn = ' <a class="btn btn-primary" href="'. api_get_self().'?action=subscribe_course&amp;sec_token='.$stok.'&amp;subscribe_course='.$course['code'].'&amp;search_term='.$search_term.'&amp;category_code='.$code.'">'.get_lang('Subscribe').'</a>';
-                    }
+                    
+                    // Get access type for course button ("enter" or/and "register")                    
+                    $access_type = CourseManager::get_access_link_by_user(api_get_user_id(), $course); 
+                   
                     // Go To Course button (only if admin, if course public or if student already subscribed)
-                    if (empty($sub_btn)) {
+                    if (in_array('enter', $access_type)) {
                         echo ' <a class="btn btn-primary" href="'.  api_get_course_url($course['code']).'">'.get_lang('GoToCourse').'</a>';
                     }
-                    // Print register button (if any)
-                    echo $sub_btn;
-
+                    
+                    // Register button
+                    if (in_array('register', $access_type)) {
+                         echo ' <a class="btn btn-primary" href="'. api_get_self().'?action=subscribe_course&amp;sec_token='.$stok.'&amp;subscribe_course='.$course['code'].'&amp;search_term='.$search_term.'&amp;category_code='.$code.'">'.get_lang('Subscribe').'</a>';
+                    }
+                    
                     // If user is already subscribed to the course
                     if (!api_is_anonymous() && in_array($course['code'], $user_coursecodes)) {
                         if ($course['unsubscribe'] == UNSUBSCRIBE_ALLOWED) {

+ 3 - 2
main/template/default/layout/hot_course_item.tpl

@@ -14,9 +14,10 @@
                             <h5>{{ hot_course.extra_info.teachers }}</h5>
                             {{ hot_course.extra_info.rating_html }}
                         </div>
-                        <p>                                
-                            {{ hot_course.extra_info.go_to_course_button }}
+                        <p>                                                            
                             {{ hot_course.extra_info.description_button }}
+                            {{ hot_course.extra_info.go_to_course_button }}
+                            {{ hot_course.extra_info.register_button }}
                         </p>
                     </div>
                 </div>

+ 3 - 2
main/template/default/layout/hot_course_item_popup.tpl

@@ -14,9 +14,10 @@
                             <h5>{{ hot_course.extra_info.teachers }}</h5>
                             {# hot_course.extra_info.rating_html #}
                         </div>
-                        <p>                                
-                            {{ hot_course.extra_info.go_to_course_button }}
+                        <p>
                             {{ hot_course.extra_info.description_button }}
+                            {{ hot_course.extra_info.go_to_course_button }}
+                            {{ hot_course.extra_info.register_button }}
                         </p>
                     </div>
                 </div>