See Release Notes
Long Term Support Release
Differences Between: [Versions 39 and 310] [Versions 39 and 311] [Versions 39 and 400] [Versions 39 and 401] [Versions 39 and 402] [Versions 39 and 403]
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 /** 18 * Load all plugins into the admin tree. 19 * 20 * Please note that is file is always loaded last - it means that you can inject entries into other categories too. 21 * 22 * @package core 23 * @copyright 2007 Petr Skoda {@link http://skodak.org} 24 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 25 */ 26 27 if ($hassiteconfig) { 28 /* @var admin_root $ADMIN */ 29 $ADMIN->locate('modules')->set_sorting(true); 30 31 $ADMIN->add('modules', new admin_page_pluginsoverview()); 32 33 // activity modules 34 $ADMIN->add('modules', new admin_category('modsettings', new lang_string('activitymodules'))); 35 36 $ADMIN->add('modsettings', new admin_page_managemods()); 37 38 $temp = new admin_settingpage('managemodulescommon', new lang_string('commonactivitysettings', 'admin')); 39 $temp->add(new admin_setting_configcheckbox('requiremodintro', 40 get_string('requiremodintro', 'admin'), get_string('requiremodintro_desc', 'admin'), 0)); 41 $ADMIN->add('modsettings', $temp); 42 43 $plugins = core_plugin_manager::instance()->get_plugins_of_type('mod'); 44 core_collator::asort_objects_by_property($plugins, 'displayname'); 45 foreach ($plugins as $plugin) { 46 /** @var \core\plugininfo\mod $plugin */ 47 $plugin->load_settings($ADMIN, 'modsettings', $hassiteconfig); 48 } 49 50 // course formats 51 $ADMIN->add('modules', new admin_category('formatsettings', new lang_string('courseformats'))); 52 $temp = new admin_settingpage('manageformats', new lang_string('manageformats', 'core_admin')); 53 $temp->add(new admin_setting_manageformats()); 54 $ADMIN->add('formatsettings', $temp); 55 $plugins = core_plugin_manager::instance()->get_plugins_of_type('format'); 56 core_collator::asort_objects_by_property($plugins, 'displayname'); 57 foreach ($plugins as $plugin) { 58 /** @var \core\plugininfo\format $plugin */ 59 $plugin->load_settings($ADMIN, 'formatsettings', $hassiteconfig); 60 } 61 62 // Custom fields. 63 $ADMIN->add('modules', new admin_category('customfieldsettings', new lang_string('customfields', 'core_customfield'))); 64 $temp = new admin_settingpage('managecustomfields', new lang_string('managecustomfields', 'core_admin')); 65 $temp->add(new admin_setting_managecustomfields()); 66 $ADMIN->add('customfieldsettings', $temp); 67 $plugins = core_plugin_manager::instance()->get_plugins_of_type('customfield'); 68 core_collator::asort_objects_by_property($plugins, 'displayname'); 69 foreach ($plugins as $plugin) { 70 /** @var \core\plugininfo\customfield $plugin */ 71 $plugin->load_settings($ADMIN, 'customfieldsettings', $hassiteconfig); 72 } 73 74 // blocks 75 $ADMIN->add('modules', new admin_category('blocksettings', new lang_string('blocks'))); 76 $ADMIN->add('blocksettings', new admin_page_manageblocks()); 77 $plugins = core_plugin_manager::instance()->get_plugins_of_type('block'); 78 core_collator::asort_objects_by_property($plugins, 'displayname'); 79 foreach ($plugins as $plugin) { 80 /** @var \core\plugininfo\block $plugin */ 81 $plugin->load_settings($ADMIN, 'blocksettings', $hassiteconfig); 82 } 83 84 // authentication plugins 85 $ADMIN->add('modules', new admin_category('authsettings', new lang_string('authentication', 'admin'))); 86 87 $temp = new admin_settingpage('manageauths', new lang_string('authsettings', 'admin')); 88 $temp->add(new admin_setting_manageauths()); 89 $temp->add(new admin_setting_heading('manageauthscommonheading', new lang_string('commonsettings', 'admin'), '')); 90 $temp->add(new admin_setting_special_registerauth()); 91 $temp->add(new admin_setting_configcheckbox('authloginviaemail', new lang_string('authloginviaemail', 'core_auth'), new lang_string('authloginviaemail_desc', 'core_auth'), 0)); 92 $temp->add(new admin_setting_configcheckbox('allowaccountssameemail', 93 new lang_string('allowaccountssameemail', 'core_auth'), 94 new lang_string('allowaccountssameemail_desc', 'core_auth'), 0)); 95 $temp->add(new admin_setting_configcheckbox('authpreventaccountcreation', new lang_string('authpreventaccountcreation', 'admin'), new lang_string('authpreventaccountcreation_help', 'admin'), 0)); 96 $temp->add(new admin_setting_configcheckbox('loginpageautofocus', new lang_string('loginpageautofocus', 'admin'), new lang_string('loginpageautofocus_help', 'admin'), 0)); 97 $temp->add(new admin_setting_configselect('guestloginbutton', new lang_string('guestloginbutton', 'auth'), 98 new lang_string('showguestlogin', 'auth'), '1', array('0'=>new lang_string('hide'), '1'=>new lang_string('show')))); 99 $options = array(0 => get_string('no'), 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 10 => 10, 20 => 20, 50 => 50); 100 $temp->add(new admin_setting_configselect('limitconcurrentlogins', 101 new lang_string('limitconcurrentlogins', 'core_auth'), 102 new lang_string('limitconcurrentlogins_desc', 'core_auth'), 0, $options)); 103 $temp->add(new admin_setting_configtext('alternateloginurl', new lang_string('alternateloginurl', 'auth'), 104 new lang_string('alternatelogin', 'auth', htmlspecialchars(get_login_url())), '')); 105 $temp->add(new admin_setting_configtext('forgottenpasswordurl', new lang_string('forgottenpasswordurl', 'auth'), 106 new lang_string('forgottenpassword', 'auth'), '', PARAM_URL)); 107 $temp->add(new admin_setting_confightmleditor('auth_instructions', new lang_string('instructions', 'auth'), 108 new lang_string('authinstructions', 'auth'), '')); 109 $setting = new admin_setting_configtext('allowemailaddresses', new lang_string('allowemailaddresses', 'admin'), 110 new lang_string('configallowemailaddresses', 'admin'), '', PARAM_NOTAGS); 111 $setting->set_force_ltr(true); 112 $temp->add($setting); 113 $setting = new admin_setting_configtext('denyemailaddresses', new lang_string('denyemailaddresses', 'admin'), 114 new lang_string('configdenyemailaddresses', 'admin'), '', PARAM_NOTAGS); 115 $setting->set_force_ltr(true); 116 $temp->add($setting); 117 $temp->add(new admin_setting_configcheckbox('verifychangedemail', new lang_string('verifychangedemail', 'admin'), new lang_string('configverifychangedemail', 'admin'), 1)); 118 119 $setting = new admin_setting_configtext('recaptchapublickey', new lang_string('recaptchapublickey', 'admin'), new lang_string('configrecaptchapublickey', 'admin'), '', PARAM_NOTAGS); 120 $setting->set_force_ltr(true); 121 $temp->add($setting); 122 $setting = new admin_setting_configtext('recaptchaprivatekey', new lang_string('recaptchaprivatekey', 'admin'), new lang_string('configrecaptchaprivatekey', 'admin'), '', PARAM_NOTAGS); 123 $setting->set_force_ltr(true); 124 $temp->add($setting); 125 $ADMIN->add('authsettings', $temp); 126 127 $temp = new admin_externalpage('authtestsettings', get_string('testsettings', 'core_auth'), new moodle_url("/auth/test_settings.php"), 'moodle/site:config', true); 128 $ADMIN->add('authsettings', $temp); 129 130 $plugins = core_plugin_manager::instance()->get_plugins_of_type('auth'); 131 core_collator::asort_objects_by_property($plugins, 'displayname'); 132 foreach ($plugins as $plugin) { 133 /** @var \core\plugininfo\auth $plugin */ 134 $plugin->load_settings($ADMIN, 'authsettings', $hassiteconfig); 135 } 136 137 // Enrolment plugins 138 $ADMIN->add('modules', new admin_category('enrolments', new lang_string('enrolments', 'enrol'))); 139 $temp = new admin_settingpage('manageenrols', new lang_string('manageenrols', 'enrol')); 140 $temp->add(new admin_setting_manageenrols()); 141 $ADMIN->add('enrolments', $temp); 142 143 $temp = new admin_externalpage('enroltestsettings', get_string('testsettings', 'core_enrol'), new moodle_url("/enrol/test_settings.php"), 'moodle/site:config', true); 144 $ADMIN->add('enrolments', $temp); 145 146 $plugins = core_plugin_manager::instance()->get_plugins_of_type('enrol'); 147 core_collator::asort_objects_by_property($plugins, 'displayname'); 148 foreach ($plugins as $plugin) { 149 /** @var \core\plugininfo\enrol $plugin */ 150 $plugin->load_settings($ADMIN, 'enrolments', $hassiteconfig); 151 } 152 153 154 /// Editor plugins 155 $ADMIN->add('modules', new admin_category('editorsettings', new lang_string('editors', 'editor'))); 156 $temp = new admin_settingpage('manageeditors', new lang_string('editorsettings', 'editor')); 157 $temp->add(new admin_setting_manageeditors()); 158 $ADMIN->add('editorsettings', $temp); 159 $plugins = core_plugin_manager::instance()->get_plugins_of_type('editor'); 160 core_collator::asort_objects_by_property($plugins, 'displayname'); 161 foreach ($plugins as $plugin) { 162 /** @var \core\plugininfo\editor $plugin */ 163 $plugin->load_settings($ADMIN, 'editorsettings', $hassiteconfig); 164 } 165 166 // Antivirus plugins. 167 $ADMIN->add('modules', new admin_category('antivirussettings', new lang_string('antiviruses', 'antivirus'))); 168 $temp = new admin_settingpage('manageantiviruses', new lang_string('antivirussettings', 'antivirus')); 169 $temp->add(new admin_setting_manageantiviruses()); 170 $ADMIN->add('antivirussettings', $temp); 171 $plugins = core_plugin_manager::instance()->get_plugins_of_type('antivirus'); 172 core_collator::asort_objects_by_property($plugins, 'displayname'); 173 foreach ($plugins as $plugin) { 174 /* @var \core\plugininfo\antivirus $plugin */ 175 $plugin->load_settings($ADMIN, 'antivirussettings', $hassiteconfig); 176 } 177 178 // Machine learning backend plugins. 179 $ADMIN->add('modules', new admin_category('mlbackendsettings', new lang_string('mlbackendsettings', 'admin'))); 180 $plugins = core_plugin_manager::instance()->get_plugins_of_type('mlbackend'); 181 foreach ($plugins as $plugin) { 182 $plugin->load_settings($ADMIN, 'mlbackendsettings', $hassiteconfig); 183 } 184 185 /// Filter plugins 186 $ADMIN->add('modules', new admin_category('filtersettings', new lang_string('managefilters'))); 187 188 $ADMIN->add('filtersettings', new admin_page_managefilters()); 189 190 // "filtersettings" settingpage 191 $temp = new admin_settingpage('commonfiltersettings', new lang_string('commonfiltersettings', 'admin')); 192 if ($ADMIN->fulltree) { 193 $items = array(); 194 $items[] = new admin_setting_configselect('filteruploadedfiles', new lang_string('filteruploadedfiles', 'admin'), new lang_string('configfilteruploadedfiles', 'admin'), 0, 195 array('0' => new lang_string('none'), '1' => new lang_string('allfiles'), '2' => new lang_string('htmlfilesonly'))); 196 $items[] = new admin_setting_configcheckbox('filtermatchoneperpage', new lang_string('filtermatchoneperpage', 'admin'), new lang_string('configfiltermatchoneperpage', 'admin'), 0); 197 $items[] = new admin_setting_configcheckbox('filtermatchonepertext', new lang_string('filtermatchonepertext', 'admin'), new lang_string('configfiltermatchonepertext', 'admin'), 0); 198 foreach ($items as $item) { 199 $item->set_updatedcallback('reset_text_filters_cache'); 200 $temp->add($item); 201 } 202 } 203 $ADMIN->add('filtersettings', $temp); 204 205 $plugins = core_plugin_manager::instance()->get_plugins_of_type('filter'); 206 core_collator::asort_objects_by_property($plugins, 'displayname'); 207 foreach ($plugins as $plugin) { 208 /** @var \core\plugininfo\filter $plugin */ 209 $plugin->load_settings($ADMIN, 'filtersettings', $hassiteconfig); 210 } 211 212 // Media players. 213 $ADMIN->add('modules', new admin_category('mediaplayers', new lang_string('type_media_plural', 'plugin'))); 214 $temp = new admin_settingpage('managemediaplayers', new lang_string('managemediaplayers', 'media')); 215 $temp->add(new admin_setting_heading('mediaformats', get_string('mediaformats', 'core_media'), 216 format_text(get_string('mediaformats_desc', 'core_media'), FORMAT_MARKDOWN))); 217 $temp->add(new admin_setting_managemediaplayers()); 218 $temp->add(new admin_setting_heading('managemediaplayerscommonheading', new lang_string('commonsettings', 'admin'), '')); 219 $temp->add(new admin_setting_configtext('media_default_width', 220 new lang_string('defaultwidth', 'core_media'), new lang_string('defaultwidthdesc', 'core_media'), 221 400, PARAM_INT, 10)); 222 $temp->add(new admin_setting_configtext('media_default_height', 223 new lang_string('defaultheight', 'core_media'), new lang_string('defaultheightdesc', 'core_media'), 224 300, PARAM_INT, 10)); 225 $ADMIN->add('mediaplayers', $temp); 226 227 // Convert plugins. 228 $ADMIN->add('modules', new admin_category('fileconverterplugins', new lang_string('type_fileconverter_plural', 'plugin'))); 229 $temp = new admin_settingpage('managefileconverterplugins', new lang_string('type_fileconvertermanage', 'plugin')); 230 $temp->add(new admin_setting_manage_fileconverter_plugins()); 231 $ADMIN->add('fileconverterplugins', $temp); 232 233 $plugins = core_plugin_manager::instance()->get_plugins_of_type('fileconverter'); 234 core_collator::asort_objects_by_property($plugins, 'displayname'); 235 foreach ($plugins as $plugin) { 236 /** @var \core\plugininfo\media $plugin */ 237 $plugin->load_settings($ADMIN, 'fileconverterplugins', $hassiteconfig); 238 } 239 240 $plugins = core_plugin_manager::instance()->get_plugins_of_type('media'); 241 core_collator::asort_objects_by_property($plugins, 'displayname'); 242 foreach ($plugins as $plugin) { 243 /** @var \core\plugininfo\media $plugin */ 244 $plugin->load_settings($ADMIN, 'mediaplayers', $hassiteconfig); 245 } 246 247 // Data format settings. 248 $ADMIN->add('modules', new admin_category('dataformatsettings', new lang_string('dataformats'))); 249 $temp = new admin_settingpage('managedataformats', new lang_string('managedataformats')); 250 $temp->add(new admin_setting_managedataformats()); 251 $ADMIN->add('dataformatsettings', $temp); 252 253 //== Portfolio settings == 254 require_once($CFG->libdir. '/portfoliolib.php'); 255 $catname = new lang_string('portfolios', 'portfolio'); 256 $manage = new lang_string('manageportfolios', 'portfolio'); 257 $url = "$CFG->wwwroot/$CFG->admin/portfolio.php"; 258 259 $ADMIN->add('modules', new admin_category('portfoliosettings', $catname, empty($CFG->enableportfolios))); 260 261 // Add manage page (with table) 262 $temp = new admin_page_manageportfolios(); 263 $ADMIN->add('portfoliosettings', $temp); 264 265 // Add common settings page 266 $temp = new admin_settingpage('manageportfolioscommon', new lang_string('commonportfoliosettings', 'portfolio')); 267 $temp->add(new admin_setting_heading('manageportfolioscommon', '', new lang_string('commonsettingsdesc', 'portfolio'))); 268 $fileinfo = portfolio_filesize_info(); // make sure this is defined in one place since its used inside portfolio too to detect insane settings 269 $fileoptions = $fileinfo['options']; 270 $temp->add(new admin_setting_configselect( 271 'portfolio_moderate_filesize_threshold', 272 new lang_string('moderatefilesizethreshold', 'portfolio'), 273 new lang_string('moderatefilesizethresholddesc', 'portfolio'), 274 $fileinfo['moderate'], $fileoptions)); 275 $temp->add(new admin_setting_configselect( 276 'portfolio_high_filesize_threshold', 277 new lang_string('highfilesizethreshold', 'portfolio'), 278 new lang_string('highfilesizethresholddesc', 'portfolio'), 279 $fileinfo['high'], $fileoptions)); 280 281 $temp->add(new admin_setting_configtext( 282 'portfolio_moderate_db_threshold', 283 new lang_string('moderatedbsizethreshold', 'portfolio'), 284 new lang_string('moderatedbsizethresholddesc', 'portfolio'), 285 20, PARAM_INT, 3)); 286 287 $temp->add(new admin_setting_configtext( 288 'portfolio_high_db_threshold', 289 new lang_string('highdbsizethreshold', 'portfolio'), 290 new lang_string('highdbsizethresholddesc', 'portfolio'), 291 50, PARAM_INT, 3)); 292 293 $ADMIN->add('portfoliosettings', $temp); 294 $ADMIN->add('portfoliosettings', new admin_externalpage('portfolionew', new lang_string('addnewportfolio', 'portfolio'), $url, 'moodle/site:config', true)); 295 $ADMIN->add('portfoliosettings', new admin_externalpage('portfoliodelete', new lang_string('deleteportfolio', 'portfolio'), $url, 'moodle/site:config', true)); 296 $ADMIN->add('portfoliosettings', new admin_externalpage('portfoliocontroller', new lang_string('manageportfolios', 'portfolio'), $url, 'moodle/site:config', true)); 297 298 foreach (portfolio_instances(false, false) as $portfolio) { 299 require_once($CFG->dirroot . '/portfolio/' . $portfolio->get('plugin') . '/lib.php'); 300 $classname = 'portfolio_plugin_' . $portfolio->get('plugin'); 301 $ADMIN->add( 302 'portfoliosettings', 303 new admin_externalpage( 304 'portfoliosettings' . $portfolio->get('id'), 305 $portfolio->get('name'), 306 $url . '?action=edit&pf=' . $portfolio->get('id'), 307 'moodle/site:config' 308 ) 309 ); 310 } 311 312 // repository setting 313 require_once("$CFG->dirroot/repository/lib.php"); 314 $catname =new lang_string('repositories', 'repository'); 315 $managerepo = new lang_string('manage', 'repository'); 316 $url = $CFG->wwwroot.'/'.$CFG->admin.'/repository.php'; 317 $ADMIN->add('modules', new admin_category('repositorysettings', $catname)); 318 319 // Add main page (with table) 320 $temp = new admin_page_managerepositories(); 321 $ADMIN->add('repositorysettings', $temp); 322 323 // Add common settings page 324 $temp = new admin_settingpage('managerepositoriescommon', new lang_string('commonrepositorysettings', 'repository')); 325 $temp->add(new admin_setting_configtext('repositorycacheexpire', new lang_string('cacheexpire', 'repository'), new lang_string('configcacheexpire', 'repository'), 120, PARAM_INT)); 326 $temp->add(new admin_setting_configtext('repositorygetfiletimeout', new lang_string('getfiletimeout', 'repository'), new lang_string('configgetfiletimeout', 'repository'), 30, PARAM_INT)); 327 $temp->add(new admin_setting_configtext('repositorysyncfiletimeout', new lang_string('syncfiletimeout', 'repository'), new lang_string('configsyncfiletimeout', 'repository'), 1, PARAM_INT)); 328 $temp->add(new admin_setting_configtext('repositorysyncimagetimeout', new lang_string('syncimagetimeout', 'repository'), new lang_string('configsyncimagetimeout', 'repository'), 3, PARAM_INT)); 329 $temp->add(new admin_setting_configcheckbox('repositoryallowexternallinks', new lang_string('allowexternallinks', 'repository'), new lang_string('configallowexternallinks', 'repository'), 1)); 330 $temp->add(new admin_setting_configcheckbox('legacyfilesinnewcourses', new lang_string('legacyfilesinnewcourses', 'admin'), new lang_string('legacyfilesinnewcourses_help', 'admin'), 0)); 331 $temp->add(new admin_setting_configcheckbox('legacyfilesaddallowed', new lang_string('legacyfilesaddallowed', 'admin'), new lang_string('legacyfilesaddallowed_help', 'admin'), 1)); 332 $ADMIN->add('repositorysettings', $temp); 333 $ADMIN->add('repositorysettings', new admin_externalpage('repositorynew', 334 new lang_string('addplugin', 'repository'), $url, 'moodle/site:config', true)); 335 $ADMIN->add('repositorysettings', new admin_externalpage('repositorydelete', 336 new lang_string('deleterepository', 'repository'), $url, 'moodle/site:config', true)); 337 $ADMIN->add('repositorysettings', new admin_externalpage('repositorycontroller', 338 new lang_string('manage', 'repository'), $url, 'moodle/site:config', true)); 339 $ADMIN->add('repositorysettings', new admin_externalpage('repositoryinstancenew', 340 new lang_string('createrepository', 'repository'), $url, 'moodle/site:config', true)); 341 $ADMIN->add('repositorysettings', new admin_externalpage('repositoryinstanceedit', 342 new lang_string('editrepositoryinstance', 'repository'), $url, 'moodle/site:config', true)); 343 $plugins = core_plugin_manager::instance()->get_plugins_of_type('repository'); 344 core_collator::asort_objects_by_property($plugins, 'displayname'); 345 foreach ($plugins as $plugin) { 346 /** @var \core\plugininfo\repository $plugin */ 347 $plugin->load_settings($ADMIN, 'repositorysettings', $hassiteconfig); 348 } 349 350 /// Web services 351 $ADMIN->add('modules', new admin_category('webservicesettings', new lang_string('webservices', 'webservice'))); 352 353 /// overview page 354 $temp = new admin_settingpage('webservicesoverview', new lang_string('webservicesoverview', 'webservice')); 355 $temp->add(new admin_setting_webservicesoverview()); 356 $ADMIN->add('webservicesettings', $temp); 357 //API documentation 358 $ADMIN->add('webservicesettings', new admin_externalpage('webservicedocumentation', new lang_string('wsdocapi', 'webservice'), "$CFG->wwwroot/$CFG->admin/webservice/documentation.php", 'moodle/site:config', false)); 359 /// manage service 360 $temp = new admin_settingpage('externalservices', new lang_string('externalservices', 'webservice')); 361 $temp->add(new admin_setting_heading('manageserviceshelpexplaination', new lang_string('information', 'webservice'), new lang_string('servicehelpexplanation', 'webservice'))); 362 $temp->add(new admin_setting_manageexternalservices()); 363 $ADMIN->add('webservicesettings', $temp); 364 $ADMIN->add('webservicesettings', new admin_externalpage('externalservice', new lang_string('editaservice', 'webservice'), "$CFG->wwwroot/$CFG->admin/webservice/service.php", 'moodle/site:config', true)); 365 $ADMIN->add('webservicesettings', new admin_externalpage('externalservicefunctions', new lang_string('externalservicefunctions', 'webservice'), "$CFG->wwwroot/$CFG->admin/webservice/service_functions.php", 'moodle/site:config', true)); 366 $ADMIN->add('webservicesettings', new admin_externalpage('externalserviceusers', new lang_string('externalserviceusers', 'webservice'), "$CFG->wwwroot/$CFG->admin/webservice/service_users.php", 'moodle/site:config', true)); 367 $ADMIN->add('webservicesettings', new admin_externalpage('externalserviceusersettings', new lang_string('serviceusersettings', 'webservice'), "$CFG->wwwroot/$CFG->admin/webservice/service_user_settings.php", 'moodle/site:config', true)); 368 /// manage protocol page link 369 $temp = new admin_settingpage('webserviceprotocols', new lang_string('manageprotocols', 'webservice')); 370 $temp->add(new admin_setting_managewebserviceprotocols()); 371 if (empty($CFG->enablewebservices)) { 372 $temp->add(new admin_setting_heading('webservicesaredisabled', '', new lang_string('disabledwarning', 'webservice'))); 373 } 374 375 // We cannot use $OUTPUT this early, doing so means that we lose the ability 376 // to set the page layout on all admin pages. 377 // $wsdoclink = $OUTPUT->doc_link('How_to_get_a_security_key'); 378 $url = new moodle_url(get_docs_url('How_to_get_a_security_key')); 379 $wsdoclink = html_writer::tag('a', new lang_string('supplyinfo', 'webservice'), array('href'=>$url)); 380 $temp->add(new admin_setting_configcheckbox('enablewsdocumentation', new lang_string('enablewsdocumentation', 381 'admin'), new lang_string('configenablewsdocumentation', 'admin', $wsdoclink), false)); 382 $ADMIN->add('webservicesettings', $temp); 383 /// links to protocol pages 384 $plugins = core_plugin_manager::instance()->get_plugins_of_type('webservice'); 385 core_collator::asort_objects_by_property($plugins, 'displayname'); 386 foreach ($plugins as $plugin) { 387 /** @var \core\plugininfo\webservice $plugin */ 388 $plugin->load_settings($ADMIN, 'webservicesettings', $hassiteconfig); 389 } 390 /// manage token page link 391 $ADMIN->add('webservicesettings', new admin_externalpage('addwebservicetoken', new lang_string('managetokens', 'webservice'), "$CFG->wwwroot/$CFG->admin/webservice/tokens.php", 'moodle/site:config', true)); 392 $temp = new admin_settingpage('webservicetokens', new lang_string('managetokens', 'webservice')); 393 $temp->add(new admin_setting_managewebservicetokens()); 394 if (empty($CFG->enablewebservices)) { 395 $temp->add(new admin_setting_heading('webservicesaredisabled', '', new lang_string('disabledwarning', 'webservice'))); 396 } 397 $ADMIN->add('webservicesettings', $temp); 398 } 399 400 // Question type settings 401 if ($hassiteconfig || has_capability('moodle/question:config', $systemcontext)) { 402 403 // Question behaviour settings. 404 $ADMIN->add('modules', new admin_category('qbehavioursettings', new lang_string('questionbehaviours', 'admin'))); 405 $ADMIN->add('qbehavioursettings', new admin_page_manageqbehaviours()); 406 407 // Question type settings. 408 $ADMIN->add('modules', new admin_category('qtypesettings', new lang_string('questiontypes', 'admin'))); 409 $ADMIN->add('qtypesettings', new admin_page_manageqtypes()); 410 411 // Question preview defaults. 412 $settings = new admin_settingpage('qdefaultsetting', 413 get_string('questionpreviewdefaults', 'question'), 414 'moodle/question:config'); 415 $ADMIN->add('qtypesettings', $settings); 416 417 $settings->add(new admin_setting_heading('qdefaultsetting_preview_options', 418 '', get_string('questionpreviewdefaults_desc', 'question'))); 419 420 // These keys are question_display_options::HIDDEN and VISIBLE. 421 $hiddenofvisible = array( 422 0 => get_string('notshown', 'question'), 423 1 => get_string('shown', 'question'), 424 ); 425 426 $settings->add(new admin_setting_question_behaviour('question_preview/behaviour', 427 get_string('howquestionsbehave', 'question'), '', 428 'deferredfeedback')); 429 430 $settings->add(new admin_setting_configselect('question_preview/correctness', 431 get_string('whethercorrect', 'question'), '', 1, $hiddenofvisible)); 432 433 // These keys are question_display_options::HIDDEN, MARK_ONLY and MARK_AND_MAX. 434 $marksoptions = array( 435 0 => get_string('notshown', 'question'), 436 1 => get_string('showmaxmarkonly', 'question'), 437 2 => get_string('showmarkandmax', 'question'), 438 ); 439 $settings->add(new admin_setting_configselect('question_preview/marks', 440 get_string('marks', 'question'), '', 2, $marksoptions)); 441 442 $settings->add(new admin_setting_configselect('question_preview/markdp', 443 get_string('decimalplacesingrades', 'question'), '', 2, array(0, 1, 2, 3, 4, 5, 6, 7))); 444 445 $settings->add(new admin_setting_configselect('question_preview/feedback', 446 get_string('specificfeedback', 'question'), '', 1, $hiddenofvisible)); 447 448 $settings->add(new admin_setting_configselect('question_preview/generalfeedback', 449 get_string('generalfeedback', 'question'), '', 1, $hiddenofvisible)); 450 451 $settings->add(new admin_setting_configselect('question_preview/rightanswer', 452 get_string('rightanswer', 'question'), '', 1, $hiddenofvisible)); 453 454 $settings->add(new admin_setting_configselect('question_preview/history', 455 get_string('responsehistory', 'question'), '', 0, $hiddenofvisible)); 456 457 // Settings for particular question types. 458 $plugins = core_plugin_manager::instance()->get_plugins_of_type('qtype'); 459 core_collator::asort_objects_by_property($plugins, 'displayname'); 460 foreach ($plugins as $plugin) { 461 /** @var \core\plugininfo\qtype $plugin */ 462 $plugin->load_settings($ADMIN, 'qtypesettings', $hassiteconfig); 463 } 464 } 465 466 // Plagiarism plugin settings 467 if ($hassiteconfig && !empty($CFG->enableplagiarism)) { 468 $ADMIN->add('modules', new admin_category('plagiarism', new lang_string('plagiarism', 'plagiarism'))); 469 $ADMIN->add('plagiarism', new admin_externalpage('manageplagiarismplugins', new lang_string('manageplagiarism', 'plagiarism'), 470 $CFG->wwwroot . '/' . $CFG->admin . '/plagiarism.php')); 471 472 $plugins = core_plugin_manager::instance()->get_plugins_of_type('plagiarism'); 473 core_collator::asort_objects_by_property($plugins, 'displayname'); 474 foreach ($plugins as $plugin) { 475 /** @var \core\plugininfo\plagiarism $plugin */ 476 $plugin->load_settings($ADMIN, 'plagiarism', $hassiteconfig); 477 } 478 } 479 $ADMIN->add('reports', new admin_externalpage('comments', new lang_string('comments'), $CFG->wwwroot.'/comment/', 'moodle/site:viewreports')); 480 481 // Course reports settings 482 if ($hassiteconfig) { 483 $pages = array(); 484 foreach (core_component::get_plugin_list('coursereport') as $report => $path) { 485 $file = $CFG->dirroot . '/course/report/' . $report . '/settings.php'; 486 if (file_exists($file)) { 487 $settings = new admin_settingpage('coursereport' . $report, 488 new lang_string('pluginname', 'coursereport_' . $report), 'moodle/site:config'); 489 // settings.php may create a subcategory or unset the settings completely 490 include($file); 491 if ($settings) { 492 $pages[] = $settings; 493 } 494 } 495 } 496 if (!empty($pages)) { 497 $ADMIN->add('modules', new admin_category('coursereports', new lang_string('coursereports'))); 498 core_collator::asort_objects_by_property($pages, 'visiblename'); 499 foreach ($pages as $page) { 500 $ADMIN->add('coursereports', $page); 501 } 502 } 503 unset($pages); 504 } 505 506 // Now add reports 507 $pages = array(); 508 foreach (core_component::get_plugin_list('report') as $report => $plugindir) { 509 $settings_path = "$plugindir/settings.php"; 510 if (file_exists($settings_path)) { 511 $settings = new admin_settingpage('report' . $report, 512 new lang_string('pluginname', 'report_' . $report), 'moodle/site:config'); 513 include($settings_path); 514 if ($settings) { 515 $pages[] = $settings; 516 } 517 } 518 } 519 $ADMIN->add('modules', new admin_category('reportplugins', new lang_string('reports'))); 520 $ADMIN->add('reportplugins', new admin_externalpage('managereports', new lang_string('reportsmanage', 'admin'), 521 $CFG->wwwroot . '/' . $CFG->admin . '/reports.php')); 522 core_collator::asort_objects_by_property($pages, 'visiblename'); 523 foreach ($pages as $page) { 524 $ADMIN->add('reportplugins', $page); 525 } 526 527 if ($hassiteconfig) { 528 // Global Search engine plugins. 529 $ADMIN->add('modules', new admin_category('searchplugins', new lang_string('search', 'admin'))); 530 $temp = new admin_settingpage('manageglobalsearch', new lang_string('globalsearchmanage', 'admin')); 531 532 $pages = array(); 533 $engines = array(); 534 foreach (core_component::get_plugin_list('search') as $engine => $plugindir) { 535 $engines[$engine] = new lang_string('pluginname', 'search_' . $engine); 536 $settingspath = "$plugindir/settings.php"; 537 if (file_exists($settingspath)) { 538 $settings = new admin_settingpage('search' . $engine, 539 new lang_string('pluginname', 'search_' . $engine), 'moodle/site:config'); 540 include($settingspath); 541 if ($settings) { 542 $pages[] = $settings; 543 } 544 } 545 } 546 547 // Setup status. 548 $temp->add(new admin_setting_searchsetupinfo()); 549 550 // Search engine selection. 551 $temp->add(new admin_setting_heading('searchengineheading', new lang_string('searchengine', 'admin'), '')); 552 $temp->add(new admin_setting_configselect('searchengine', 553 new lang_string('selectsearchengine', 'admin'), '', 'simpledb', $engines)); 554 $temp->add(new admin_setting_heading('searchoptionsheading', new lang_string('searchoptions', 'admin'), '')); 555 $temp->add(new admin_setting_configcheckbox('searchindexwhendisabled', 556 new lang_string('searchindexwhendisabled', 'admin'), new lang_string('searchindexwhendisabled_desc', 'admin'), 557 0)); 558 $temp->add(new admin_setting_configduration('searchindextime', 559 new lang_string('searchindextime', 'admin'), new lang_string('searchindextime_desc', 'admin'), 560 600)); 561 $temp->add(new admin_setting_heading('searchcoursesheading', new lang_string('searchablecourses', 'admin'), '')); 562 $options = [ 563 0 => new lang_string('searchallavailablecourses_off', 'admin'), 564 1 => new lang_string('searchallavailablecourses_on', 'admin') 565 ]; 566 $temp->add(new admin_setting_configselect('searchallavailablecourses', 567 new lang_string('searchallavailablecourses', 'admin'), 568 new lang_string('searchallavailablecoursesdesc', 'admin'), 569 0, $options)); 570 $temp->add(new admin_setting_configcheckbox('searchincludeallcourses', 571 new lang_string('searchincludeallcourses', 'admin'), new lang_string('searchincludeallcourses_desc', 'admin'), 572 0)); 573 574 // Search display options. 575 $temp->add(new admin_setting_heading('searchdisplay', new lang_string('searchdisplay', 'admin'), '')); 576 $temp->add(new admin_setting_configcheckbox('searchenablecategories', 577 new lang_string('searchenablecategories', 'admin'), 578 new lang_string('searchenablecategories_desc', 'admin'), 579 0)); 580 $options = []; 581 foreach (\core_search\manager::get_search_area_categories() as $category) { 582 $options[$category->get_name()] = $category->get_visiblename(); 583 } 584 $temp->add(new admin_setting_configselect('searchdefaultcategory', 585 new lang_string('searchdefaultcategory', 'admin'), 586 new lang_string('searchdefaultcategory_desc', 'admin'), 587 \core_search\manager::SEARCH_AREA_CATEGORY_ALL, $options)); 588 $temp->add(new admin_setting_configcheckbox('searchhideallcategory', 589 new lang_string('searchhideallcategory', 'admin'), 590 new lang_string('searchhideallcategory_desc', 'admin'), 591 0)); 592 593 $ADMIN->add('searchplugins', $temp); 594 $ADMIN->add('searchplugins', new admin_externalpage('searchareas', new lang_string('searchareas', 'admin'), 595 new moodle_url('/admin/searchareas.php'))); 596 597 core_collator::asort_objects_by_property($pages, 'visiblename'); 598 foreach ($pages as $page) { 599 $ADMIN->add('searchplugins', $page); 600 } 601 } 602 603 /// Add all admin tools 604 if ($hassiteconfig) { 605 $ADMIN->add('modules', new admin_category('tools', new lang_string('tools', 'admin'))); 606 $ADMIN->add('tools', new admin_externalpage('managetools', new lang_string('toolsmanage', 'admin'), 607 $CFG->wwwroot . '/' . $CFG->admin . '/tools.php')); 608 } 609 610 // Now add various admin tools. 611 $plugins = core_plugin_manager::instance()->get_plugins_of_type('tool'); 612 core_collator::asort_objects_by_property($plugins, 'displayname'); 613 foreach ($plugins as $plugin) { 614 /** @var \core\plugininfo\tool $plugin */ 615 $plugin->load_settings($ADMIN, null, $hassiteconfig); 616 } 617 618 // Now add the Cache plugins 619 if ($hassiteconfig) { 620 $ADMIN->add('modules', new admin_category('cache', new lang_string('caching', 'cache'))); 621 $ADMIN->add('cache', new admin_externalpage('cacheconfig', new lang_string('cacheconfig', 'cache'), $CFG->wwwroot .'/cache/admin.php')); 622 $ADMIN->add('cache', new admin_externalpage('cachetestperformance', new lang_string('testperformance', 'cache'), $CFG->wwwroot . '/cache/testperformance.php')); 623 $ADMIN->add('cache', new admin_category('cachestores', new lang_string('cachestores', 'cache'))); 624 $ADMIN->locate('cachestores')->set_sorting(true); 625 foreach (core_component::get_plugin_list('cachestore') as $plugin => $path) { 626 $settingspath = $path.'/settings.php'; 627 if (file_exists($settingspath)) { 628 $settings = new admin_settingpage('cachestore_'.$plugin.'_settings', new lang_string('pluginname', 'cachestore_'.$plugin), 'moodle/site:config'); 629 include($settingspath); 630 $ADMIN->add('cachestores', $settings); 631 } 632 } 633 } 634 635 // Add Calendar type settings. 636 if ($hassiteconfig) { 637 $ADMIN->add('modules', new admin_category('calendartype', new lang_string('calendartypes', 'calendar'))); 638 $plugins = core_plugin_manager::instance()->get_plugins_of_type('calendartype'); 639 core_collator::asort_objects_by_property($plugins, 'displayname'); 640 foreach ($plugins as $plugin) { 641 /** @var \core\plugininfo\calendartype $plugin */ 642 $plugin->load_settings($ADMIN, 'calendartype', $hassiteconfig); 643 } 644 } 645 646 // Content bank content types. 647 if ($hassiteconfig) { 648 $ADMIN->add('modules', new admin_category('contentbanksettings', new lang_string('contentbank'))); 649 $temp = new admin_settingpage('managecontentbanktypes', new lang_string('managecontentbanktypes')); 650 $temp->add(new admin_setting_managecontentbankcontenttypes()); 651 $ADMIN->add('contentbanksettings', $temp); 652 $plugins = core_plugin_manager::instance()->get_plugins_of_type('contenttype'); 653 foreach ($plugins as $plugin) { 654 /** @var \core\plugininfo\contentbank $plugin */ 655 $plugin->load_settings($ADMIN, 'contentbanksettings', $hassiteconfig); 656 } 657 } 658 659 /// Add all local plugins - must be always last! 660 if ($hassiteconfig) { 661 $ADMIN->add('modules', new admin_category('localplugins', new lang_string('localplugins'))); 662 $ADMIN->add('localplugins', new admin_externalpage('managelocalplugins', new lang_string('localpluginsmanage'), 663 $CFG->wwwroot . '/' . $CFG->admin . '/localplugins.php')); 664 } 665 666 // Extend settings for each local plugin. Note that their settings may be in any part of the 667 // settings tree and may be visible not only for administrators. 668 $plugins = core_plugin_manager::instance()->get_plugins_of_type('local'); 669 core_collator::asort_objects_by_property($plugins, 'displayname'); 670 foreach ($plugins as $plugin) { 671 /** @var \core\plugininfo\local $plugin */ 672 $plugin->load_settings($ADMIN, null, $hassiteconfig); 673 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body