chamilo/chamilo-lms

View on GitHub
public/main/tracking/messages.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php
/* For licensing terms, see /license.txt */

require_once __DIR__.'/../inc/global.inc.php';

$allow = ('true' === api_get_setting('message.allow_user_message_tracking'));

if (!$allow) {
    api_not_allowed(true);
}

$allowUser = api_is_platform_admin() || api_is_drh();

if (!$allowUser) {
    api_not_allowed(true);
}

$fromUserId = isset($_GET['from_user']) ? (int) $_GET['from_user'] : 0;
$toUserId = isset($_GET['to_user']) ? (int) $_GET['to_user'] : 0;

if (empty($fromUserId) || empty($toUserId)) {
    api_not_allowed(true);
}

if (api_is_drh()) {
    $isFollowed = UserManager::is_user_followed_by_drh($fromUserId, api_get_user_id());
    if (api_drh_can_access_all_session_content()) {
        $students = SessionManager::getAllUsersFromCoursesFromAllSessionFromStatus(
            'drh_all',
            api_get_user_id(),
            false,
            0, //$from,
            null, //$limit,
            null, //$column,
            'desc', //$direction,
            null, //$keyword,
            null, //$active,
            null, //$lastConnectionDate,
            null,
            null,
            STUDENT
        );

        if (empty($students)) {
            api_not_allowed(true);
        }
        $userIdList = [];
        foreach ($students as $student) {
            $userIdList[] = $student['user_id'];
        }

        if (!in_array($fromUserId, $userIdList)) {
            api_not_allowed(true);
        }
    } else {
        if (!$isFollowed) {
            api_not_allowed(true);
        }
    }
}

$usersData[$toUserId] = api_get_user_info($toUserId);
$usersData[$fromUserId] = api_get_user_info($fromUserId);
$messages = MessageManager::getAllMessagesBetweenStudents($toUserId, $fromUserId);

$content = Display::page_subheader2(sprintf(
    get_lang('Messages exchange between %s and %s'),
    $usersData[$toUserId]['complete_name'],
    $usersData[$fromUserId]['complete_name']
));

$interbreadcrumb[] = [
    'url' => api_get_path(WEB_CODE_PATH).'my_space/student.php',
    'name' => get_lang('My learners'),
];
$interbreadcrumb[] = [
    'url' => api_get_path(WEB_CODE_PATH).'my_space/myStudents.php?student='.$fromUserId,
    'name' => get_lang('Learner details'),
];

$uniqueMessageList = [];
foreach ($messages as $message) {
    $message['title'].
    $subText = get_lang('From').': '.$usersData[$message['user_sender_id']]['complete_name'];
    $title = empty($message['title']) ? get_lang('Untitled') : $message['title'];
    $title = $title.' - '.$subText.'<span class="pull-right">'.Display::dateToStringAgoAndLongDate($message['send_date']).'</span>';
    $messageId = $message['id'];

    $hash = sha1($message['title'].$message['content'].$message['send_date']);
    if (in_array($hash, $uniqueMessageList)) {
        continue;
    }

    $content .= Display::panelCollapse(
        $title,
        $message['content'].'<br />'.Display::dateToStringAgoAndLongDate($message['send_date']),
        'message-'.$message['id'],
        null,
        'message-'.$message['id'],
        'collapse-'.$message['id'],
        false
    );
    $uniqueMessageList[] = $hash;
}

$template = new Template(get_lang('Message tracking'));
$template->assign('content', $content);
$template->display_one_col_template();