Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 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.
13
//
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/>.
16
 
17
/**
18
 * Lib API functions.
19
 *
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>
24
 */
25
 
26
defined('MOODLE_INTERNAL') || die;
27
 
28
require_once(__DIR__ . '/lib.php');
29
 
30
/**
31
 * Show user friendly duration since last activity.
32
 *
33
 * @param int $duration in seconds
34
 * @return string
35
 */
36
function report_usersessions_format_duration($duration) {
37
 
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.
43
 
44
    if ($duration < 60) {
45
        return get_string('now');
46
    }
47
 
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);
52
    }
53
 
54
    $hours = (int)($duration / (60 * 60));
55
    $ago = $hours . ' ' . get_string('hours');
56
    return get_string('ago', 'core_message', $ago);
57
}
58
 
59
/**
60
 * Show some user friendly IP address info.
61
 *
62
 * @param string $ip
63
 * @return string
64
 */
65
function report_usersessions_format_ip($ip) {
66
    if (strpos($ip, ':') !== false) {
67
        // For now ipv6 is not supported yet.
68
        return $ip;
69
    }
70
    $url = new moodle_url('/iplookup/index.php', array('ip' => $ip));
71
    return html_writer::link($url, $ip);
72
}
73
 
74
/**
75
 * Kill user session.
76
 *
77
 * @param int $id
78
 * @return void
79
 */
80
function report_usersessions_kill_session($id) {
81
    global $DB, $USER;
82
 
83
    $session = $DB->get_record('sessions', array('id' => $id, 'userid' => $USER->id), 'id, sid');
84
 
85
    if (!$session or $session->sid === session_id()) {
86
        // Do not delete the current session!
87
        return;
88
    }
89
 
90
    \core\session\manager::kill_session($session->sid);
91
}