Proyectos de Subversion Moodle

Rev

Rev 1 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
 
3
// This file defines settingpages and externalpages under the "users" category.
4
 
5
$ADMIN->add('users', new admin_category('accounts', new lang_string('accounts', 'admin')));
6
$ADMIN->add('users', new admin_category('roles', new lang_string('permissions', 'role')));
7
$ADMIN->add('users', new admin_category('privacy', new lang_string('privacyandpolicies', 'admin')));
8
 
1441 ariadna 9
$capabilities = [
10
    'moodle/user:create',
11
    'moodle/user:update',
12
    'moodle/user:delete',
13
    'moodle/role:manage',
14
    'moodle/role:assign',
15
    'moodle/cohort:manage',
16
    'moodle/cohort:view',
17
    'moodle/cohort:configurecustomfields',
18
    'moodle/role:safeoverride',
19
    'moodle/role:override',
20
];
1 efrain 21
 
1441 ariadna 22
if ($hassiteconfig || has_any_capability($capabilities, $systemcontext)) { // Speedup for non-admins, all caps used on this page.
1 efrain 23
 
1441 ariadna 24
 
1 efrain 25
    // Stuff under the "accounts" subcategory.
26
    $ADMIN->add('accounts', new admin_externalpage('editusers', new lang_string('userlist','admin'), "$CFG->wwwroot/$CFG->admin/user.php", array('moodle/user:update', 'moodle/user:delete')));
27
    $ADMIN->add('accounts', new admin_externalpage('userbulk', new lang_string('userbulk','admin'), "$CFG->wwwroot/$CFG->admin/user/user_bulk.php", array('moodle/user:update', 'moodle/user:delete')));
28
    $ADMIN->add('accounts', new admin_externalpage('addnewuser', new lang_string('addnewuser'), "$CFG->wwwroot/user/editadvanced.php?id=-1", 'moodle/user:create'));
29
 
30
    // User management settingpage.
31
    $temp = new admin_settingpage('usermanagement', new lang_string('usermanagement', 'admin'));
32
    if ($ADMIN->fulltree) {
33
        $choices = array();
34
        $choices['realname'] = new lang_string('fullnameuser');
35
        $choices['lastname'] = new lang_string('lastname');
36
        $choices['firstname'] = new lang_string('firstname');
37
        $choices['username'] = new lang_string('username');
38
        $choices['email'] = new lang_string('email');
39
        $choices['city'] = new lang_string('city');
40
        $choices['country'] = new lang_string('country');
41
        $choices['confirmed'] = new lang_string('confirmed', 'admin');
42
        $choices['suspended'] = new lang_string('suspended', 'auth');
43
        $choices['profile'] = new lang_string('profilefields', 'admin');
44
        $choices['courserole'] = new lang_string('courserole', 'filters');
45
        $choices['anycourses'] = new lang_string('anycourses', 'filters');
46
        $choices['systemrole'] = new lang_string('globalrole', 'role');
47
        $choices['cohort'] = new lang_string('idnumber', 'core_cohort');
48
        $choices['firstaccess'] = new lang_string('firstaccess', 'filters');
49
        $choices['lastaccess'] = new lang_string('lastaccess');
50
        $choices['neveraccessed'] = new lang_string('neveraccessed', 'filters');
51
        $choices['timecreated'] = new lang_string('timecreated');
52
        $choices['timemodified'] = new lang_string('lastmodified');
53
        $choices['nevermodified'] = new lang_string('nevermodified', 'filters');
54
        $choices['auth'] = new lang_string('authentication');
55
        $choices['idnumber'] = new lang_string('idnumber');
56
        $choices['lastip'] = new lang_string('lastip');
57
        $choices['mnethostid'] = new lang_string('mnetidprovider', 'mnet');
58
        $temp->add(new admin_setting_configmultiselect('userfiltersdefault', new lang_string('userfiltersdefault', 'admin'),
59
            new lang_string('userfiltersdefault_desc', 'admin'), array('realname'), $choices));
60
    }
61
    $ADMIN->add('accounts', $temp);
62
 
63
    // User default preferences settingpage.
64
    $temp = new admin_settingpage('userdefaultpreferences', new lang_string('userdefaultpreferences', 'admin'));
65
    if ($ADMIN->fulltree) {
66
        $choices = array();
67
        $choices['0'] = new lang_string('emaildisplayno');
68
        $choices['1'] = new lang_string('emaildisplayyes');
69
        $choices['2'] = new lang_string('emaildisplaycourse');
70
        $temp->add(new admin_setting_configselect('defaultpreference_maildisplay', new lang_string('emaildisplay'),
71
            new lang_string('emaildisplay_help'), 2, $choices));
72
 
73
        $choices = array();
74
        $choices['0'] = new lang_string('textformat');
75
        $choices['1'] = new lang_string('htmlformat');
76
        $temp->add(new admin_setting_configselect('defaultpreference_mailformat', new lang_string('emailformat'), '', 1, $choices));
77
 
78
        $choices = array();
79
        $choices['0'] = new lang_string('emaildigestoff');
80
        $choices['1'] = new lang_string('emaildigestcomplete');
81
        $choices['2'] = new lang_string('emaildigestsubjects');
82
        $temp->add(new admin_setting_configselect('defaultpreference_maildigest', new lang_string('emaildigest'),
83
            new lang_string('emaildigest_help'), 0, $choices));
84
 
85
 
86
        $choices = array();
87
        $choices['1'] = new lang_string('autosubscribeyes');
88
        $choices['0'] = new lang_string('autosubscribeno');
89
        $temp->add(new admin_setting_configselect('defaultpreference_autosubscribe', new lang_string('autosubscribe'),
90
            '', 1, $choices));
91
 
92
        $choices = array();
93
        $choices['0'] = new lang_string('trackforumsno');
94
        $choices['1'] = new lang_string('trackforumsyes');
95
        $temp->add(new admin_setting_configselect('defaultpreference_trackforums', new lang_string('trackforums'),
96
            '', 0, $choices));
97
 
98
        $choices = [];
99
        $choices[\core_contentbank\content::VISIBILITY_PUBLIC] = new lang_string('visibilitychoicepublic', 'core_contentbank');
100
        $choices[\core_contentbank\content::VISIBILITY_UNLISTED] = new lang_string('visibilitychoiceunlisted', 'core_contentbank');
101
        $temp->add(new admin_setting_configselect('defaultpreference_core_contentbank_visibility',
102
            new lang_string('visibilitypref', 'core_contentbank'),
103
            new lang_string('visibilitypref_help', 'core_contentbank'),
104
            \core_contentbank\content::VISIBILITY_PUBLIC, $choices));
105
    }
106
    $ADMIN->add('accounts', $temp);
107
 
108
    $ADMIN->add('accounts', new admin_externalpage('profilefields', new lang_string('profilefields','admin'), "$CFG->wwwroot/user/profile/index.php", 'moodle/site:config'));
109
    $ADMIN->add('accounts', new admin_externalpage('cohorts', new lang_string('cohorts', 'cohort'), $CFG->wwwroot . '/cohort/index.php', array('moodle/cohort:manage', 'moodle/cohort:view')));
110
    $ADMIN->add(
111
        'accounts',
112
        new admin_externalpage(
113
            'cohort_customfield',
114
            new lang_string('cohort_customfield', 'admin'),
115
            $CFG->wwwroot . '/cohort/customfield.php',
116
            ['moodle/cohort:configurecustomfields']
117
        )
118
    );
119
 
120
    // Stuff under the "roles" subcategory.
121
 
122
    // User policies settingpage.
123
    $temp = new admin_settingpage('userpolicies', new lang_string('userpolicies', 'admin'));
124
    if ($ADMIN->fulltree) {
125
        if (!during_initial_install()) {
126
            $context = context_system::instance();
127
 
128
            $otherroles      = array();
129
            $guestroles      = array();
130
            $userroles       = array();
131
            $creatornewroles = array();
132
 
133
            $defaultteacherid = null;
134
            $defaultuserid    = null;
135
            $defaultguestid   = null;
136
 
137
            $roles = role_fix_names(get_all_roles(), null, ROLENAME_ORIGINALANDSHORT);
138
            foreach ($roles as $role) {
139
                $rolename = $role->localname;
140
                switch ($role->archetype) {
141
                    case 'manager':
142
                        $creatornewroles[$role->id] = $rolename;
143
                        break;
144
                    case 'coursecreator':
145
                        break;
146
                    case 'editingteacher':
147
                        $defaultteacherid = isset($defaultteacherid) ? $defaultteacherid : $role->id;
148
                        $creatornewroles[$role->id] = $rolename;
149
                        break;
150
                    case 'teacher':
151
                        $creatornewroles[$role->id] = $rolename;
152
                        break;
153
                    case 'student':
154
                        break;
155
                    case 'guest':
156
                        $defaultguestid = isset($defaultguestid) ? $defaultguestid : $role->id;
157
                        $guestroles[$role->id] = $rolename;
158
                        break;
159
                    case 'user':
160
                        $defaultuserid = isset($defaultuserid) ? $defaultuserid : $role->id;
161
                        $userroles[$role->id] = $rolename;
162
                        break;
163
                    case 'frontpage':
164
                        break;
165
                    default:
166
                        $creatornewroles[$role->id] = $rolename;
167
                        $otherroles[$role->id] = $rolename;
168
                        break;
169
                }
170
            }
171
 
172
            if (empty($guestroles)) {
173
                $guestroles[0] = new lang_string('none');
174
                $defaultguestid = 0;
175
            }
176
 
177
            if (empty($userroles)) {
178
                $userroles[0] = new lang_string('none');
179
                $defaultuserid = 0;
180
            }
181
 
182
            $restorersnewrole = $creatornewroles;
183
            $restorersnewrole[0] = new lang_string('none');
184
 
185
            $temp->add(new admin_setting_configselect('notloggedinroleid', new lang_string('notloggedinroleid', 'admin'),
186
                          new lang_string('confignotloggedinroleid', 'admin'), $defaultguestid, ($guestroles + $otherroles)));
187
            $temp->add(new admin_setting_configselect('guestroleid', new lang_string('guestroleid', 'admin'),
188
                          new lang_string('guestroleid_help', 'admin'), $defaultguestid, ($guestroles + $otherroles)));
189
            $temp->add(new admin_setting_configselect('defaultuserroleid', new lang_string('defaultuserroleid', 'admin'),
190
                          new lang_string('configdefaultuserroleid', 'admin'), $defaultuserid, ($userroles + $otherroles)));
191
            $temp->add(new admin_setting_configselect('creatornewroleid', new lang_string('creatornewroleid', 'admin'),
192
                          new lang_string('creatornewroleid_help', 'admin'), $defaultteacherid, $creatornewroles));
193
            $temp->add(new admin_setting_configselect('restorernewroleid', new lang_string('restorernewroleid', 'admin'),
194
                          new lang_string('restorernewroleid_help', 'admin'), $defaultteacherid, $restorersnewrole));
195
 
196
            // Release memory.
197
            unset($otherroles);
198
            unset($guestroles);
199
            unset($userroles);
200
            unset($creatornewroles);
201
            unset($restorersnewrole);
202
        }
203
 
204
        $temp->add(new admin_setting_configcheckbox('enroladminnewcourse', new lang_string('enroladminnewcourse', 'admin'),
205
            new lang_string('enroladminnewcourse_help', 'admin'), 1));
206
 
207
        $temp->add(new admin_setting_configcheckbox('autologinguests', new lang_string('autologinguests', 'admin'), new lang_string('configautologinguests', 'admin'), 0));
208
 
209
        $temp->add(new admin_setting_configmultiselect('hiddenuserfields', new lang_string('hiddenuserfields', 'admin'),
210
                   new lang_string('confighiddenuserfields', 'admin'), array(),
211
                       array('description' => new lang_string('description'),
212
                             'email' => new lang_string('email'),
213
                             'city' => new lang_string('city'),
214
                             'country' => new lang_string('country'),
215
                             'moodlenetprofile' => new lang_string('moodlenetprofile', 'user'),
216
                             'timezone' => new lang_string('timezone'),
217
                             'firstaccess' => new lang_string('firstaccess'),
218
                             'lastaccess' => new lang_string('lastaccess'),
219
                             'lastip' => new lang_string('lastip'),
220
                             'mycourses' => new lang_string('mycourses'),
221
                             'groups' => new lang_string('groups'),
222
                             'suspended' => new lang_string('suspended', 'auth'),
223
                       )));
224
 
225
        // Select fields to display as part of user identity (only to those
226
        // with moodle/site:viewuseridentity).
227
        // Options include fields from the user table that might be helpful to
228
        // distinguish when adding or listing users ('I want to add the John
229
        // Smith from Science faculty') and any custom profile fields.
230
        $temp->add(new admin_setting_configmulticheckbox('showuseridentity',
231
                new lang_string('showuseridentity', 'admin'),
232
                new lang_string('showuseridentity_desc', 'admin'), ['email' => 1],
233
                function() {
234
                    global $CFG;
235
                    require_once($CFG->dirroot.'/user/profile/lib.php');
236
 
237
                    // Basic fields available in user table.
238
                    $fields = [
239
                        'username'    => new lang_string('username'),
240
                        'idnumber'    => new lang_string('idnumber'),
241
                        'email'       => new lang_string('email'),
242
                        'phone1'      => new lang_string('phone1'),
243
                        'phone2'      => new lang_string('phone2'),
244
                        'department'  => new lang_string('department'),
245
                        'institution' => new lang_string('institution'),
246
                        'city'        => new lang_string('city'),
247
                        'country'     => new lang_string('country'),
248
                    ];
249
 
250
                    // Custom profile fields.
251
                    $profilefields = profile_get_custom_fields();
252
                    foreach ($profilefields as $field) {
253
                        // Only reasonable-length text fields can be used as identity fields.
254
                        if ($field->param2 > 255 || $field->datatype != 'text') {
255
                            continue;
256
                        }
257
                        $fields['profile_field_' . $field->shortname] = format_string($field->name, true,
258
                            ['context' => context_system::instance()]) . ' *';
259
                    }
260
 
261
                    return $fields;
262
                }));
263
        $setting = new admin_setting_configtext('fullnamedisplay', new lang_string('fullnamedisplay', 'admin'),
264
            new lang_string('configfullnamedisplay', 'admin'), 'language', PARAM_TEXT, 50);
265
        $setting->set_force_ltr(true);
266
        $temp->add($setting);
267
        $temp->add(new admin_setting_configtext('alternativefullnameformat', new lang_string('alternativefullnameformat', 'admin'),
268
                new lang_string('alternativefullnameformat_desc', 'admin'),
269
                'language', PARAM_RAW, 50));
270
        $temp->add(new admin_setting_configtext('maxusersperpage', new lang_string('maxusersperpage','admin'), new lang_string('configmaxusersperpage','admin'), 100, PARAM_INT));
271
        $temp->add(new admin_setting_configcheckbox('enablegravatar', new lang_string('enablegravatar', 'admin'), new lang_string('enablegravatar_help', 'admin'), 0));
272
        $temp->add(new admin_setting_configtext('gravatardefaulturl', new lang_string('gravatardefaulturl', 'admin'), new lang_string('gravatardefaulturl_help', 'admin'), 'mm'));
273
    }
274
 
275
    $ADMIN->add('roles', $temp);
276
 
277
    if (is_siteadmin()) {
278
        $ADMIN->add('roles', new admin_externalpage('admins', new lang_string('siteadministrators', 'role'), "$CFG->wwwroot/$CFG->admin/roles/admins.php"));
279
    }
280
    $ADMIN->add('roles', new admin_externalpage('defineroles', new lang_string('defineroles', 'role'), "$CFG->wwwroot/$CFG->admin/roles/manage.php", 'moodle/role:manage'));
281
    $ADMIN->add('roles', new admin_externalpage('assignroles', new lang_string('assignglobalroles', 'role'), "$CFG->wwwroot/$CFG->admin/roles/assign.php?contextid=".$systemcontext->id, 'moodle/role:assign'));
282
    $ADMIN->add('roles', new admin_externalpage('checkpermissions', new lang_string('checkglobalpermissions', 'role'), "$CFG->wwwroot/$CFG->admin/roles/check.php?contextid=".$systemcontext->id, array('moodle/role:assign', 'moodle/role:safeoverride', 'moodle/role:override', 'moodle/role:manage')));
283
 
284
} // End of speedup.
285
 
