Browse Source

[svn r14706] moved get_personal_session_course_list to inc/lib/usermanager.lib.php because the same function is now used in admin/user_list.php for displaying a tooltip with the courses the user is subscribed to

Patrick Cool 17 years ago
parent
commit
4272ee3b19
3 changed files with 226 additions and 147 deletions
  1. 79 3
      main/admin/user_list.php
  2. 144 0
      main/inc/lib/usermanager.lib.php
  3. 3 144
      user_portal.php

+ 79 - 3
main/admin/user_list.php

@@ -1,6 +1,4 @@
-<?php
-
-// $Id: user_list.php 14705 2008-03-31 12:40:51Z pcool $
+<?php // $Id: user_list.php 14706 2008-03-31 13:04:57Z pcool $
 /*
 ==============================================================================
 	Dokeos - elearning and course management software
@@ -37,7 +35,77 @@ require ('../inc/global.inc.php');
 require_once (api_get_path(LIBRARY_PATH).'sortabletable.class.php');
 require_once (api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php');
 require_once (api_get_path(LIBRARY_PATH).'security.lib.php');
+require_once(api_get_path(LIBRARY_PATH).'xajax/xajax.inc.php');
 require_once (api_get_path(LIBRARY_PATH).'usermanager.lib.php');
+
+// xajax
+$xajax = new xajax();
+$xajax->registerFunction('courses_of_user');
+$xajax->registerFunction('empty_courses_of_user');
+$xajax->processRequests();
+function courses_of_user($arg)
+{
+	// do some stuff based on $arg like query data from a database and
+	// put it into a variable like $newContent
+    //$newContent = 'werkt het? en met een beetje meer text, wordt dat goed opgelost? ';    
+    $personal_course_list = UserManager::get_personal_session_course_list($arg);
+	$newContent = count($personal_course_list); 
+    foreach ($personal_course_list as $key=>$course)
+    {
+    	$newContent .= $course['i'].'<br />';
+    }
+    
+	// Instantiate the xajaxResponse object
+	$objResponse = new xajaxResponse();
+        
+	// add a command to the response to assign the innerHTML attribute of
+	// the element with id="SomeElementId" to whatever the new content is
+	$objResponse->addAssign("user".$arg,"innerHTML", $newContent);
+	$objResponse->addReplace("coursesofuser".$arg,"alt", $newContent);
+	$objResponse->addReplace("coursesofuser".$arg,"title", $newContent);
+        
+	//return the  xajaxResponse object
+	return $objResponse;
+}
+function empty_courses_of_user($arg)
+{
+	// do some stuff based on $arg like query data from a database and
+	// put it into a variable like $newContent
+    $newContent = '';    
+	// Instantiate the xajaxResponse object
+	$objResponse = new xajaxResponse();
+        
+	// add a command to the response to assign the innerHTML attribute of
+	// the element with id="SomeElementId" to whatever the new content is
+	$objResponse->addAssign("user".$arg,"innerHTML", $newContent);
+	
+        
+	//return the  xajaxResponse object
+	return $objResponse;
+}
+
+
+$htmlHeadXtra[] = $xajax->getJavascript('../inc/lib/xajax/');
+$htmlHeadXtra[] = '		<style>
+		.tooltipLinkInner {
+			color:blue;
+			text-decoration:none;												
+		}
+		
+		#tooltip .toolbox a:hover span {
+		  display: block! important;
+		  color: black;
+		  position: absolute;
+		}
+		
+		.tooltipInner {
+			margin:7px;
+			font-size:8pt;
+			float:right;
+		}
+		
+		</style>';
+
 $this_section = SECTION_PLATFORM_ADMIN;
 
 api_protect_admin_script();
@@ -290,6 +358,14 @@ function email_filter($email)
 function modify_filter($user_id,$url_params,$row)
 {
 	global $charset;
+	
+	$result .= '<span id="tooltip">
+				<span class="toolbox">
+				<a style="position: relative;" class="tooltipLinkInner" href="#">
+				<img src="../img/courses.gif" id="coursesofuser'.$user_id.'" onmouseout="xajax_empty_courses_of_user('.$user_id.');" onmouseover="xajax_courses_of_user('.$user_id.');" />
+				<span id="user'.$user_id.'" style="margin-left: -100px; border:1px solid black; width: 200px; background-color:white; z-index:99; padding: 3px; display: none; margin-right:inherit;">
+				<div style="text-align:center;"><img src="../img/anim-loader.gif" height="20" /></div>
+				</span></a></span></span>';	
 	$result .= '<a href="user_information.php?user_id='.$user_id.'"><img src="../img/synthese_view.gif" border="0" style="vertical-align: middle;" title="'.get_lang('Info').'" alt="'.get_lang('Info').'"/></a>&nbsp;';
 	$result .= '<a href="user_list.php?action=login_as&amp;user_id='.$user_id.'&amp;sec_token='.$_SESSION['sec_token'].'"><img src="../img/login_as.gif" border="0" style="vertical-align: middle;" alt="'.get_lang('LoginAs').'" title="'.get_lang('LoginAs').'"/></a>&nbsp;';
 

+ 144 - 0
main/inc/lib/usermanager.lib.php

@@ -956,5 +956,149 @@ class UserManager
 		}
 		return $extra_data;
 	}
+	
+	/**
+	 * Gives a list of [session_id-course_code] => [status] for the current user.
+	 * @param integer $user_id
+	 * @return array  list of statuses (session_id-course_code => status)
+	 */
+	function get_personal_session_course_list($user_id)
+	{
+		// Database Table Definitions
+		$main_course_user_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
+		$tbl_course 				= Database :: get_main_table(TABLE_MAIN_COURSE);
+		$tbl_user 					= Database :: get_main_table(TABLE_MAIN_USER);
+		$tbl_session 				= Database :: get_main_table(TABLE_MAIN_SESSION);
+		$tbl_course_user 			= Database :: get_main_table(TABLE_MAIN_COURSE_USER);
+		$tbl_session_course 		= Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
+		$tbl_session_course_user 	= Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
+	
+		// variable initialisation
+		$personal_course_list_sql = '';
+		$personal_course_list = array();
+	
+		//Courses in which we suscribed out of any session
+		/*$personal_course_list_sql = "SELECT course.code k, course.directory d, course.visual_code c, course.db_name db, course.title i,
+											course.tutor_name t, course.course_language l, course_rel_user.status s, course_rel_user.sort sort,
+											course_rel_user.user_course_cat user_course_cat
+											FROM    ".$tbl_course."       course,".$main_course_user_table."   course_rel_user
+											WHERE course.code = course_rel_user.course_code"."
+											AND   course_rel_user.user_id = '".$user_id."'
+											ORDER BY course_rel_user.user_course_cat, course_rel_user.sort ASC,i";*/
+	
+		$tbl_user_course_category    = Database :: get_user_personal_database();
+		
+		$personal_course_list_sql = "SELECT course.code k, course.directory d, course.visual_code c, course.db_name db, course.title i, course.tutor_name t, course.course_language l, course_rel_user.status s, course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat
+										FROM    ".$main_course_user_table."course_rel_user
+										LEFT JOIN ".$tbl_course."course
+										ON course.code = course_rel_user.course_code
+										LEFT JOIN `".$tbl_user_course_category."`.`user_course_category`
+										ON course_rel_user.user_course_cat = user_course_category.id
+										WHERE  course_rel_user.user_id = '".$user_id."'
+										ORDER BY user_course_category.sort, course_rel_user.sort ASC,i";
+		
+		$course_list_sql_result = api_sql_query($personal_course_list_sql, __FILE__, __LINE__);
+		
+		while ($result_row = mysql_fetch_array($course_list_sql_result))
+		{
+			$personal_course_list[] = $result_row;
+		}
+	
+		// get the list of sessions where the user is subscribed as student
+		$result=api_sql_query("SELECT DISTINCT id, name, date_start, date_end
+								FROM session_rel_user, session
+								WHERE id_session=id AND id_user=$user_id
+								AND (date_start <= NOW() AND date_end >= NOW() OR date_start='0000-00-00')
+								ORDER BY date_start, date_end, name",__FILE__,__LINE__);
+	
+		$sessions=api_store_result($result);
+	
+		$sessions = array_merge($sessions , api_store_result($result));
+	
+		// get the list of sessions where the user is subscribed as coach in a course
+		$result=api_sql_query("SELECT DISTINCT id, name, date_start, date_end
+								FROM $tbl_session as session
+								INNER JOIN $tbl_session_course as session_rel_course
+									ON session_rel_course.id_coach = $user_id
+								AND (date_start <= NOW() AND date_end >= NOW() OR date_start='0000-00-00')
+								ORDER BY date_start, date_end, name",__FILE__,__LINE__);
+	
+		$session_is_coach = api_store_result($result);
+	
+		$sessions = array_merge($sessions , $session_is_coach);
+	
+		// get the list of sessions where the user is subscribed as coach
+		$result=api_sql_query("SELECT DISTINCT id, name, date_start, date_end
+								FROM $tbl_session as session
+								WHERE session.id_coach = $user_id
+								AND (date_start <= NOW() AND date_end >= NOW() OR date_start='0000-00-00')
+								ORDER BY date_start, date_end, name",__FILE__,__LINE__);
+	
+		$sessions = array_merge($sessions , api_store_result($result));
+	
+	
+		if(api_is_allowed_to_create_course())
+		{
+			foreach($sessions as $enreg)
+			{
+				$id_session = $enreg['id'];
+				$personal_course_list_sql = "SELECT DISTINCT course.code k, course.directory d, course.visual_code c, course.db_name db, 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
+											 FROM $tbl_session_course as session_course
+											 INNER JOIN $tbl_course AS course
+											 	ON course.code = session_course.course_code
+											 INNER JOIN $tbl_session as session
+												ON session.id = session_course.id_session
+											 LEFT JOIN $tbl_user as user
+												ON user.user_id = session_course.id_coach
+											 WHERE session_course.id_session = $id_session
+											 AND (session_course.id_coach=$user_id OR session.id_coach=$user_id)
+											ORDER BY i";
+	
+				$course_list_sql_result = api_sql_query($personal_course_list_sql, __FILE__, __LINE__);
+	
+				while ($result_row = mysql_fetch_array($course_list_sql_result))
+				{
+					$result_row['s'] = 2;
+					$key = $result_row['id_session'].' - '.$result_row['k'];
+					$personal_course_list[$key] = $result_row;
+				}
+			}
+	
+		}
+	
+		foreach($sessions as $enreg)
+		{
+			$id_session = $enreg['id'];
+			$personal_course_list_sql = "SELECT DISTINCT course.code k, course.directory d, course.visual_code c, course.db_name db, 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.id_coach = ".$user_id.",'2', '5')
+										 FROM $tbl_session_course as session_course
+										 INNER JOIN $tbl_course AS course
+										 	ON course.code = session_course.course_code
+										 LEFT JOIN $tbl_user as user
+											ON user.user_id = session_course.id_coach
+										 INNER JOIN $tbl_session_course_user
+											ON $tbl_session_course_user.id_session = $id_session
+											AND $tbl_session_course_user.id_user = $user_id
+										INNER JOIN $tbl_session  as session
+											ON session_course.id_session = session.id
+										 WHERE session_course.id_session = $id_session
+										 ORDER BY i";
+	
+			$course_list_sql_result = api_sql_query($personal_course_list_sql, __FILE__, __LINE__);
+	
+			while ($result_row = mysql_fetch_array($course_list_sql_result))
+			{
+				$key = $result_row['id_session'].' - '.$result_row['k'];
+				$result_row['s'] = $result_row['14'];
+	
+				if(!isset($personal_course_list[$key]))
+				{
+					$personal_course_list[$key] = $result_row;
+				}
+			}
+		}
+		//print_r($personal_course_list);
+	
+		return $personal_course_list;
+	}	
 }
 ?>

+ 3 - 144
user_portal.php

@@ -82,6 +82,7 @@ include_once (api_get_path(LIBRARY_PATH).'course.lib.php');
 include_once (api_get_path(LIBRARY_PATH).'debug.lib.inc.php');
 include_once (api_get_path(LIBRARY_PATH).'system_announcements.lib.php');
 include_once (api_get_path(LIBRARY_PATH).'groupmanager.lib.php');
+include_once (api_get_path(LIBRARY_PATH).'usermanager.lib.php');
 
 api_block_anonymous_users(); // only users who are logged in can proceed
 
@@ -279,149 +280,7 @@ function get_personal_course_list($user_id)
 	return $personal_course_list;
 }
 
-/**
- * Gives a list of [session_id-course_code] => [status] for the current user.
- * @param integer $user_id
- * @return array  list of statuses (session_id-course_code => status)
- */
-function get_personal_session_course_list($user_id)
-{
-	// Database Table Definitions
-	$main_course_user_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
-	$tbl_course 				= Database :: get_main_table(TABLE_MAIN_COURSE);
-	$tbl_user 					= Database :: get_main_table(TABLE_MAIN_USER);
-	$tbl_session 				= Database :: get_main_table(TABLE_MAIN_SESSION);
-	$tbl_course_user 			= Database :: get_main_table(TABLE_MAIN_COURSE_USER);
-	$tbl_session_course 		= Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
-	$tbl_session_course_user 	= Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
-
-	// variable initialisation
-	$personal_course_list_sql = '';
-	$personal_course_list = array();
-
-	//Courses in which we suscribed out of any session
-	/*$personal_course_list_sql = "SELECT course.code k, course.directory d, course.visual_code c, course.db_name db, course.title i,
-										course.tutor_name t, course.course_language l, course_rel_user.status s, course_rel_user.sort sort,
-										course_rel_user.user_course_cat user_course_cat
-										FROM    ".$tbl_course."       course,".$main_course_user_table."   course_rel_user
-										WHERE course.code = course_rel_user.course_code"."
-										AND   course_rel_user.user_id = '".$user_id."'
-										ORDER BY course_rel_user.user_course_cat, course_rel_user.sort ASC,i";*/
-
-	$tbl_user_course_category    = Database :: get_user_personal_database();
-	
-	$personal_course_list_sql = "SELECT course.code k, course.directory d, course.visual_code c, course.db_name db, course.title i, course.tutor_name t, course.course_language l, course_rel_user.status s, course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat
-									FROM    ".$main_course_user_table."course_rel_user
-									LEFT JOIN ".$tbl_course."course
-									ON course.code = course_rel_user.course_code
-									LEFT JOIN `".$tbl_user_course_category."`.`user_course_category`
-									ON course_rel_user.user_course_cat = user_course_category.id
-									WHERE  course_rel_user.user_id = '".$user_id."'
-									ORDER BY user_course_category.sort, course_rel_user.sort ASC,i";
-	
-	$course_list_sql_result = api_sql_query($personal_course_list_sql, __FILE__, __LINE__);
-	
-	while ($result_row = mysql_fetch_array($course_list_sql_result))
-	{
-		$personal_course_list[] = $result_row;
-	}
-
-	// get the list of sessions where the user is subscribed as student
-	$result=api_sql_query("SELECT DISTINCT id, name, date_start, date_end
-							FROM session_rel_user, session
-							WHERE id_session=id AND id_user=$user_id
-							AND (date_start <= NOW() AND date_end >= NOW() OR date_start='0000-00-00')
-							ORDER BY date_start, date_end, name",__FILE__,__LINE__);
-
-	$sessions=api_store_result($result);
-
-	$sessions = array_merge($sessions , api_store_result($result));
-
-	// get the list of sessions where the user is subscribed as coach in a course
-	$result=api_sql_query("SELECT DISTINCT id, name, date_start, date_end
-							FROM $tbl_session as session
-							INNER JOIN $tbl_session_course as session_rel_course
-								ON session_rel_course.id_coach = $user_id
-							AND (date_start <= NOW() AND date_end >= NOW() OR date_start='0000-00-00')
-							ORDER BY date_start, date_end, name",__FILE__,__LINE__);
 
-	$session_is_coach = api_store_result($result);
-
-	$sessions = array_merge($sessions , $session_is_coach);
-
-	// get the list of sessions where the user is subscribed as coach
-	$result=api_sql_query("SELECT DISTINCT id, name, date_start, date_end
-							FROM $tbl_session as session
-							WHERE session.id_coach = $user_id
-							AND (date_start <= NOW() AND date_end >= NOW() OR date_start='0000-00-00')
-							ORDER BY date_start, date_end, name",__FILE__,__LINE__);
-
-	$sessions = array_merge($sessions , api_store_result($result));
-
-
-	if(api_is_allowed_to_create_course())
-	{
-		foreach($sessions as $enreg)
-		{
-			$id_session = $enreg['id'];
-			$personal_course_list_sql = "SELECT DISTINCT course.code k, course.directory d, course.visual_code c, course.db_name db, 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
-										 FROM $tbl_session_course as session_course
-										 INNER JOIN $tbl_course AS course
-										 	ON course.code = session_course.course_code
-										 INNER JOIN $tbl_session as session
-											ON session.id = session_course.id_session
-										 LEFT JOIN $tbl_user as user
-											ON user.user_id = session_course.id_coach
-										 WHERE session_course.id_session = $id_session
-										 AND (session_course.id_coach=$user_id OR session.id_coach=$user_id)
-										ORDER BY i";
-
-			$course_list_sql_result = api_sql_query($personal_course_list_sql, __FILE__, __LINE__);
-
-			while ($result_row = mysql_fetch_array($course_list_sql_result))
-			{
-				$result_row['s'] = 2;
-				$key = $result_row['id_session'].' - '.$result_row['k'];
-				$personal_course_list[$key] = $result_row;
-			}
-		}
-
-	}
-
-	foreach($sessions as $enreg)
-	{
-		$id_session = $enreg['id'];
-		$personal_course_list_sql = "SELECT DISTINCT course.code k, course.directory d, course.visual_code c, course.db_name db, 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.id_coach = ".$user_id.",'2', '5')
-									 FROM $tbl_session_course as session_course
-									 INNER JOIN $tbl_course AS course
-									 	ON course.code = session_course.course_code
-									 LEFT JOIN $tbl_user as user
-										ON user.user_id = session_course.id_coach
-									 INNER JOIN $tbl_session_course_user
-										ON $tbl_session_course_user.id_session = $id_session
-										AND $tbl_session_course_user.id_user = $user_id
-									INNER JOIN $tbl_session  as session
-										ON session_course.id_session = session.id
-									 WHERE session_course.id_session = $id_session
-									 ORDER BY i";
-
-		$course_list_sql_result = api_sql_query($personal_course_list_sql, __FILE__, __LINE__);
-
-		while ($result_row = mysql_fetch_array($course_list_sql_result))
-		{
-			$key = $result_row['id_session'].' - '.$result_row['k'];
-			$result_row['s'] = $result_row['14'];
-
-			if(!isset($personal_course_list[$key]))
-			{
-				$personal_course_list[$key] = $result_row;
-			}
-		}
-	}
-	//print_r($personal_course_list);
-
-	return $personal_course_list;
-}
 
 /*
 -----------------------------------------------------------
@@ -926,12 +785,12 @@ else
 
 	$list = '';
 
-	$personal_course_list = get_personal_session_course_list($_user['user_id']);
+	$personal_course_list = UserManager::get_personal_session_course_list($_user['user_id']);
 
 	/*if(api_get_setting('use_session_mode')=='true' && !$nosession)
 	{
 		echo "bouh";
-		$personal_course_list = get_personal_session_course_list($_user['user_id']);
+		$personal_course_list = UserManager::get_personal_session_course_list($_user['user_id']);
 	}
 	else
 	{