[svn r18262] "Who is online" and "my reporting" features fixed when multiple urls is enabled FS#3462

skala
Julio Montoya 17 years ago
parent b2cd627156
commit 010cc7b929
  1. 2
      main/admin/access_url_add_courses_to_url.php
  2. 47
      main/admin/subscribe_user2course.php
  3. 15
      main/inc/lib/online.inc.php
  4. 94
      main/inc/lib/tracking.lib.php
  5. 60
      main/mySpace/index.php

@ -127,7 +127,7 @@ if(empty($first_letter_user))
} }
$sql = "SELECT code, title FROM $tbl_course $sql = "SELECT code, title FROM $tbl_course
WHERE title LIKE '".$first_letter_course."%' OR title LIKE '".strtolower($first_letter_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__); $result = api_sql_query($sql, __FILE__, __LINE__);
$db_courses = api_store_result($result); $db_courses = api_store_result($result);

@ -1,10 +1,10 @@
<?php <?php
// $Id: subscribe_user2course.php 12487 2007-05-27 06:00:33Z yannoo $ // $Id: subscribe_user2course.php 18262 2009-02-05 20:57:35Z juliomontoya $
/* /*
============================================================================== ==============================================================================
Dokeos - elearning and course management software Dokeos - elearning and course management software
Copyright (c) 2004 Dokeos S.A. Copyright (c) 2004-2009 Dokeos SPRL
Copyright (c) 2003 Ghent University (UGent) Copyright (c) 2003 Ghent University (UGent)
Copyright (c) 2001 Universite catholique de Louvain (UCL) Copyright (c) 2001 Universite catholique de Louvain (UCL)
Copyright (c) Olivier Brouckaert Copyright (c) Olivier Brouckaert
@ -19,7 +19,7 @@
See the GNU General Public License for more details. See the GNU General Public License for more details.
Contact address: Dokeos, 44 rue des palais, B-1030 Brussels, Belgium Contact address: Dokeos, rue du Corbeau, 108, B-1030 Brussels, Belgium
Mail: info@dokeos.com Mail: info@dokeos.com
============================================================================== ==============================================================================
*/ */
@ -137,13 +137,54 @@ if(empty($first_letter_user))
unset($result); unset($result);
} }
$sql = "SELECT user_id,lastname,firstname,username FROM $tbl_user WHERE lastname LIKE '".$first_letter_user."%' ORDER BY ". (count($users) > 0 ? "(user_id IN(".implode(',', $users).")) DESC," : "")." lastname"; $sql = "SELECT user_id,lastname,firstname,username FROM $tbl_user WHERE lastname LIKE '".$first_letter_user."%' ORDER BY ". (count($users) > 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__); $result = api_sql_query($sql, __FILE__, __LINE__);
$db_users = api_store_result($result); $db_users = api_store_result($result);
unset($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"; $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__); $result = api_sql_query($sql, __FILE__, __LINE__);
$db_courses = api_store_result($result); $db_courses = api_store_result($result);
unset($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";
}
}
?> ?>
<form name="formulaire" method="post" action="<?php echo api_get_self(); ?>" style="margin:0px;"> <form name="formulaire" method="post" action="<?php echo api_get_self(); ?>" style="margin:0px;">

