Commit | Line | Data |
---|---|---|
0e8418a8 FM |
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 | /** | |
4887d152 | 18 | * Preferences. |
0e8418a8 FM |
19 | * |
20 | * @package core_user | |
21 | * @copyright 2015 Frédéric Massart - FMCorz.net | |
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | |
23 | */ | |
24 | ||
25 | require_once(__DIR__ . '/../config.php'); | |
26 | require_once($CFG->libdir . '/navigationlib.php'); | |
27 | ||
28 | require_login(null, false); | |
29 | if (isguestuser()) { | |
baa850a3 | 30 | throw new require_login_exception('Guests are not allowed here.'); |
0e8418a8 FM |
31 | } |
32 | ||
33 | $userid = optional_param('userid', $USER->id, PARAM_INT); | |
34 | $currentuser = $userid == $USER->id; | |
35 | ||
0e8418a8 FM |
36 | // Check that the user is a valid user. |
37 | $user = core_user::get_user($userid); | |
38 | if (!$user || !core_user::is_real_user($userid)) { | |
39 | throw new moodle_exception('invaliduser', 'error'); | |
40 | } | |
41 | ||
42 | $PAGE->set_context(context_user::instance($userid)); | |
43 | $PAGE->set_url('/user/preferences.php', array('userid' => $userid)); | |
44 | $PAGE->set_pagelayout('admin'); | |
45 | $PAGE->set_pagetype('user-preferences'); | |
e14388e3 | 46 | $PAGE->set_title(get_string('preferences')); |
880c5073 | 47 | $PAGE->set_heading(fullname($user)); |
0e8418a8 FM |
48 | |
49 | if (!$currentuser) { | |
0e8418a8 | 50 | $PAGE->navigation->extend_for_user($user); |
0305ee27 AG |
51 | // Need to check that settings exist. |
52 | if ($settings = $PAGE->settingsnav->find('userviewingsettings' . $user->id, null)) { | |
53 | $settings->make_active(); | |
54 | } | |
f495187d AG |
55 | $url = new moodle_url('/user/preferences.php', array('userid' => $userid)); |
56 | $navbar = $PAGE->navbar->add(get_string('preferences', 'moodle'), $url); | |
0305ee27 AG |
57 | // Show an error if there are no preferences that this user has access to. |
58 | if (!$PAGE->settingsnav->can_view_user_preferences($userid)) { | |
59 | throw new moodle_exception('cannotedituserpreferences', 'error'); | |
60 | } | |
0e8418a8 | 61 | } else { |
f495187d AG |
62 | // Shutdown the users node in the navigation menu. |
63 | $usernode = $PAGE->navigation->find('users', null); | |
64 | $usernode->make_inactive(); | |
65 | ||
f495187d AG |
66 | $settings = $PAGE->settingsnav->find('usercurrentsettings', null); |
67 | $settings->make_active(); | |
0e8418a8 FM |
68 | } |
69 | ||
70 | // Identifying the nodes. | |
71 | $groups = array(); | |
72 | $orphans = array(); | |
73 | foreach ($settings->children as $setting) { | |
74 | if ($setting->has_children()) { | |
75 | $groups[] = new preferences_group($setting->get_content(), $setting->children); | |
76 | } else { | |
77 | $orphans[] = $setting; | |
78 | } | |
79 | } | |
80 | if (!empty($orphans)) { | |
81 | $groups[] = new preferences_group(get_string('miscellaneous'), $orphans); | |
82 | } | |
83 | $preferences = new preferences_groups($groups); | |
84 | ||
85 | echo $OUTPUT->header(); | |
4e1f6047 | 86 | echo $OUTPUT->heading(get_string('preferences')); |
0e8418a8 FM |
87 | echo $OUTPUT->render($preferences); |
88 | echo $OUTPUT->footer(); |