Proyectos de Subversion Moodle

Rev

Rev 1 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1 Rev 1441
Línea 41... Línea 41...
41
 
41
 
42
$context = context_user::instance($USER->id);
42
$context = context_user::instance($USER->id);
Línea 43... Línea 43...
43
require_capability('report/usersessions:manageownsessions', $context);
43
require_capability('report/usersessions:manageownsessions', $context);
-
 
44
 
-
 
45
$delete = optional_param('delete', 0, PARAM_INT);
Línea 44... Línea 46...
44
 
46
$deleteall = optional_param('deleteall', false, PARAM_BOOL);
45
$delete = optional_param('delete', 0, PARAM_INT);
47
$lastip = cleanremoteaddr(optional_param('lastip', '', PARAM_TEXT));
46
 
48
 
47
$PAGE->set_url('/report/usersessions/user.php');
49
$PAGE->set_url('/report/usersessions/user.php');
48
$PAGE->set_context($context);
50
$PAGE->set_context($context);
Línea -... Línea 51...
-
 
51
$PAGE->set_title(get_string('navigationlink', 'report_usersessions'));
49
$PAGE->set_title(get_string('navigationlink', 'report_usersessions'));
52
$PAGE->set_heading(fullname($USER));
50
$PAGE->set_heading(fullname($USER));
53
$PAGE->set_pagelayout('admin');
-
 
54
 
51
$PAGE->set_pagelayout('admin');
55
// Delete a specific session.
-
 
56
if ($delete && confirm_sesskey()) {
-
 
57
    report_usersessions_kill_session($delete);
-
 
58
    redirect(
-
 
59
        url: $PAGE->url,
-
 
60
        message: get_string('logoutsinglesessionsuccess', 'report_usersessions', $lastip),
-
 
61
        messagetype: \core\output\notification::NOTIFY_SUCCESS,
-
 
62
    );
-
 
63
}
-
 
64
 
-
 
65
// Delete all sessions except current.
-
 
66
if ($deleteall && confirm_sesskey()) {
-
 
67
    \core\session\manager::destroy_user_sessions($USER->id, session_id());
-
 
68
    redirect(
52
 
69
        url: $PAGE->url,
Línea 53... Línea 70...
53
if ($delete and confirm_sesskey()) {
70
        message: get_string('logoutothersessionssuccess', 'report_usersessions'),
54
    report_usersessions_kill_session($delete);
71
        messagetype: \core\output\notification::NOTIFY_SUCCESS,
55
    redirect($PAGE->url);
72
    );
Línea 63... Línea 80...
63
 
80
 
64
echo $OUTPUT->header();
81
echo $OUTPUT->header();
Línea 65... Línea 82...
65
echo $OUTPUT->heading(get_string('mysessions', 'report_usersessions'));
82
echo $OUTPUT->heading(get_string('mysessions', 'report_usersessions'));
66
 
83
 
67
$data = array();
84
$data = array();
68
$sql = "SELECT id, timecreated, timemodified, firstip, lastip, sid
85
$sessions = \core\session\manager::get_sessions_by_userid($USER->id);
69
          FROM {sessions}
86
// Order records by timemodified DESC.
70
         WHERE userid = :userid
-
 
71
      ORDER BY timemodified DESC";
87
usort($sessions, function($a, $b){
72
$params = array('userid' => $USER->id, 'sid' => session_id());
-
 
73
 
88
    return $b->timemodified <=> $a->timemodified;
74
$sessions = $DB->get_records_sql($sql, $params);
89
});
75
foreach ($sessions as $session) {
90
foreach ($sessions as $session) {
76
    if ($session->sid === $params['sid']) {
91
    if ($session->sid === session_id()) {
Línea 77... Línea 92...
77
        $lastaccess = get_string('thissession', 'report_usersessions');
92
        $lastaccess = get_string('thissession', 'report_usersessions');
78
        $deletelink = '';
93
        $deletelink = '';
79
 
94
 
80
    } else {
95
    } else {
81
        $lastaccess = report_usersessions_format_duration(time() - $session->timemodified);
96
        $lastaccess = report_usersessions_format_duration(time() - $session->timemodified);
82
        $url = new moodle_url($PAGE->url, array('delete' => $session->id, 'sesskey' => sesskey()));
97
        $url = new moodle_url($PAGE->url, ['delete' => $session->id, 'sesskey' => sesskey(), 'lastip' => $session->lastip]);
83
        $deletelink = html_writer::link($url, get_string('logout'));
98
        $deletelink = html_writer::link($url, get_string('logout'));
Línea 89... Línea 104...
89
$table->head  = array(get_string('login'), get_string('lastaccess'), get_string('lastip'), get_string('action'));
104
$table->head  = array(get_string('login'), get_string('lastaccess'), get_string('lastip'), get_string('action'));
90
$table->align = array('left', 'left', 'left', 'right');
105
$table->align = array('left', 'left', 'left', 'right');
91
$table->data  = $data;
106
$table->data  = $data;
92
echo html_writer::table($table);
107
echo html_writer::table($table);
Línea -... Línea 108...
-
 
108
 
93
 
109
// Provide button to log out all other sessions.
-
 
110
if (count($sessions) > 1) {
-
 
111
    $url = new moodle_url($PAGE->url, ['deleteall' => true]);
-
 
112
    echo $OUTPUT->single_button($url, get_string('logoutothersessions', 'report_usersessions'));
Línea -... Línea 113...
-
 
113
}