filter message tracking to coach access dates

pull/3908/head
Juan Cortizas Ponte 4 years ago
parent 79ea6a8068
commit 70eab51630
  1. 37
      main/inc/lib/message.lib.php
  2. 21
      main/mySpace/myStudents.php
  3. 11
      main/tracking/messages.php

@ -2880,11 +2880,13 @@ class MessageManager
}
/**
* @param int $userId
* @param int $userId
* @param datetime $dateStart
* @param datetime $dateFinish
*
* @return array
*/
public static function getUsersThatHadConversationWithUser($userId)
public static function getUsersThatHadConversationWithUser($userId, $dateStart = null, $dateFinish = null)
{
$messagesTable = Database::get_main_table(TABLE_MESSAGE);
$userId = (int) $userId;
@ -2894,6 +2896,15 @@ class MessageManager
FROM $messagesTable
WHERE
user_receiver_id = ".$userId;
if ($dateStart != null) {
$sql .= " AND send_date >= '".$dateStart."'";
}
if ($dateFinish != null) {
$sql .= " AND send_date <= '".$dateFinish."'";
}
$result = Database::query($sql);
$users = Database::store_result($result);
$userList = [];
@ -2912,12 +2923,14 @@ class MessageManager
}
/**
* @param int $userId
* @param int $otherUserId
* @param int $userId
* @param int $otherUserId
* @param datetime $dateStart
* @param datetime $dateFinish
*
* @return array
*/
public static function getAllMessagesBetweenStudents($userId, $otherUserId)
public static function getAllMessagesBetweenStudents($userId, $otherUserId, $dateStart = null, $dateFinish = null)
{
$messagesTable = Database::get_main_table(TABLE_MESSAGE);
$userId = (int) $userId;
@ -2930,10 +2943,18 @@ class MessageManager
$sql = "SELECT DISTINCT *
FROM $messagesTable
WHERE
(user_receiver_id = $userId AND user_sender_id = $otherUserId) OR
(user_receiver_id = $otherUserId AND user_sender_id = $userId)
ORDER BY send_date DESC
((user_receiver_id = $userId AND user_sender_id = $otherUserId) OR
(user_receiver_id = $otherUserId AND user_sender_id = $userId))
";
if ($dateStart != null) {
$dateStart = Database::escape_string($dateStart);
$sql .= " AND send_date >= '".$dateStart."'";
}
if ($dateFinish != null) {
$dateFinish = Database::escape_string($dateFinish);
$sql .= " AND send_date <= '".$dateFinish."'";
}
$sql .= " ORDER BY send_date DESC";
$result = Database::query($sql);
$messages = Database::store_result($result);
$list = [];

@ -2057,8 +2057,21 @@ if ($allowMessages === true) {
$form->display();
}
$filter_messages = api_get_configuration_value('filter_interactivity_messages') && !empty($sessionId);
if ($filter_messages) {
$session_info = api_get_session_info($sessionId);
$coach_access_start_date = $session_info['coach_access_start_date'];
$coach_access_end_date = $session_info['coach_access_end_date'];
}
$allow = api_get_configuration_value('allow_user_message_tracking');
if ($allow && (api_is_drh() || api_is_platform_admin())) {
if ($filter_messages) {
$users = MessageManager::getUsersThatHadConversationWithUser($student_id, $coach_access_start_date, $coach_access_end_date);
} else {
$users = MessageManager::getUsersThatHadConversationWithUser($student_id);
}
$users = MessageManager::getUsersThatHadConversationWithUser($student_id);
echo Display::page_subheader2(get_lang('MessageTracking'));
@ -2076,7 +2089,13 @@ if ($allow && (api_is_drh() || api_is_platform_admin())) {
$row++;
foreach ($users as $userFollowed) {
$followedUserId = $userFollowed['user_id'];
$url = api_get_path(WEB_CODE_PATH).'tracking/messages.php?from_user='.$student_id.'&to_user='.$followedUserId;
if ($filter_messages) {
$url = api_get_path(WEB_CODE_PATH).'tracking/messages.php?from_user='.$student_id.'&to_user='.$followedUserId.'&date_from='.$coach_access_start_date.'&date_to='.$coach_access_end_date;
} else {
$url = api_get_path(WEB_CODE_PATH).'tracking/messages.php?from_user='.$student_id.'&to_user='.$followedUserId;
}
$link = Display::url(
$userFollowed['complete_name'],
$url

@ -18,6 +18,9 @@ if (!$allowUser) {
$fromUserId = isset($_GET['from_user']) ? (int) $_GET['from_user'] : 0;
$toUserId = isset($_GET['to_user']) ? (int) $_GET['to_user'] : 0;
$coach_access_start_date = isset($_GET['date_from']) ? $_GET['date_from'] : null;
$coach_access_end_date = isset($_GET['date_to']) ? $_GET['date_to'] : null;
if (empty($fromUserId) || empty($toUserId)) {
api_not_allowed(true);
}
@ -61,7 +64,13 @@ if (api_is_drh()) {
$usersData[$toUserId] = api_get_user_info($toUserId);
$usersData[$fromUserId] = api_get_user_info($fromUserId);
$messages = MessageManager::getAllMessagesBetweenStudents($toUserId, $fromUserId);
$filter_messages = api_get_configuration_value('filter_interactivity_messages');
if ($filter_messages) {
$messages = MessageManager::getAllMessagesBetweenStudents($toUserId, $fromUserId, $coach_access_start_date, $coach_access_end_date);
} else {
$messages = MessageManager::getAllMessagesBetweenStudents($toUserId, $fromUserId);
}
$content = Display::page_subheader2(sprintf(
get_lang('MessagesExchangeBetweenXAndY'),

Loading…
Cancel
Save