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