From 010cc7b92910f8b0120e2153cbf96e6bd83b8ec8 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Thu, 5 Feb 2009 21:57:35 +0100 Subject: [PATCH] [svn r18262] "Who is online" and "my reporting" features fixed when multiple urls is enabled FS#3462 --- main/admin/access_url_add_courses_to_url.php | 2 +- main/admin/subscribe_user2course.php | 47 +++++++++- main/inc/lib/online.inc.php | 15 +++- main/inc/lib/tracking.lib.php | 94 +++++++++++++++++++- main/mySpace/index.php | 60 +++++++++++-- 5 files changed, 204 insertions(+), 14 deletions(-) diff --git a/main/admin/access_url_add_courses_to_url.php b/main/admin/access_url_add_courses_to_url.php index e6bb6bfd98..6000d860ac 100755 --- a/main/admin/access_url_add_courses_to_url.php +++ b/main/admin/access_url_add_courses_to_url.php @@ -127,7 +127,7 @@ if(empty($first_letter_user)) } $sql = "SELECT code, title FROM $tbl_course WHERE title LIKE '".$first_letter_course."%' OR title LIKE '".strtolower($first_letter_course)."%' - ORDER BY title DESC "; + ORDER BY title, code DESC "; $result = api_sql_query($sql, __FILE__, __LINE__); $db_courses = api_store_result($result); diff --git a/main/admin/subscribe_user2course.php b/main/admin/subscribe_user2course.php index 356d30f295..d1aebf05cf 100644 --- a/main/admin/subscribe_user2course.php +++ b/main/admin/subscribe_user2course.php @@ -1,10 +1,10 @@ 0 ? "(user_id IN(".implode(',', $users).")) DESC," : "")." lastname"; +global $_configuration; +if ($_configuration['multiple_access_urls']==true) { + $tbl_user_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); + $access_url_id = api_get_current_access_url_id(); + if ($access_url_id != -1){ + $sql = "SELECT u.user_id,lastname,firstname,username FROM ".$tbl_user ." u + INNER JOIN $tbl_user_rel_access_url user_rel_url + ON (user_rel_url.user_id = u.user_id) + WHERE access_url_id = $access_url_id AND (lastname LIKE '".$first_letter_user."%' ) ORDER BY ". (count($users) > 0 ? "(u.user_id IN(".implode(',', $users).")) DESC," : "")." lastname"; + } +} $result = api_sql_query($sql, __FILE__, __LINE__); $db_users = api_store_result($result); unset($result); + $sql = "SELECT code,visual_code,title FROM $tbl_course WHERE visual_code LIKE '".$first_letter_course."%' ORDER BY ". (count($courses) > 0 ? "(code IN('".implode("','", $courses)."')) DESC," : "")." visual_code"; +if ($_configuration['multiple_access_urls']==true) { + $tbl_course_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); + $access_url_id = api_get_current_access_url_id(); + if ($access_url_id != -1){ + $sql = "SELECT code, visual_code, title + FROM $tbl_course as course + INNER JOIN $tbl_course_rel_access_url course_rel_url + ON (course_rel_url.course_code= course.code) + WHERE access_url_id = $access_url_id AND (visual_code LIKE '".$first_letter_course."%' ) ORDER BY ". (count($courses) > 0 ? "(code IN('".implode("','", $courses)."')) DESC," : "")." visual_code"; + } +} + $result = api_sql_query($sql, __FILE__, __LINE__); $db_courses = api_store_result($result); unset($result); + +if ($_configuration['multiple_access_urls']==true) { + $tbl_course_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); + $access_url_id = api_get_current_access_url_id(); + if ($access_url_id != -1){ + $sqlNbCours = " SELECT course_rel_user.course_code, course.title + FROM $tbl_course_user as course_rel_user + INNER JOIN $tbl_course as course + ON course.code = course_rel_user.course_code + INNER JOIN $tbl_course_rel_access_url course_rel_url + ON (course_rel_url.course_code= course.code) + WHERE access_url_id = $access_url_id AND course_rel_user.user_id='".$_user['user_id']."' AND course_rel_user.status='1' + ORDER BY course.title"; + } +} + + ?>
diff --git a/main/inc/lib/online.inc.php b/main/inc/lib/online.inc.php index cc28b7a6a6..51f5f1c73a 100644 --- a/main/inc/lib/online.inc.php +++ b/main/inc/lib/online.inc.php @@ -92,7 +92,20 @@ function WhoIsOnline($uid=0,$statistics_database='',$valid) $valid = (int) $valid; $current_date=date('Y-m-d H:i:s',time()); $track_online_table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ONLINE); - $query = "SELECT login_user_id,login_date FROM ".$track_online_table ." WHERE DATE_ADD(login_date,INTERVAL $valid MINUTE) >= '".$current_date."' "; + $query = "SELECT login_user_id,login_date FROM ".$track_online_table ." WHERE DATE_ADD(login_date,INTERVAL $valid MINUTE) >= '".$current_date."' "; + + global $_configuration; + if ($_configuration['multiple_access_urls']==true) { + $tbl_user_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER); + $access_url_id = api_get_current_access_url_id(); + if ($access_url_id != -1){ + $query = "SELECT login_user_id,login_date FROM ".$track_online_table ." track + INNER JOIN $tbl_user_rel_access_url user_rel_url + ON (user_rel_url.user_id = track.login_user_id) + WHERE access_url_id = $access_url_id AND DATE_ADD(login_date,INTERVAL $valid MINUTE) >= '".$current_date."' "; + } + } + $result = @api_sql_query($query,__FILE__,__LINE__); if (count($result)>0) { diff --git a/main/inc/lib/tracking.lib.php b/main/inc/lib/tracking.lib.php index f890d2d03d..18c7207319 100644 --- a/main/inc/lib/tracking.lib.php +++ b/main/inc/lib/tracking.lib.php @@ -478,6 +478,19 @@ class Tracking { // At first, courses where $coach_id is coach of the course // ////////////////////////////////////////////////////////////// $sql = 'SELECT id_session, course_code FROM ' . $tbl_session_course . ' WHERE id_coach=' . $coach_id; + + global $_configuration; + if ($_configuration['multiple_access_urls']==true) { + $tbl_session_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); + $access_url_id = api_get_current_access_url_id(); + if ($access_url_id != -1){ + $sql = 'SELECT id_session, course_code + FROM ' . $tbl_session_course . ' session_course INNER JOIN '.$tbl_session_rel_access_url.' session_rel_url + ON (session_course.id_session=session_rel_url.session_id) + WHERE id_coach=' . $coach_id.' AND access_url_id = '.$access_url_id; + } + } + $result = api_sql_query($sql,__FILE__,__LINE__); while ($a_courses = Database::fetch_array($result)) { @@ -507,6 +520,23 @@ class Tracking { INNER JOIN ' . $tbl_session . ' as session ON session.id = session_course.id_session AND session.id_coach = ' . $coach_id; + if ($_configuration['multiple_access_urls']==true) { + $tbl_session_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); + $access_url_id = api_get_current_access_url_id(); + if ($access_url_id != -1){ + $sql = 'SELECT session_course_user.id_user + FROM ' . $tbl_session_course_user . ' as session_course_user + INNER JOIN ' . $tbl_session_course . ' as session_course + ON session_course.course_code = session_course_user.course_code + AND session_course_user.id_session = session_course.id_session + INNER JOIN ' . $tbl_session . ' as session + ON session.id = session_course.id_session + AND session.id_coach = ' . $coach_id.' + INNER JOIN '.$tbl_session_rel_access_url.' session_rel_url + ON session.id = session_rel_url.session_id WHERE access_url_id = '.$access_url_id; + } + } + $result = api_sql_query($sql,__FILE__,__LINE__); while ($row = Database::fetch_array($result)) { @@ -622,6 +652,18 @@ class Tracking { // At first, courses where $coach_id is coach of the course // ////////////////////////////////////////////////////////////// $sql = 'SELECT DISTINCT course_code FROM ' . $tbl_session_course . ' WHERE id_coach=' . $coach_id; + + global $_configuration; + if ($_configuration['multiple_access_urls']==true) { + $tbl_course_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); + $access_url_id = api_get_current_access_url_id(); + if ($access_url_id != -1){ + $sql = 'SELECT DISTINCT session_course.course_code FROM ' . $tbl_session_course . ' session_course INNER JOIN '.$tbl_course_rel_access_url.' course_rel_url + ON (session_course.course_code = course_rel_url.course_code) + WHERE id_coach=' . $coach_id.' AND access_url_id = '.$access_url_id; + } + } + if (!empty ($id_session)) $sql .= ' AND id_session=' . $id_session; $result = api_sql_query($sql, __FILE__, __LINE__); @@ -639,8 +681,30 @@ class Tracking { AND session.id_coach = ' . $coach_id . ' INNER JOIN ' . $tbl_course . ' as course ON course.code = session_course.course_code'; - if (!empty ($id_session)) + + if ($_configuration['multiple_access_urls']==true) { + $tbl_course_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); + $access_url_id = api_get_current_access_url_id(); + if ($access_url_id != -1){ + $sql = 'SELECT DISTINCT session_course.course_code + FROM ' . $tbl_session_course . ' as session_course + INNER JOIN ' . $tbl_session . ' as session + ON session.id = session_course.id_session + AND session.id_coach = ' . $coach_id . ' + INNER JOIN ' . $tbl_course . ' as course + ON course.code = session_course.course_code + INNER JOIN '.$tbl_course_rel_access_url.' course_rel_url + ON (session_course.course_code = course_rel_url.course_code)'; + } + } + + if (!empty ($id_session)) { $sql .= ' WHERE session_course.id_session=' . $id_session; + $sql .= ' AND access_url_id = '.$access_url_id; + } else { + $sql .= ' WHERE access_url_id = '.$access_url_id; + } + $result = api_sql_query($sql, __FILE__, __LINE__); while ($row = Database::fetch_array($result)) { @@ -662,6 +726,18 @@ class Tracking { $sql = 'SELECT DISTINCT id, name, date_start, date_end FROM ' . $tbl_session . ' WHERE id_coach=' . $coach_id; + + global $_configuration; + if ($_configuration['multiple_access_urls']==true) { + $tbl_session_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); + $access_url_id = api_get_current_access_url_id(); + if ($access_url_id != -1){ + $sql = 'SELECT DISTINCT id, name, date_start, date_end + FROM ' . $tbl_session . ' session INNER JOIN '.$tbl_session_rel_access_url.' session_rel_url + ON (session.id = session_rel_url.session_id) + WHERE id_coach=' . $coach_id.' AND access_url_id = '.$access_url_id; + } + } $rs = api_sql_query($sql,__FILE__,__LINE__); @@ -676,6 +752,22 @@ class Tracking { INNER JOIN ' . $tbl_session_course . ' as session_course ON session.id = session_course.id_session AND session_course.id_coach=' . $coach_id; + + global $_configuration; + if ($_configuration['multiple_access_urls']==true) { + $tbl_session_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); + $access_url_id = api_get_current_access_url_id(); + if ($access_url_id != -1){ + $sql = 'SELECT DISTINCT session.id, session.name, session.date_start, session.date_end + FROM ' . $tbl_session . ' as session + INNER JOIN ' . $tbl_session_course . ' as session_course + ON session.id = session_course.id_session AND session_course.id_coach=' . $coach_id.' + INNER JOIN '.$tbl_session_rel_access_url.' session_rel_url + ON (session.id = session_rel_url.session_id) + WHERE access_url_id = '.$access_url_id; + } + } + $rs = api_sql_query($sql,__FILE__,__LINE__); while ($row = Database::fetch_array($rs)) diff --git a/main/mySpace/index.php b/main/mySpace/index.php index 352bb9ace8..d7c6380f36 100644 --- a/main/mySpace/index.php +++ b/main/mySpace/index.php @@ -3,8 +3,9 @@ ============================================================================== Dokeos - elearning and course management software - Copyright (c) 2004-2008 Dokeos SPRL + Copyright (c) 2004-2009 Dokeos SPRL Copyright (c) 2003 Ghent University (UGent) + Copyright (c) various contributors For a full list of contributors, see "credits.txt". The full license can be read in "license.txt". @@ -16,7 +17,8 @@ See the GNU General Public License for more details. - Contact: Dokeos, rue Notre Dame, 152, B-1140 Evere, Belgium, info@dokeos.com + Contact address: Dokeos, rue du Corbeau, 108, B-1030 Brussels, Belgium + Mail: info@dokeos.com ============================================================================== */ @@ -104,18 +106,35 @@ $isPlatformAdmin = api_is_platform_admin(); $view = isset($_GET['view']) ? $_GET['view'] : 'teacher'; $menu_items = array(); +global $_configuration; -if(api_is_allowed_to_create_course()) -{ - +if(api_is_allowed_to_create_course()) { $sqlNbCours = " SELECT course_rel_user.course_code, course.title FROM $tbl_course_user as course_rel_user INNER JOIN $tbl_course as course ON course.code = course_rel_user.course_code WHERE course_rel_user.user_id='".$_user['user_id']."' AND course_rel_user.status='1' ORDER BY course.title"; - $resultNbCours = api_sql_query($sqlNbCours, __FILE__, __LINE__); + + + if ($_configuration['multiple_access_urls']==true) { + $tbl_course_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); + $access_url_id = api_get_current_access_url_id(); + if ($access_url_id != -1){ + $sqlNbCours = " SELECT course_rel_user.course_code, course.title + FROM $tbl_course_user as course_rel_user + INNER JOIN $tbl_course as course + ON course.code = course_rel_user.course_code + INNER JOIN $tbl_course_rel_access_url course_rel_url + ON (course_rel_url.course_code= course.code) + WHERE access_url_id = $access_url_id AND course_rel_user.user_id='".$_user['user_id']."' AND course_rel_user.status='1' + ORDER BY course.title"; + } + } + + $resultNbCours = api_sql_query($sqlNbCours, __FILE__, __LINE__); $a_courses = api_store_result($resultNbCours); + $nb_teacher_courses = count($a_courses); if($nb_teacher_courses) { @@ -204,8 +223,7 @@ if($_user['status']==DRH && $view=='drh') if($isCoach && $view=='coach') { $a_students = Tracking :: get_student_followed_by_coach($_user['user_id']); - $a_courses = Tracking :: get_courses_followed_by_coach($_user['user_id']); - + $a_courses = Tracking :: get_courses_followed_by_coach($_user['user_id']); } if($view=='coach' || $view=='drh') @@ -652,6 +670,19 @@ if(api_is_platform_admin() && $view=='admin') WHERE id_coach=user_id AND login_user_id=user_id GROUP BY user_id " ; // ORDER BY login_date ".$tracking_direction; + + + if ($_configuration['multiple_access_urls']==true) { + $tbl_session_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); + $access_url_id = api_get_current_access_url_id(); + if ($access_url_id != -1){ + $sqlCoachs = " SELECT DISTINCT id_coach, user_id, lastname, firstname, MAX(login_date) as login_date + FROM $tbl_user, $tbl_session_course, $tbl_track_login , $tbl_session_rel_access_url session_rel_url + WHERE id_coach=user_id AND login_user_id=user_id AND access_url_id = $access_url_id AND session_rel_url.session_id=id_session + GROUP BY user_id " ; + } + } + if(!empty($order[$tracking_column])) { $sqlCoachs .= "ORDER BY ".$order[$tracking_column]." ".$tracking_direction; @@ -670,6 +701,19 @@ if(api_is_platform_admin() && $view=='admin') WHERE id_coach=user_id AND login_user_id=user_id GROUP BY user_id ORDER BY login_date '.$tracking_direction; + + if ($_configuration['multiple_access_urls']==true) { + $tbl_session_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); + $access_url_id = api_get_current_access_url_id(); + if ($access_url_id != -1){ + $sql_session_coach = 'SELECT session.id_coach, user_id, lastname, firstname, MAX(login_date) as login_date + FROM '.$tbl_user.','.$tbl_sessions.' as session,'.$tbl_track_login.' , '.$tbl_session_rel_access_url.' as session_rel_url + WHERE id_coach=user_id AND login_user_id=user_id AND access_url_id = '.$access_url_id.' AND session_rel_url.session_id=session.id + GROUP BY user_id + ORDER BY login_date '.$tracking_direction; + } + } + $result_sessions_coach=api_sql_query($sql_session_coach, __FILE__, __LINE__); $total_no_coachs += Database::num_rows($result_sessions_coach); while($a_coach=Database::fetch_array($result_sessions_coach)){