-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathindex.php
111 lines (95 loc) · 3.99 KB
/
index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Print the settings page.
*
* @package tool_userdebug
* @author Andreas Grabs <[email protected]>
* @copyright 2022 Andreas Grabs <[email protected]>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
require_once(__DIR__ . '/../../../config.php');
require_once($CFG->libdir . '/adminlib.php');
require_once($CFG->dirroot . '/' . $CFG->admin . '/tool/userdebug/lib.php');
require_once($CFG->dirroot . '/' . $CFG->admin . '/roles/lib.php');
admin_externalpage_setup('tool_userdebug', '', null);
if (!is_siteadmin()) {
die;
}
$mycfg = get_config('tool_userdebug');
if (empty($mycfg->users)) {
$mycfg->users = '';
}
$settingsform = new \tool_userdebug\settingsform();
$debuguserselector = new \tool_userdebug\selector();
$potentialdebuguserselector = new \tool_userdebug\potential_selector();
$formdata = $settingsform->get_data();
if (optional_param('add', false, PARAM_BOOL) && confirm_sesskey()) {
if ($userstoadd = $potentialdebuguserselector->get_selected_users()) {
$usertoadd = reset($userstoadd);
$debugusers = [];
foreach (explode(',', $mycfg->users) as $du) {
$du = (int) $du;
if ($du) {
$debugusers[$du] = $du;
}
}
$debugusers[$usertoadd->id] = $usertoadd->id;
set_config('users', implode(',', $debugusers), 'tool_userdebug');
redirect($PAGE->url);
die;
}
} else if (optional_param('remove', false, PARAM_BOOL) && confirm_sesskey()) {
if ($userstoremove = $debuguserselector->get_selected_users()) {
$usertoremove = reset($userstoremove);
$debugusers = [];
foreach (explode(',', $mycfg->users) as $du) {
$du = (int) $du;
if ($du) {
$debugusers[$du] = $du;
}
}
unset($debugusers[$usertoremove->id]);
set_config('users', implode(',', $debugusers), 'tool_userdebug');
redirect($PAGE->url);
}
}
if (!empty($formdata->savechanges)) {
$debugmode = !empty($formdata->debugmode) ? $formdata->debugmode : 0;
$debugdisplay = !empty($formdata->debugdisplay);
$debugsmtp = !empty($formdata->debugsmtp);
$debugimap = !empty($formdata->debugimap);
$perfdebug = !empty($formdata->perfdebug) ? 15 : 0; // Perfdebug needs another value than 1.
$debugstringids = !empty($formdata->debugstringids);
$debugpageinfo = !empty($formdata->debugpageinfo);
if ($debugmode !== false) {
set_config('mode', $debugmode, 'tool_userdebug');
set_config('debugdisplay', $debugdisplay, 'tool_userdebug');
set_config('debugsmtp', $debugsmtp, 'tool_userdebug');
set_config('debugimap', $debugimap, 'tool_userdebug');
set_config('perfdebug', $perfdebug, 'tool_userdebug');
set_config('debugstringids', $debugstringids, 'tool_userdebug');
set_config('debugpageinfo', $debugpageinfo, 'tool_userdebug');
}
redirect($PAGE->url, get_string('changessaved'), 3);
}
$selectusers = new \tool_userdebug\output\selectusers($PAGE->url, $debuguserselector, $potentialdebuguserselector);
$debugsettings = new \tool_userdebug\output\debugsettings($settingsform);
// Print header.
echo $OUTPUT->header();
echo $OUTPUT->render($debugsettings);
echo $OUTPUT->render($selectusers);
echo $OUTPUT->footer();