Add limit to the session list

pull/2487/head
jmontoyaa 9 years ago
parent 60bf35129a
commit e69cb1e6d2
  1. 26
      main/inc/lib/usermanager.lib.php
  2. 3
      main/social/profile.php

@ -2656,7 +2656,7 @@ class UserManager
* @param integer $user_id * @param integer $user_id
* @return array list of statuses (session_id-course_code => status) * @return array list of statuses (session_id-course_code => status)
*/ */
public static function get_personal_session_course_list($user_id) public static function get_personal_session_course_list($user_id, $sessionLimit = null)
{ {
// Database Table Definitions // Database Table Definitions
$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE); $tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
@ -2690,10 +2690,10 @@ class UserManager
course_rel_user.status course_rel_status, course_rel_user.status course_rel_status,
course_rel_user.sort sort, course_rel_user.sort sort,
course_rel_user.user_course_cat user_course_cat course_rel_user.user_course_cat user_course_cat
FROM ".$tbl_course_user." course_rel_user FROM $tbl_course_user course_rel_user
LEFT JOIN ".$tbl_course." course LEFT JOIN $tbl_course course
ON course.id = course_rel_user.c_id ON course.id = course_rel_user.c_id
LEFT JOIN ".$tbl_user_course_category." user_course_category LEFT JOIN $tbl_user_course_category user_course_category
ON course_rel_user.user_course_cat = user_course_category.id ON course_rel_user.user_course_cat = user_course_category.id
$join_access_url $join_access_url
WHERE WHERE
@ -2739,16 +2739,24 @@ class UserManager
// Get the list of sessions where the user is subscribed // Get the list of sessions where the user is subscribed
// This is divided into two different queries // This is divided into two different queries
$sessions = array(); $sessions = array();
$sessionLimitRestriction = '';
if (!empty($sessionLimit)) {
$sessionLimit = (int) $sessionLimit;
$sessionLimitRestriction = "LIMIT $sessionLimit";
}
$sql = "SELECT DISTINCT s.id, name, access_start_date, access_end_date $sql = "SELECT DISTINCT s.id, name, access_start_date, access_end_date
FROM $tbl_session_user su INNER JOIN $tbl_session s FROM $tbl_session_user su INNER JOIN $tbl_session s
ON (s.id = su.session_id) ON (s.id = su.session_id)
WHERE ( WHERE (
su.session_id = s.id AND
su.user_id = $user_id AND su.user_id = $user_id AND
su.relation_type <> ".SESSION_RELATION_TYPE_RRHH." su.relation_type <> ".SESSION_RELATION_TYPE_RRHH."
) )
$coachCourseConditions $coachCourseConditions
ORDER BY access_start_date, access_end_date, name"; ORDER BY access_start_date, access_end_date, name
$sessionLimitRestriction
";
$result = Database::query($sql); $result = Database::query($sql);
if (Database::num_rows($result)>0) { if (Database::num_rows($result)>0) {
@ -2786,7 +2794,6 @@ class UserManager
// This query is horribly slow when more than a few thousand // This query is horribly slow when more than a few thousand
// users and just a few sessions to which they are subscribed // users and just a few sessions to which they are subscribed
$id_session = $enreg['id'];
$personal_course_list_sql = "SELECT DISTINCT $personal_course_list_sql = "SELECT DISTINCT
course.code code, course.code code,
course.title i, course.title i,
@ -2806,7 +2813,7 @@ class UserManager
LEFT JOIN $tbl_user as user LEFT JOIN $tbl_user as user
ON user.id = session_course_user.user_id OR session.id_coach = user.id ON user.id = session_course_user.user_id OR session.id_coach = user.id
WHERE WHERE
session_course_user.session_id = $id_session AND ( session_course_user.session_id = $session_id AND (
(session_course_user.user_id = $user_id AND session_course_user.status = 2) (session_course_user.user_id = $user_id AND session_course_user.status = 2)
OR session.id_coach = $user_id OR session.id_coach = $user_id
) )
@ -2845,7 +2852,8 @@ class UserManager
FROM $tbl_session_course_user as session_course_user FROM $tbl_session_course_user as session_course_user
INNER JOIN $tbl_course AS course INNER JOIN $tbl_course AS course
ON course.id = session_course_user.c_id AND session_course_user.session_id = $session_id ON course.id = session_course_user.c_id AND session_course_user.session_id = $session_id
INNER JOIN $tbl_session as session ON session_course_user.session_id = session.id INNER JOIN $tbl_session as session
ON session_course_user.session_id = session.id
LEFT JOIN $tbl_user as user ON user.id = session_course_user.user_id LEFT JOIN $tbl_user as user ON user.id = session_course_user.user_id
WHERE session_course_user.user_id = $user_id WHERE session_course_user.user_id = $user_id
ORDER BY i"; ORDER BY i";

@ -218,7 +218,7 @@ $_SESSION['social_user_id'] = intval($user_id);
// Setting some course info // Setting some course info
$my_user_id = isset($_GET['u']) ? intval($_GET['u']) : api_get_user_id(); $my_user_id = isset($_GET['u']) ? intval($_GET['u']) : api_get_user_id();
$personal_course_list = UserManager::get_personal_session_course_list($my_user_id); $personal_course_list = UserManager::get_personal_session_course_list($my_user_id, 50);
$course_list_code = array(); $course_list_code = array();
$i = 1; $i = 1;
@ -320,7 +320,6 @@ $social_right_content = '';
$listInvitations = ''; $listInvitations = '';
if ($show_full_profile) { if ($show_full_profile) {
$t_ufo = Database :: get_main_table(TABLE_EXTRA_FIELD_OPTIONS); $t_ufo = Database :: get_main_table(TABLE_EXTRA_FIELD_OPTIONS);
$extra_user_data = UserManager::get_extra_user_data($user_id, false, true); $extra_user_data = UserManager::get_extra_user_data($user_id, false, true);

Loading…
Cancel
Save