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

skala
Cristian Fasanando 16 years ago
parent f72341b8a9
commit 13cd4a66b8
  1. 3
      main/chat/chat_chat.php
  2. 34
      main/chat/chat_functions.lib.php
  3. 2
      main/chat/chat_hidden.php
  4. 3
      main/chat/chat_message.php
  5. 10
      main/chat/chat_whoisonline.php
  6. 2
      main/document/document.inc.php
  7. 9
      main/inc/lib/add_course.lib.inc.php
  8. 6
      main/install/migrate-db-1.8.6.1-1.8.6.2-pre.sql

@ -74,8 +74,11 @@ if (!empty($course))
$perm = octdec(!empty($perm)?$perm:'0770'); $perm = octdec(!empty($perm)?$perm:'0770');
@mkdir($chatPath,$perm); @mkdir($chatPath,$perm);
@chmod($chatPath,$perm); @chmod($chatPath,$perm);
/*
$doc_id=add_document($_course,'/chat_files','folder',0,'chat_files'); $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)"); 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)");
*/
} }
} }

@ -30,12 +30,18 @@
function exit_of_chat ($user_id) { function exit_of_chat ($user_id) {
$list_course=array(); $list_course=array();
$list_course=CourseManager::get_courses_list_by_user_id($user_id); $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) { foreach($list_course as $courses) {
$response=user_connected_in_chat($user_id,$courses['db_name']); $response=user_connected_in_chat($user_id,$courses['db_name']);
if ($response===true) { if ($response===true) {
$tbl_chat_connected = Database::get_course_chat_connected_table($courses['db_name']);; $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__); Database::query($sql,__FILE__,__LINE__);
} }
} }
@ -49,8 +55,14 @@ function exit_of_chat ($user_id) {
*/ */
function user_connected_in_chat ($user_id,$database_name) { function user_connected_in_chat ($user_id,$database_name) {
$tbl_chat_connected = Database::get_course_chat_connected_table($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__); $result = Database::query($sql,__FILE__,__LINE__);
$count = Database::fetch_array($result,'ASSOC'); $count = Database::fetch_array($result,'ASSOC');
if (1==$count['count']) { if (1==$count['count']) {
@ -72,7 +84,7 @@ function disconnect_user_of_chat () {
$cdate_m = date('i',time()); $cdate_m = date('i',time());
$cdate_s = date('s',time()); $cdate_s = date('s',time());
$cd_count_time_seconds=$cdate_h*3600 + $cdate_m*60 + $cdate_s; $cd_count_time_seconds=$cdate_h*3600 + $cdate_m*60 + $cdate_s;
foreach ($list_info_user_in_chat as $list_info_user) { 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_date = date('Y-m-d',strtotime($list_info_user['last_connection']));
$date_db_h = date('H',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__); Database::query($sql,__FILE__,__LINE__);
} }
} }
} }
} }
@ -98,8 +108,14 @@ function disconnect_user_of_chat () {
function users_list_in_chat () { function users_list_in_chat () {
$list_users_in_chat=array(); $list_users_in_chat=array();
$tbl_chat_connected = Database::get_course_chat_connected_table(); $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__); $result=Database::query($sql,__FILE__,__LINE__);
while ($row = Database::fetch_array($result,'ASSOC')) { while ($row = Database::fetch_array($result,'ASSOC')) {
$list_users_in_chat[]=$row; $list_users_in_chat[]=$row;

@ -84,7 +84,7 @@ if (!empty($group_id)) {
$chat_size_old=intval($_POST['chat_size_old']); $chat_size_old=intval($_POST['chat_size_old']);
$chat_size_new=filesize($chatPath.$basename_chat.'.log.html'); $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); $result=Database::query($sql);
//The user_id exists so we must do an UPDATE and not a INSERT //The user_id exists so we must do an UPDATE and not a INSERT

@ -135,9 +135,12 @@ if (!empty($course) && !empty($_user['user_id']))
$perm = octdec(!empty($perm)?$perm:'0770'); $perm = octdec(!empty($perm)?$perm:'0770');
@mkdir($chatPath,$perm); @mkdir($chatPath,$perm);
@chmod($chatPath,$perm); @chmod($chatPath,$perm);
/*
$doc_id=add_document($_course,'/chat_files','folder',0,'chat_files'); $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)"; $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__); Database::query($sql_insert ,__FILE__,__LINE__);
*/
} }
} }

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

@ -348,7 +348,7 @@ function build_edit_icons($curdirpath,$type,$path,$visibility,$id,$is_template,$
else 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>'; $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')); $modify_icons .= '&nbsp;'.Display::return_icon('delete_na.gif',get_lang('ThisFolderCannotBeDeleted'));
} else { } 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>'; $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>';

@ -984,11 +984,10 @@ function update_Db_course($courseDbName)
user_id int unsigned NOT NULL default '0', user_id int unsigned NOT NULL default '0',
last_connection datetime NOT NULL default '0000-00-00 00:00:00', last_connection datetime NOT NULL default '0000-00-00 00:00:00',
session_id smallint NOT NULL default 0, session_id smallint NOT NULL default 0,
to_group_id INT NOT NULL default 0, to_group_id INT NOT NULL default 0
PRIMARY KEY (user_id)
)"; )";
Database::query($sql, __FILE__, __LINE__); 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__); Database::query($sql, __FILE__, __LINE__);
/* /*
----------------------------------------------------------- -----------------------------------------------------------
@ -2124,6 +2123,10 @@ function fill_Db_course($courseDbName, $courseRepository, $language,$default_doc
$example_doc_id = Database :: insert_id(); $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 `".$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 //FILL THE COURSE DOCUMENT WITH DEFAULT COURSE PICTURES
$sys_course_path = api_get_path(SYS_COURSE_PATH); $sys_course_path = api_get_path(SYS_COURSE_PATH);

@ -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 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 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 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 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 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);
Loading…
Cancel
Save