diff --git a/main/css/base.css b/main/css/base.css index f88621f469..f353acd4cd 100644 --- a/main/css/base.css +++ b/main/css/base.css @@ -571,11 +571,11 @@ a.personal_agenda:hover, a.personal_agenda:hover { /** BUTTONS **/ .left { - float:left; + float:left !important; } .right { - float:right; + float:right !important; } /* New button style experimental */ diff --git a/main/inc/lib/auth.lib.php b/main/inc/lib/auth.lib.php index 3f3b9d6722..3d75499934 100755 --- a/main/inc/lib/auth.lib.php +++ b/main/inc/lib/auth.lib.php @@ -458,13 +458,13 @@ class Auth WHERE access_url_id = $url_access_id $without_special_courses ORDER BY RAND() LIMIT $random_value"; } - /*SELECT * FROM $tbl_course, (SELECT CEIL(MAX($tbl_course.id) * RAND()) AS randId FROM $tbl_course) AS someRandId - WHERE $tbl_course.id >= someRandId.randId LIMIT 10 - */ + $sql = "SELECT * FROM $tbl_course, (SELECT CEIL(MAX($tbl_course.id) * RAND()) AS randId FROM $tbl_course) AS someRandId + WHERE $tbl_course.id >= someRandId.randId LIMIT 10"; + } else { $category_code = Database::escape_string($category_code); //$my_category = (empty($category) ? " IS NULL" : "='".$category."'"); - $sql = "SELECT * FROM $tbl_course WHERE category_code='$category_code' $without_special_courses ORDER BY title, visual_code"; + $sql = "SELECT * FROM $tbl_course WHERE category_code='$category_code' $without_special_courses ORDER BY title LIMIT 10"; //showing only the courses of the current Chamilo access_url_id if ($_configuration['multiple_access_urls']) { @@ -472,17 +472,15 @@ class Auth $tbl_url_rel_course = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $sql = "SELECT * FROM $tbl_course as course INNER JOIN $tbl_url_rel_course as url_rel_course ON (url_rel_course.course_code=course.code) - WHERE access_url_id = $url_access_id AND category_code='$category_code' $without_special_courses ORDER BY title, visual_code"; + WHERE access_url_id = $url_access_id AND category_code='$category_code' $without_special_courses ORDER BY title"; } } - - $result = Database::query($sql); $courses = array(); while ($row = Database::fetch_array($result)) { $row['registration_code'] = !empty($row['registration_code']); - $count_users = count(CourseManager::get_user_list_from_course_code($row['code'])); + $count_users = CourseManager::get_users_count_in_course($row['code']); $count_connections_last_month = Tracking::get_course_connections_count($row['code'], 0, api_get_utc_datetime(time()-(30*86400))); if ($row['tutor_name'] == '0') { diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php index 005bcccf68..ae3658f1d6 100755 --- a/main/inc/lib/course.lib.php +++ b/main/inc/lib/course.lib.php @@ -1008,18 +1008,13 @@ class CourseManager { : 'SELECT DISTINCT user.user_id, session_course_user.status as status_session, user.* '; $sql .= ' FROM '.Database::get_main_table(TABLE_MAIN_USER).' as user '; - - if (api_get_setting('use_session_mode')=='true' && $with_session) { + if (!empty($session_id)) { $sql .= ' LEFT JOIN '.Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER).' as session_course_user - ON user.user_id = session_course_user.id_user - AND session_course_user.course_code="'.$course_code.'"'; - if ($session_id != 0) { - $sql .= ' AND session_course_user.id_session = '.$session_id; - } + ON user.user_id = session_course_user.id_user + AND session_course_user.course_code="'.$course_code.'" + AND session_course_user.id_session = '.$session_id; $where[] = ' session_course_user.course_code IS NOT NULL '; - } - - if ($session_id == 0) { + } else { $sql .= ' LEFT JOIN '.Database::get_main_table(TABLE_MAIN_COURSE_USER).' as course_rel_user ON user.user_id = course_rel_user.user_id AND course_rel_user.relation_type<>'.COURSE_RELATION_TYPE_RRHH.' AND course_rel_user.course_code="'.$course_code.'"'; @@ -1037,7 +1032,7 @@ class CourseManager { $sql .= " AND (access_url_id = $current_access_url_id ) "; } $sql .= ' '.$order_by.' '.$limit; - + echo $sql; $rs = Database::query($sql); $users = array(); @@ -1060,9 +1055,57 @@ class CourseManager { $users[$user['user_id']] = $user_info; } + } + return $users; + } + + /** + * Gets subscribed users in a course or in a course/session + * + * @param string $course_code + * @param int $session_id + * @return int + */ + public static function get_users_count_in_course($course_code, $session_id = 0) { + global $_configuration; + // variable initialisation + $session_id = intval($session_id); + $course_code = Database::escape_string($course_code); + + $sql .= 'SELECT DISTINCT count(*) as count FROM '.Database::get_main_table(TABLE_MAIN_USER).' as user '; + $where = array(); + if (!empty($session_id)) { + $sql .= ' LEFT JOIN '.Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER).' as session_course_user + ON user.user_id = session_course_user.id_user + AND session_course_user.course_code = "'.$course_code.'" + AND session_course_user.id_session = '.$session_id; + + $where[] = ' session_course_user.course_code IS NOT NULL '; + } else { + $sql .= ' LEFT JOIN '.Database::get_main_table(TABLE_MAIN_COURSE_USER).' as course_rel_user + ON user.user_id = course_rel_user.user_id AND course_rel_user.relation_type<>'.COURSE_RELATION_TYPE_RRHH.' + AND course_rel_user.course_code="'.$course_code.'"'; + $where[] = ' course_rel_user.course_code IS NOT NULL '; } - return $users; + if ($_configuration['multiple_access_urls']) { + $sql .= ' LEFT JOIN '.Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER).' au ON (au.user_id = user.user_id) '; + } + + $sql .= ' WHERE '.implode(' OR ', $where); + + if ($_configuration['multiple_access_urls']) { + $current_access_url_id = api_get_current_access_url_id(); + $sql .= " AND (access_url_id = $current_access_url_id ) "; + } + $rs = Database::query($sql); + $users = array(); + $count = 0; + if (Database::num_rows($rs)) { + $user = Database::fetch_array($rs); + $count = $user['count']; + } + return $count; } /** diff --git a/main/webservices/registration.soap.php b/main/webservices/registration.soap.php index 644876219c..942c48c9ac 100755 --- a/main/webservices/registration.soap.php +++ b/main/webservices/registration.soap.php @@ -4788,9 +4788,8 @@ function WSListCourses($params) { } // Determining number of students registered in course - $user_list = CourseManager::get_user_list_from_course_code($course['code'], false); - $course_tmp['number_students'] = count($user_list); - + $course_tmp['number_students'] = CourseManager::get_users_count_in_course($course['code']); + // Determining external course id $course_tmp['external_course_id'] = CourseManager::get_course_extra_field_value($course_field_name, $course['code']);