286
// Privacy settings.
287
if ($hassiteconfig) {
288
    $temp = new admin_settingpage('privacysettings', new lang_string('privacysettings', 'admin'));
289
 
290
    $options = array(
291
 
292
        1 => get_string('yes')
293
    );
294
    $url = new moodle_url('/admin/settings.php?section=supportcontact');
295
    $url = $url->out();
296
    $setting = new admin_setting_configselect('agedigitalconsentverification',
297
        new lang_string('agedigitalconsentverification', 'admin'),
298
        new lang_string('agedigitalconsentverification_desc', 'admin', $url), 0, $options);
299
    $setting->set_force_ltr(true);
300
    $temp->add($setting);
301
 
302
    // See {@link https://gdpr-info.eu/art-8-gdpr/}.
303
    // See {@link https://www.betterinternetforkids.eu/web/portal/practice/awareness/detail?articleId=3017751}.
304
    $ageofdigitalconsentmap = implode(PHP_EOL, [
305
        '*, 16',
306
        'AT, 14',
307
        'BE, 13',
308
        'BG, 14',
309
        'CY, 14',
310
        'CZ, 15',
311
        'DK, 13',
312
        'EE, 13',
313
        'ES, 14',
314
        'FI, 13',
315
        'FR, 15',
316
        'GB, 13',
317
        'GR, 15',
318
        'IT, 14',
319
        'LT, 14',
320
        'LV, 13',
321
        'MT, 13',
322
        'NO, 13',
323
        'PT, 13',
324
        'SE, 13',
325
        'US, 13'
326
    ]);
327
    $setting = new admin_setting_agedigitalconsentmap('agedigitalconsentmap',
328
        new lang_string('ageofdigitalconsentmap', 'admin'),
329
        new lang_string('ageofdigitalconsentmap_desc', 'admin'),
330
        $ageofdigitalconsentmap,
331
        PARAM_RAW
332
    );
333
    $temp->add($setting);
334
 
335
    $ADMIN->add('privacy', $temp);
336
 
337
    // Policy settings.
338
    $temp = new admin_settingpage('policysettings', new lang_string('policysettings', 'admin'));
339
    $temp->add(new admin_settings_sitepolicy_handler_select('sitepolicyhandler', new lang_string('sitepolicyhandler', 'core_admin'),
340
        new lang_string('sitepolicyhandler_desc', 'core_admin')));
341
    $temp->add(new admin_setting_configtext('sitepolicy', new lang_string('sitepolicy', 'core_admin'),
342
        new lang_string('sitepolicy_help', 'core_admin'), '', PARAM_RAW));
343
    $temp->add(new admin_setting_configtext('sitepolicyguest', new lang_string('sitepolicyguest', 'core_admin'),
344
        new lang_string('sitepolicyguest_help', 'core_admin'), (isset($CFG->sitepolicy) ? $CFG->sitepolicy : ''), PARAM_RAW));
345
 
346
    $ADMIN->add('privacy', $temp);
347
}