From ab48039063a5f712359fda02aa719bbbc500eab7 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Tue, 28 Aug 2012 17:14:53 +0200 Subject: [PATCH] Fixing session date when entering to the portal as a coach see #5353 --- main/inc/lib/social.lib.php | 2 +- main/inc/lib/usermanager.lib.php | 38 ++++++++++++---------- main/inc/lib/userportal.lib.php | 11 ++++--- main/session/index.php | 30 ++++++++--------- main/social/profile.php | 2 +- main/webservices/cm_webservice_courses.php | 12 +++---- user_portal.php | 4 +-- 7 files changed, 50 insertions(+), 49 deletions(-) diff --git a/main/inc/lib/social.lib.php b/main/inc/lib/social.lib.php index 2eef6e2100..d841c7ec77 100644 --- a/main/inc/lib/social.lib.php +++ b/main/inc/lib/social.lib.php @@ -688,7 +688,7 @@ class SocialManager extends UserManager { foreach ($personal_course_list as $my_course) { if ($i<=10) { //$list[] = SocialManager::get_logged_user_course_html($my_course,$i); - $course_list_code[] = array('code'=>$my_course['k']); + $course_list_code[] = array('code' => $my_course['code']); } else { break; } diff --git a/main/inc/lib/usermanager.lib.php b/main/inc/lib/usermanager.lib.php index c2acfc68a5..a1d5ac3884 100644 --- a/main/inc/lib/usermanager.lib.php +++ b/main/inc/lib/usermanager.lib.php @@ -1949,7 +1949,8 @@ class UserManager { $sql = "SELECT DISTINCT session.id, session.name, session.date_start, session.date_end, session_category_id, session_category.name as session_category_name, session_category.date_start session_category_date_start, - session_category.date_end session_category_date_end + session_category.date_end session_category_date_end, + nb_days_access_before_beginning FROM $tbl_session as session LEFT JOIN $tbl_session_category session_category ON (session_category_id = session_category.id) INNER JOIN $tbl_session_course_user as session_rel_course_user ON (session_rel_course_user.id_session = session.id) @@ -2034,24 +2035,26 @@ class UserManager { // Get the list of sessions where the user is subscribed $sessions_sql = "SELECT DISTINCT id, name, date_start, date_end FROM $tbl_session_user, $tbl_session - WHERE id_session=id AND + WHERE (id_session=id AND id_user=$user_id AND - relation_type<>".SESSION_RELATION_TYPE_RRHH." + relation_type<>".SESSION_RELATION_TYPE_RRHH.") OR + (id_coach = $user_id) ORDER BY date_start, date_end, name"; $result = Database::query($sessions_sql); $sessions = Database::store_result($result, 'ASSOC'); - + if (api_is_allowed_to_create_course()) { - foreach ($sessions as $enreg) { - - $session_id = $enreg['id']; - $session_visibility = api_get_session_visibility($session_id); + + foreach ($sessions as $enreg) { + $session_id = $enreg['id']; + $session_visibility = api_get_session_visibility($session_id); + if ($session_visibility == SESSION_INVISIBLE) { continue; } $id_session = $enreg['id']; - $personal_course_list_sql = "SELECT DISTINCT course.code k, course.title i, + $personal_course_list_sql = "SELECT DISTINCT course.code code, course.title i, ".(api_is_western_name_order() ? "CONCAT(user.firstname,' ',user.lastname)" : "CONCAT(user.lastname,' ',user.firstname)")." t, email, course.course_language l, 1 sort, category_code user_course_cat, date_start, date_end, session.id as id_session, session.name as session_name FROM $tbl_session_course_user as session_course_user @@ -2060,18 +2063,18 @@ class UserManager { INNER JOIN $tbl_session as session ON session.id = session_course_user.id_session LEFT JOIN $tbl_user as user - ON user.user_id = session_course_user.id_user + ON user.user_id = session_course_user.id_user OR session.id_coach = user.user_id WHERE session_course_user.id_session = $id_session - AND ((session_course_user.id_user=$user_id AND session_course_user.status = 2) OR session.id_coach=$user_id) + AND ((session_course_user.id_user=$user_id AND session_course_user.status = 2) OR session.id_coach = $user_id) ORDER BY i"; - + $course_list_sql_result = Database::query($personal_course_list_sql); - while ($result_row = Database::fetch_array($course_list_sql_result, 'ASSOC')) { + while ($result_row = Database::fetch_array($course_list_sql_result, 'ASSOC')) { $result_row['course_info'] = api_get_course_info($result_row['code']); $key = $result_row['id_session'].' - '.$result_row['code']; $personal_course_list[$key] = $result_row; - } + } } } @@ -2083,7 +2086,7 @@ class UserManager { } // this query is very similar to the above query, but it will check the session_rel_course_user table if there are courses registered to our user or not - $personal_course_list_sql = "SELECT DISTINCT course.code k, course.title i, CONCAT(user.lastname,' ',user.firstname) t, email, + $personal_course_list_sql = "SELECT DISTINCT course.code code, course.title i, CONCAT(user.lastname,' ',user.firstname) t, email, course.course_language l, 1 sort, category_code user_course_cat, date_start, date_end, session.id as id_session, session.name as session_name, " . "IF((session_course_user.id_user = 3 AND session_course_user.status=2),'2', '5') FROM $tbl_session_course_user as session_course_user @@ -2098,14 +2101,15 @@ class UserManager { while ($result_row = Database::fetch_array($course_list_sql_result, 'ASSOC')) { $result_row['course_info'] = api_get_course_info($result_row['code']); - $key = $result_row['id_session'].' - '.$result_row['k']; + $key = $result_row['id_session'].' - '.$result_row['code']; if (!isset($personal_course_list[$key])) { $personal_course_list[$key] = $result_row; } } - } + } return $personal_course_list; } + /** * Gives a list of courses for the given user in the given session * @param integer $user_id diff --git a/main/inc/lib/userportal.lib.php b/main/inc/lib/userportal.lib.php index b103d1ed52..012200afee 100644 --- a/main/inc/lib/userportal.lib.php +++ b/main/inc/lib/userportal.lib.php @@ -867,7 +867,7 @@ class IndexManager { //Load sessions in category $session_categories = UserManager::get_sessions_by_category($user_id, false); } - + $html = ''; //Showing history title @@ -885,9 +885,9 @@ class IndexManager { // If we're not in the history view... if (!isset($_GET['history'])) { //Display special courses - $special_courses = CourseManager :: display_special_courses($user_id, $this->load_directories_preview); + $special_courses = CourseManager::display_special_courses($user_id, $this->load_directories_preview); //Display courses - $courses_html .= CourseManager :: display_courses($user_id, $this->load_directories_preview); + $courses_html .= CourseManager::display_courses($user_id, $this->load_directories_preview); } $sessions_with_category = ''; @@ -942,7 +942,7 @@ class IndexManager { $params['icon'] = Display::return_icon('window_list.png', $session_box['title'], array('id' => 'session_img_'.$session_id), ICON_SIZE_LARGE); $extra_info = !empty($session_box['coach']) ? $session_box['coach'] : null; - $extra_info .= !empty($session_box['dates']) ? ' - '.$session_box['dates'] : null; + $extra_info .= !empty($session_box['coach']) ? ' - '.$session_box['dates'] : $session_box['dates']; if (api_is_drh()) { $session_link = $session_box['title']; @@ -967,7 +967,7 @@ class IndexManager { $sessions_with_no_category .= CourseManager::course_item_parent(CourseManager::course_item_html($params, true), $html_courses_session); } } - } else { + } else { // All sessions included in $count_courses_session = 0; $html_sessions = ''; @@ -987,6 +987,7 @@ class IndexManager { foreach ($session['courses'] as $course) { $is_coach_course = api_is_coach($session_id, $course['code']); + if ($is_coach_course) { $allowed_time = api_strtotime($date_session_start) - $days_access_before_beginning; } else { diff --git a/main/session/index.php b/main/session/index.php index f026da7166..98a916d889 100644 --- a/main/session/index.php +++ b/main/session/index.php @@ -47,8 +47,8 @@ $course_list = SessionManager::get_course_list_by_session_id($session_id); $new_session_list = UserManager::get_personal_session_course_list(api_get_user_id()); $user_course_list = array(); -foreach($new_session_list as $session_item) { - $user_course_list[] = $session_item['k']; +foreach ($new_session_list as $session_item) { + $user_course_list[] = $session_item['code']; } $my_session_list = array(); @@ -95,7 +95,7 @@ if (!empty($new_session_list)) { } } -if (!empty($course_list)) { +if (!empty($course_list)) { foreach ($course_list as $course_data) { if (in_array($course_data['code'], $user_course_list)) { $course_data['title'] = Display::url($course_data['title'], api_get_course_url($course_data['code'], $session_id)); @@ -113,8 +113,7 @@ if (!empty($course_list)) { $last_date = Tracking::get_last_connection_date_on_the_course(api_get_user_id(), $course_data['code'], $session_id, false); $icons = ''; - foreach($lp_list as $item) { - + foreach ($lp_list as $item) { if ($item['modified_on'] == '0000-00-00 00:00:00' || empty($item['modified_on'])) { $lp_date_original = $item['created_on']; $image = 'new.gif'; @@ -129,27 +128,27 @@ if (!empty($course_list)) { if (api_strtotime($mutation_date) > api_strtotime($max_mutation_date)) { $max_mutation_date = $mutation_date; - } - + } if (strtotime($last_date) < strtotime($lp_date_original)) { if (empty($icons)) { $icons .= ' '.Display::return_icon($image, get_lang('TitleNotification').': '.$label.' - '.$lp_date_original).' '; } } - } - $new_course_list[] = array( 'title'=> $course_data['title'].$icons, - // 'recent_lps' => $icons, - //'max_mutation_date' => substr(api_get_local_time($max_mutation_date),0,10), - 'exercise_count' => $exercise_count, - 'lp_count' => $lp_count); + } + + $new_course_list[] = array('title'=> $course_data['title'].$icons, + // 'recent_lps' => $icons, + //'max_mutation_date' => substr(api_get_local_time($max_mutation_date),0,10), + 'exercise_count' => $exercise_count, + 'lp_count' => $lp_count); } } //If the requested session does not exist in my list we stop the script if (!api_is_platform_admin()) { if (!in_array($session_id, $my_session_list)) { - api_not_allowed(); + api_not_allowed(true); } } @@ -416,8 +415,7 @@ $(function() { }); -$my_course['code']); + $course_list_code[] = array('code'=> $my_course['code']); } else { break; } diff --git a/main/webservices/cm_webservice_courses.php b/main/webservices/cm_webservice_courses.php index 7a3ae63959..57da3d2e3a 100644 --- a/main/webservices/cm_webservice_courses.php +++ b/main/webservices/cm_webservice_courses.php @@ -15,21 +15,19 @@ require_once(dirname(__FILE__).'/cm_webservice.php'); */ class WSCMCourses extends WSCM { - public function get_courses_code($username, $password) - { - if($this->verifyUserPass($username, $password) == "valid") - { + public function get_courses_code($username, $password) { + if($this->verifyUserPass($username, $password) == "valid") { $user_id = UserManager::get_user_id_from_username($username); $listOfCourses = UserManager::get_personal_session_course_list($user_id); $courses_id = "#"; foreach ($listOfCourses as $course){ - $courses_id .= $course['c']."#"; + $courses_id .= $course['code']."#"; } return $courses_id; - } else + } else { return get_lang('InvalidId'); - + } } public function get_course_title($username, $password, $course_code) diff --git a/user_portal.php b/user_portal.php index d879c4f7c0..7c98b24dc2 100644 --- a/user_portal.php +++ b/user_portal.php @@ -51,7 +51,7 @@ if (api_get_setting('go_to_course_after_login') == 'true') { $count_of_courses_no_sessions = 0; $count_of_courses_with_sessions = 0; - foreach($personal_course_list as $course) { + foreach ($personal_course_list as $course) { if (!empty($course['id_session'])) { $my_session_list[$course['id_session']] = true; $count_of_courses_with_sessions++; @@ -65,7 +65,7 @@ if (api_get_setting('go_to_course_after_login') == 'true') { $key = array_keys($personal_course_list); $course_info = $personal_course_list[$key[0]]; - $course_directory = $course_info['d']; + $course_directory = $course_info['course_info']['path']; $id_session = isset($course_info['id_session']) ? $course_info['id_session'] : 0; $url = api_get_path(WEB_CODE_PATH).'session/?session_id='.$id_session;