Merge branch 'MDL-80633-main' of https://github.com/laurentdavid/moodle
[moodle.git] / report / usersessions / locallib.php
blob02f6b5ae313ce3b91a5dda065a0a78d2dbe28a0b
1 <?php
2 // This file is part of Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>.
17 /**
18 * Lib API functions.
20 * @package report_usersessions
21 * @copyright 2014 Totara Learning Solutions Ltd {@link http://www.totaralms.com/}
22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 * @author Petr Skoda <petr.skoda@totaralms.com>
26 defined('MOODLE_INTERNAL') || die;
28 require_once(__DIR__ . '/lib.php');
30 /**
31 * Show user friendly duration since last activity.
33 * @param int $duration in seconds
34 * @return string
36 function report_usersessions_format_duration($duration) {
38 // NOTE: The session duration is not accurate thanks to
39 // $CFG->session_update_timemodified_frequency setting.
40 // Also there is no point in showing days here because
41 // the session cleanup should purge all stale sessions
42 // regularly.
44 if ($duration < 60) {
45 return get_string('now');
48 if ($duration < 60 * 60 * 2) {
49 $minutes = (int)($duration / 60);
50 $ago = $minutes . ' ' . get_string('minutes');
51 return get_string('ago', 'core_message', $ago);
54 $hours = (int)($duration / (60 * 60));
55 $ago = $hours . ' ' . get_string('hours');
56 return get_string('ago', 'core_message', $ago);
59 /**
60 * Show some user friendly IP address info.
62 * @param string $ip
63 * @return string
65 function report_usersessions_format_ip($ip) {
66 if (strpos($ip, ':') !== false) {
67 // For now ipv6 is not supported yet.
68 return $ip;
70 $url = new moodle_url('/iplookup/index.php', array('ip' => $ip));
71 return html_writer::link($url, $ip);
74 /**
75 * Kill user session.
77 * @param int $id
78 * @return void
80 function report_usersessions_kill_session($id) {
81 global $DB, $USER;
83 $session = $DB->get_record('sessions', array('id' => $id, 'userid' => $USER->id), 'id, sid');
85 if (!$session or $session->sid === session_id()) {
86 // Do not delete the current session!
87 return;
90 \core\session\manager::kill_session($session->sid);