Fix chat table creation + user list see BT#7712

1.10.x
Julio Montoya 11 years ago
parent 5039fb44fc
commit 59fa265e4d
  1. 4
      main/chat/chat.php
  2. 44
      main/chat/chat_chat.php
  3. 30
      main/chat/chat_functions.lib.php
  4. 14
      main/chat/chat_hidden.php
  5. 32
      main/chat/chat_whoisonline.php
  6. 7
      src/Chamilo/CourseBundle/Entity/CChatConnected.php

@ -76,13 +76,13 @@ if (empty($open_chat_window)) {
}
$url = api_get_path(WEB_CODE_PATH).'chat/';
$params = "cidReq=".$courseCode.'&id_session='.api_get_session_id();
$params = api_get_cidreq();
echo '<div class="page-chat">';
echo '<iframe src="'.$url.'chat_whoisonline.php?'.$params.'" name="chat_whoisonline" scrolling="no" style="height:550px; width:35%; border: 0px none; float:left"></iframe>';
echo '<iframe src="'.$url.'chat_chat.php?origin='.$origin.'&target='.$target.'&'.$params.'" name="chat_chat" id="chat_chat" scrolling="auto" height="380" style="width:65%; border: 0px none; float:right"></iframe>';
echo '<iframe src="'.$url.'chat_message.php?'.$params.'" name="chat_message" scrolling="no" height="182px" style="width:65%; border: 0px none; float:right"></iframe>';
echo '<iframe src="'.$url.'chat_hidden.php?'.$params.'" name="chat_hidden" height="0" style="border: 0px none"></iframe>';
echo '<iframe src="'.$url.'chat_hidden.php?'.$params.'" name="chat_hidden" height="" style="border: 0px none"></iframe>';
echo '</div>';
if (empty($open_chat_window)) {

@ -54,10 +54,17 @@ if (!empty($course)) {
// Save chat files document for group into item property
if (!empty($group_id)) {
$doc_id = add_document($_course, $basepath_chat, 'folder', 0, 'chat_files');
$now = api_get_utc_datetime();
$sql = "INSERT INTO $TABLEITEMPROPERTY (c_id, tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility)
VALUES ($course_id, 'document',1,'$now','$now',$doc_id,'FolderCreated',1,$group_id,NULL,0)";
Database::query($sql);
api_item_property_update(
$_course,
TOOL_DOCUMENT,
$doc_id,
'FolderCreated',
null,
$group_id,
null,
null,
null
);
}
}
}
@ -75,9 +82,31 @@ if (!empty($course)) {
@fclose(fopen($chat_path.$filename_chat, 'w'));
if (!api_is_anonymous()) {
$doc_id = add_document($_course, $basepath_chat.'/'.$filename_chat, 'file', 0, $filename_chat);
api_item_property_update($_course, TOOL_DOCUMENT, $doc_id, 'DocumentAdded', $userId, $group_id, null, null, null, $session_id);
api_item_property_update($_course, TOOL_DOCUMENT, $doc_id, 'invisible', $userId, $group_id, null, null, null, $session_id);
item_property_update_on_folder($_course, $basepath_chat, $userId);
api_item_property_update(
$_course,
TOOL_DOCUMENT,
$doc_id,
'DocumentAdded',
$userId,
$group_id,
null,
null,
null,
$session_id
);
api_item_property_update(
$_course,
TOOL_DOCUMENT,
$doc_id,
'invisible',
$userId,
$group_id,
null,
null,
null,
$session_id
);
item_property_update_on_folder($_course, $basepath_chat, $userId);
}
}
@ -142,7 +171,6 @@ if (!empty($course)) {
echo '<div id="content-chat markdown-body">';
foreach ($content as & $this_line) {
//echo strip_tags(api_html_entity_decode($this_line), '<div> <br> <span> <b> <i> <img> <font>');
echo $this_line;
}
echo '</div>';

@ -65,25 +65,30 @@ function disconnect_user_of_chat()
{
$list_info_user_in_chat = users_list_in_chat();
$course_id = api_get_course_int_id();
$cd_date = date('Y-m-d',time());
$cdate_h = date('H',time());
$cdate_m = date('i',time());
$cdate_s = date('s',time());
$groupId = api_get_group_id();
$now = time();
$cd_date = date('Y-m-d', $now);
$cdate_h = date('H', $now);
$cdate_m = date('i', $now);
$cdate_s = date('s', $now);
$cd_count_time_seconds = $cdate_h*3600 + $cdate_m*60 + $cdate_s;
if (is_array($list_info_user_in_chat) && count($list_info_user_in_chat) > 0 ) {
if (is_array($list_info_user_in_chat) && count($list_info_user_in_chat) > 0) {
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']));
$date_db_m = date('i', strtotime($list_info_user['last_connection']));
$date_db_s = date('s', strtotime($list_info_user['last_connection']));
$date_count_time_seconds=$date_db_h*3600 + $date_db_m*60 + $date_db_s;
$date_db_date = date('Y-m-d', api_strtotime($list_info_user['last_connection'], 'UTC'));
$date_db_h = date('H', api_strtotime($list_info_user['last_connection'], 'UTC'));
$date_db_m = date('i', api_strtotime($list_info_user['last_connection'], 'UTC'));
$date_db_s = date('s', api_strtotime($list_info_user['last_connection'], 'UTC'));
$date_count_time_seconds = $date_db_h * 3600 + $date_db_m * 60 + $date_db_s;
if ($cd_date == $date_db_date) {
if (($cd_count_time_seconds - $date_count_time_seconds) > 5) {
$tbl_chat_connected = Database::get_course_table(TABLE_CHAT_CONNECTED);
$sql = 'DELETE FROM '.$tbl_chat_connected.'
WHERE c_id = '.$course_id.' AND user_id ='.$list_info_user['user_id'];
WHERE
c_id = '.$course_id.' AND
user_id = '.$list_info_user['user_id'].' AND
to_group_id = '.$groupId.'
';
Database::query($sql);
}
}
@ -114,6 +119,7 @@ function users_list_in_chat()
while ($row = Database::fetch_array($result, 'ASSOC')) {
$list_users_in_chat[] = $row;
}
return $list_users_in_chat;
}

@ -76,16 +76,22 @@ $result = Database::query($sql);
// The user_id exists so we must do an UPDATE and not a INSERT
$current_time = api_get_utc_datetime();
if (Database::num_rows($result) == 0) {
$query = "INSERT INTO $tbl_chat_connected(c_id, user_id,last_connection,session_id,to_group_id)
$query = "INSERT INTO $tbl_chat_connected(c_id, user_id, last_connection,session_id,to_group_id)
VALUES($course_id, '".$userId."','$current_time','$session_id','$group_id')";
Database::query($query);
$id = Database::insert_id();
if ($id) {
$sql = "UPDATE $tbl_chat_connected SET id = iid WHERE iid = $id";
Database::query($sql);
}
} else {
$query = "UPDATE $tbl_chat_connected set last_connection='".$current_time."'
$query = "UPDATE $tbl_chat_connected SET last_connection='".$current_time."'
WHERE c_id = $course_id AND user_id='".$userId."' AND session_id='$session_id' AND to_group_id='$group_id'";
Database::query($query);
}
Database::query($query);
$query = "SELECT COUNT(user_id) FROM $tbl_chat_connected
WHERE last_connection>'".date('Y-m-d H:i:s',time()-60*5)."' $extra_condition";
$result = Database::query($query);

@ -43,23 +43,31 @@ if (!empty($course)) {
$isAllowed = !(empty($pseudo_user) || !$_cid);
$isMaster = api_is_course_admin();
$date_inter = date('Y-m-d H:i:s', time() - 120);
$date_inter = api_get_utc_datetime(time() - 120);
$users = array();
$course_id = api_get_course_int_id();
if (empty($session_id)) {
$query = "SELECT DISTINCT t1.user_id,username,firstname,lastname,picture_uri,email,t3.status
FROM $tbl_user t1, $tbl_chat_connected t2, $tbl_course_user t3
WHERE
t2.c_id = $course_id AND
t1.user_id=t2.user_id AND
t3.user_id=t2.user_id AND
t3.relation_type<>".COURSE_RELATION_TYPE_RRHH." AND
t3.c_id = '".$courseInfo['real_id']."' AND
t2.last_connection>'".$date_inter."' $extra_condition
ORDER BY username";
$result = Database::query($query);
$sql = "SELECT DISTINCT
t1.user_id,
username,
firstname,
lastname,
picture_uri,
email,
t3.status
FROM $tbl_user t1, $tbl_chat_connected t2, $tbl_course_user t3
WHERE
t2.c_id = $course_id AND
t1.user_id=t2.user_id AND
t3.user_id=t2.user_id AND
t3.relation_type<>".COURSE_RELATION_TYPE_RRHH." AND
t3.c_id = '".$courseInfo['real_id']."' AND
t2.last_connection>'".$date_inter."' $extra_condition
ORDER BY username";
$result = Database::query($sql);
$users = Database::store_result($result);
} else {
// select learners

@ -36,7 +36,6 @@ class CChatConnected
*/
private $cId;
/**
* @var integer
*
@ -55,8 +54,6 @@ class CChatConnected
* @var integer
*
* @ORM\Column(name="user_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
*/
private $userId;
@ -64,13 +61,9 @@ class CChatConnected
* @var \DateTime
*
* @ORM\Column(name="last_connection", type="datetime")
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
*/
private $lastConnection;
/**
* Set sessionId
*

Loading…
Cancel
Save