Procházet zdrojové kódy

Fixed show connected users in chat tool into several browser - partial DT#5558

Cristian Fasanando před 15 roky
rodič
revize
13cd4a66b8

+ 3 - 0
main/chat/chat_chat.php

@@ -74,8 +74,11 @@ if (!empty($course))
 			$perm = octdec(!empty($perm)?$perm:'0770');
 			@mkdir($chatPath,$perm);
 			@chmod($chatPath,$perm);
+			
+			/*
 			$doc_id=add_document($_course,'/chat_files','folder',0,'chat_files');
 			Database::query("INSERT INTO ".$TABLEITEMPROPERTY . " (tool,insert_user_id,insert_te,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility) VALUES ('document',1,NOW(),NOW(),$doc_id,'DocumentAdded',1,0,NULL,0)");
+			*/
 		}
 	}
 

+ 25 - 9
main/chat/chat_functions.lib.php

@@ -30,12 +30,18 @@
 function exit_of_chat ($user_id) {
 	$list_course=array();
  	$list_course=CourseManager::get_courses_list_by_user_id($user_id);
-		
+	
+	$group_id = intval($_SESSION['id_group']);
+	$session_id = intval($_SESSION['id_session']);
+	$extra_condition = '';
+	if (!empty($group_id))  $extra_condition = " AND to_group_id = '$group_id'";
+	else  $extra_condition = api_get_session_condition($session_id);
+	 	
  	foreach($list_course as $courses) {
  		$response=user_connected_in_chat($user_id,$courses['db_name']);
  		if ($response===true) {
  			$tbl_chat_connected = Database::get_course_chat_connected_table($courses['db_name']);;
- 			$sql='DELETE FROM '.$tbl_chat_connected.' WHERE user_id='.$user_id;
+ 			$sql='DELETE FROM '.$tbl_chat_connected.' WHERE user_id='.$user_id.$extra_condition;
  			Database::query($sql,__FILE__,__LINE__);
  		}
  	}
@@ -49,8 +55,14 @@ function exit_of_chat ($user_id) {
  */
 function user_connected_in_chat ($user_id,$database_name) {
  	$tbl_chat_connected = Database::get_course_chat_connected_table($database_name);
- 	 	
- 	$sql='SELECT COUNT(*) AS count FROM '.$tbl_chat_connected .' c WHERE user_id='.$user_id;
+ 	
+ 	$group_id = intval($_SESSION['id_group']);
+	$session_id = intval($_SESSION['id_session']);
+	$extra_condition = '';
+	if (!empty($group_id))  $extra_condition = " AND to_group_id = '$group_id'";
+	else  $extra_condition = api_get_session_condition($session_id);
+ 	
+ 	$sql='SELECT COUNT(*) AS count FROM '.$tbl_chat_connected .' c WHERE user_id='.$user_id.$extra_condition;
  	$result = Database::query($sql,__FILE__,__LINE__);
  	$count  = Database::fetch_array($result,'ASSOC');
  	if (1==$count['count']) {
@@ -72,7 +84,7 @@ function disconnect_user_of_chat () {
 	$cdate_m           = date('i',time());
 	$cdate_s           = date('s',time());
 	$cd_count_time_seconds=$cdate_h*3600 + $cdate_m*60 + $cdate_s;
- 
+
 	foreach ($list_info_user_in_chat as $list_info_user) {
 			$date_db_date = date('Y-m-d',strtotime($list_info_user['last_connection']));
 			$date_db_h  = date('H',strtotime($list_info_user['last_connection']));
@@ -86,8 +98,6 @@ function disconnect_user_of_chat () {
 		 			Database::query($sql,__FILE__,__LINE__);
 				}
 			}
-
-
 	}
 }
 
@@ -98,8 +108,14 @@ function disconnect_user_of_chat () {
 function users_list_in_chat () {
 	$list_users_in_chat=array();
  	$tbl_chat_connected = Database::get_course_chat_connected_table();
- 	 	
- 	$sql='SELECT user_id,last_connection FROM '.$tbl_chat_connected;
+ 	
+ 	$group_id = intval($_SESSION['id_group']);
+	$session_id = intval($_SESSION['id_session']);
+	$extra_condition = '';
+	if (!empty($group_id))  $extra_condition = " WHERE to_group_id = '$group_id'";
+	else  $extra_condition = api_get_session_condition($session_id,false);
+ 	
+ 	$sql='SELECT user_id,last_connection FROM '.$tbl_chat_connected.$extra_condition;
  	$result=Database::query($sql,__FILE__,__LINE__);
  	while ($row = Database::fetch_array($result,'ASSOC')) {
  		$list_users_in_chat[]=$row;

+ 1 - 1
main/chat/chat_hidden.php

@@ -84,7 +84,7 @@ if (!empty($group_id)) {
 $chat_size_old=intval($_POST['chat_size_old']);
 $chat_size_new=filesize($chatPath.$basename_chat.'.log.html');
 
-$sql="SELECT user_id FROM $tbl_chat_connected WHERE user_id='".$_user['user_id']."'";
+$sql="SELECT user_id FROM $tbl_chat_connected WHERE user_id='".$_user['user_id']."' $extra_condition";
 $result=Database::query($sql);
 
 //The user_id exists so we must do an UPDATE and not a INSERT

+ 3 - 0
main/chat/chat_message.php

@@ -135,9 +135,12 @@ if (!empty($course) && !empty($_user['user_id']))
 			$perm = octdec(!empty($perm)?$perm:'0770');
 			@mkdir($chatPath,$perm);
 			@chmod($chatPath,$perm);
+			
+			/*
 			$doc_id=add_document($_course,'/chat_files','folder',0,'chat_files');
 			$sql_insert = "INSERT INTO ".$TABLEITEMPROPERTY . " (tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility) VALUES ('document',1,NOW(),NOW(),$doc_id,'DocumentAdded',1,0,NULL,0)";
 			Database::query($sql_insert ,__FILE__,__LINE__);
+			*/
 		}
 	}
 

+ 5 - 5
main/chat/chat_whoisonline.php

@@ -71,7 +71,7 @@ if (!empty($course))
 
 	$Users = array();
 
-	if(!isset($_SESSION['id_session']))
+	if(empty($session_id))
 	{
 		$query="SELECT DISTINCT t1.user_id,username,firstname,lastname,picture_uri,t3.status FROM $tbl_user t1,$tbl_chat_connected t2,$tbl_course_user t3 WHERE t1.user_id=t2.user_id AND t3.user_id=t2.user_id AND t3.course_code = '".$_course['sysCode']."' AND t2.last_connection>'".$date_inter."' $extra_condition ORDER BY username";		
 		$result=Database::query($query,__FILE__,__LINE__);
@@ -80,7 +80,7 @@ if (!empty($course))
 	else
 	{
 		// select learners
-		$query="SELECT DISTINCT t1.user_id,username,firstname,lastname,picture_uri FROM $tbl_user t1,$tbl_chat_connected t2,$tbl_session_course_user t3 WHERE t1.user_id=t2.user_id AND t3.id_user=t2.user_id AND t3.id_session = '".$_SESSION['id_session']."' AND t3.course_code = '".$_course['sysCode']."' AND t2.last_connection>'".$date_inter."' $extra_condition ORDER BY username";
+		$query="SELECT DISTINCT t1.user_id,username,firstname,lastname,picture_uri FROM $tbl_user t1,$tbl_chat_connected t2,$tbl_session_course_user t3 WHERE t1.user_id=t2.user_id AND t3.id_user=t2.user_id AND t3.id_session = '".$session_id."' AND t3.course_code = '".$_course['sysCode']."' AND t2.last_connection>'".$date_inter."' $extra_condition ORDER BY username";
 		$result=Database::query($query,__FILE__,__LINE__);
 		while($learner = Database::fetch_array($result))
 		{
@@ -88,7 +88,7 @@ if (!empty($course))
 		}
 
 		// select session coach
-		$query="SELECT DISTINCT t1.user_id,username,firstname,lastname,picture_uri FROM $tbl_user t1,$tbl_chat_connected t2,$tbl_session t3 WHERE t1.user_id=t2.user_id AND t3.id_coach=t2.user_id AND t3.id = '".$_SESSION['id_session']."' AND t2.last_connection>'".$date_inter."' $extra_condition ORDER BY username";
+		$query="SELECT DISTINCT t1.user_id,username,firstname,lastname,picture_uri FROM $tbl_user t1,$tbl_chat_connected t2,$tbl_session t3 WHERE t1.user_id=t2.user_id AND t3.id_coach=t2.user_id AND t3.id = '".$session_id."' AND t2.last_connection>'".$date_inter."' $extra_condition ORDER BY username";
 		$result=Database::query($query,__FILE__,__LINE__);
 		if($coach = Database::fetch_array($result))
 			$Users[$coach['user_id']] = $coach;
@@ -98,7 +98,7 @@ if (!empty($course))
 				FROM $tbl_user t1,$tbl_chat_connected t2,$tbl_session_course_user t3 
 				WHERE t1.user_id=t2.user_id 
 				AND t3.id_user=t2.user_id AND t3.status=2 
-				AND t3.id_session = '".$_SESSION['id_session']."' 
+				AND t3.id_session = '".$session_id."' 
 				AND t3.course_code = '".$_course['sysCode']."' 
 				AND t2.last_connection>'".$date_inter."' $extra_condition ORDER BY username";
 
@@ -122,7 +122,7 @@ if (!empty($course))
 	foreach($Users as $enreg)
 	{
 		
-		if(!isset($_SESSION['id_session']))
+		if(empty($session_id))
 		{
 			$status=$enreg['status'];
 		}

+ 1 - 1
main/document/document.inc.php

@@ -348,7 +348,7 @@ function build_edit_icons($curdirpath,$type,$path,$visibility,$id,$is_template,$
 	else
 	{		
 		$modify_icons = '<a href="edit_document.php?'.api_get_cidreq().'&curdirpath='.$curdirpath.'&amp;file='.urlencode($path).$req_gid.'"><img src="../img/edit.gif" border="0" title="'.get_lang('Modify').'" alt="" /></a>';
-        	if (strcmp($path,'/audio')===0 or strcmp($path,'/flash')===0 or strcmp($path,'/images')===0 or strcmp($path,'/shared_folder')===0 or strcmp($path,'/video')===0) { 
+        	if (strcmp($path,'/audio')===0 or strcmp($path,'/flash')===0 or strcmp($path,'/images')===0 or strcmp($path,'/shared_folder')===0 or strcmp($path,'/video')===0 or strcmp($path,'/chat_files')===0) { 
         		$modify_icons .= '&nbsp;'.Display::return_icon('delete_na.gif',get_lang('ThisFolderCannotBeDeleted'));
         	} else {
         		$modify_icons .= '&nbsp;<a href="'.api_get_self().'?'.api_get_cidreq().'&curdirpath='.$curdirpath.'&amp;delete='.urlencode($path).$req_gid.'&amp;'.$sort_params.'" onclick="return confirmation(\''.basename($path).'\');"><img src="../img/delete.gif" border="0" title="'.get_lang('Delete').'" alt="" /></a>';

+ 6 - 3
main/inc/lib/add_course.lib.inc.php

@@ -984,11 +984,10 @@ function update_Db_course($courseDbName)
 		user_id int unsigned NOT NULL default '0',
 		last_connection datetime NOT NULL default '0000-00-00 00:00:00',
 		session_id smallint NOT NULL default 0,
-		to_group_id INT NOT NULL default 0, 
-		PRIMARY KEY (user_id)
+		to_group_id INT NOT NULL default 0		
 		)";
 	Database::query($sql, __FILE__, __LINE__);
-	$sql = "ALTER TABLE `".$TABLETOOLCHATCONNECTED . "` ADD INDEX ( session_id ) ";
+	$sql = "ALTER TABLE `".$TABLETOOLCHATCONNECTED . "` ADD INDEX `char_connected_index`(user_id, session_id, to_group_id) ";
 	Database::query($sql, __FILE__, __LINE__);
 	/*
 	-----------------------------------------------------------
@@ -2124,6 +2123,10 @@ function fill_Db_course($courseDbName, $courseRepository, $language,$default_doc
 		$example_doc_id = Database :: insert_id();
 		Database::query("INSERT INTO `".$TABLEITEMPROPERTY . "` (tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility) VALUES ('document',1,NOW(),NOW(),$example_doc_id,'DocumentAdded',1,0,NULL,0)", __FILE__, __LINE__);
 
+		Database::query("INSERT INTO `".$TABLETOOLDOCUMENT . "`(path,title,filetype,size) VALUES ('/chat_files','chat_files','folder','0')", __FILE__, __LINE__);
+		$example_doc_id = Database :: insert_id();
+		Database::query("INSERT INTO `".$TABLEITEMPROPERTY . "` (tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility) VALUES ('document',1,NOW(),NOW(),$example_doc_id,'DocumentAdded',1,0,NULL,0)", __FILE__, __LINE__);
+
 		//FILL THE COURSE DOCUMENT WITH DEFAULT COURSE PICTURES
 		$sys_course_path = api_get_path(SYS_COURSE_PATH);
 

+ 4 - 2
main/install/migrate-db-1.8.6.1-1.8.6.2-pre.sql

@@ -64,5 +64,7 @@ ALTER TABLE group_category ADD COLUMN chat_state TINYINT DEFAULT 1, ADD INDEX (c
 ALTER TABLE student_publication ADD COLUMN weight float(6,2) UNSIGNED NOT NULL DEFAULT 0;
 ALTER TABLE course_description ADD COLUMN description_type TINYINT NOT NULL DEFAULT 0;
 ALTER TABLE dropbox_category ADD COLUMN session_id smallint NOT NULL DEFAULT 0, ADD INDEX (session_id);
-ALTER TABLE chat_connected ADD COLUMN session_id  smallint NOT NULL DEFAULT 0, ADD INDEX (session_id);
-ALTER TABLE chat_connected ADD COLUMN to_group_id INT NOT NULL DEFAULT 0;
+ALTER TABLE chat_connected ADD COLUMN session_id  smallint NOT NULL DEFAULT 0;
+ALTER TABLE chat_connected ADD COLUMN to_group_id INT NOT NULL DEFAULT 0;
+ALTER TABLE chat_connected DROP PRIMARY KEY;  
+ALTER TABLE chat_connected ADD INDEX char_connected_index(user_id,session_id,to_group_id);