@ -92,7 +92,20 @@ function WhoIsOnline($uid=0,$statistics_database='',$valid)
$valid = (int) $valid; $valid = (int) $valid;
$current_date=date('Y-m-d H:i:s',time()); $current_date=date('Y-m-d H:i:s',time());
$track_online_table = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ONLINE); $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__); $result = @api_sql_query($query,__FILE__,__LINE__);
if (count($result)>0) if (count($result)>0)
{ {

@ -478,6 +478,19 @@ class Tracking {
// At first, courses where $coach_id is coach of the course // // 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; $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__); $result = api_sql_query($sql,__FILE__,__LINE__);
while ($a_courses = Database::fetch_array($result)) { while ($a_courses = Database::fetch_array($result)) {
@ -507,6 +520,23 @@ class Tracking {
INNER JOIN ' . $tbl_session . ' as session INNER JOIN ' . $tbl_session . ' as session
ON session.id = session_course.id_session ON session.id = session_course.id_session
AND session.id_coach = ' . $coach_id; 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__); $result = api_sql_query($sql,__FILE__,__LINE__);
while ($row = Database::fetch_array($result)) { while ($row = Database::fetch_array($result)) {
@ -622,6 +652,18 @@ class Tracking {
// At first, courses where $coach_id is coach of the course // // 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; $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)) if (!empty ($id_session))
$sql .= ' AND id_session=' . $id_session; $sql .= ' AND id_session=' . $id_session;
$result = api_sql_query($sql, __FILE__, __LINE__); $result = api_sql_query($sql, __FILE__, __LINE__);
@ -639,8 +681,30 @@ class Tracking {
AND session.id_coach = ' . $coach_id . ' AND session.id_coach = ' . $coach_id . '
INNER JOIN ' . $tbl_course . ' as course INNER JOIN ' . $tbl_course . ' as course
ON course.code = session_course.course_code'; 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 .= ' 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__); $result = api_sql_query($sql, __FILE__, __LINE__);
while ($row = Database::fetch_array($result)) { while ($row = Database::fetch_array($result)) {
@ -662,6 +726,18 @@ class Tracking {
$sql = 'SELECT DISTINCT id, name, date_start, date_end $sql = 'SELECT DISTINCT id, name, date_start, date_end
FROM ' . $tbl_session . ' FROM ' . $tbl_session . '
WHERE id_coach=' . $coach_id; 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__); $rs = api_sql_query($sql,__FILE__,__LINE__);
@ -676,6 +752,22 @@ class Tracking {
INNER JOIN ' . $tbl_session_course . ' as session_course INNER JOIN ' . $tbl_session_course . ' as session_course
ON session.id = session_course.id_session ON session.id = session_course.id_session
AND session_course.id_coach=' . $coach_id; 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__); $rs = api_sql_query($sql,__FILE__,__LINE__);
while ($row = Database::fetch_array($rs)) while ($row = Database::fetch_array($rs))

@ -3,8 +3,9 @@
============================================================================== ==============================================================================
Dokeos - elearning and course management software 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) 2003 Ghent University (UGent)
Copyright (c) various contributors
For a full list of contributors, see "credits.txt". For a full list of contributors, see "credits.txt".
The full license can be read in "license.txt". The full license can be read in "license.txt".
@ -16,7 +17,8 @@
See the GNU General Public License for more details. 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'; $view = isset($_GET['view']) ? $_GET['view'] : 'teacher';
$menu_items = array(); $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 $sqlNbCours = " SELECT course_rel_user.course_code, course.title
FROM $tbl_course_user as course_rel_user FROM $tbl_course_user as course_rel_user
INNER JOIN $tbl_course as course INNER JOIN $tbl_course as course
ON course.code = course_rel_user.course_code ON course.code = course_rel_user.course_code
WHERE course_rel_user.user_id='".$_user['user_id']."' AND course_rel_user.status='1' WHERE course_rel_user.user_id='".$_user['user_id']."' AND course_rel_user.status='1'
ORDER BY course.title"; 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); $a_courses = api_store_result($resultNbCours);
$nb_teacher_courses = count($a_courses); $nb_teacher_courses = count($a_courses);
if($nb_teacher_courses) if($nb_teacher_courses)
{ {
@ -204,8 +223,7 @@ if($_user['status']==DRH && $view=='drh')
if($isCoach && $view=='coach') if($isCoach && $view=='coach')
{ {
$a_students = Tracking :: get_student_followed_by_coach($_user['user_id']); $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') 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 WHERE id_coach=user_id AND login_user_id=user_id
GROUP BY user_id " ; GROUP BY user_id " ;
// ORDER BY login_date ".$tracking_direction; // 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])) if(!empty($order[$tracking_column]))
{ {
$sqlCoachs .= "ORDER BY ".$order[$tracking_column]." ".$tracking_direction; $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 WHERE id_coach=user_id AND login_user_id=user_id
GROUP BY user_id GROUP BY user_id
ORDER BY login_date '.$tracking_direction; 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__); $result_sessions_coach=api_sql_query($sql_session_coach, __FILE__, __LINE__);
$total_no_coachs += Database::num_rows($result_sessions_coach); $total_no_coachs += Database::num_rows($result_sessions_coach);
while($a_coach=Database::fetch_array($result_sessions_coach)){ while($a_coach=Database::fetch_array($result_sessions_coach)){

Loading…
Cancel
Save