Pārlūkot izejas kodu

Fix chat table creation + user list see BT#7712

Julio Montoya 9 gadi atpakaļ
vecāks
revīzija
59fa265e4d

+ 2 - 2
main/chat/chat.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)) {

+ 36 - 8
main/chat/chat_chat.php

@@ -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>';

+ 18 - 12
main/chat/chat_functions.lib.php

@@ -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;
 }
 

+ 10 - 4
main/chat/chat_hidden.php

@@ -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);

+ 20 - 12
main/chat/chat_whoisonline.php

@@ -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

+ 0 - 7
src/Chamilo/CourseBundle/Entity/CChatConnected.php

@@ -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
      *