/php/admin/settings.php

https://github.com/burningTyger/os_moodle · PHP · 138 lines · 100 code · 33 blank · 5 comment · 22 complexity · 069aa3a4245c90323ad214d6e6e6ddbe MD5 · raw file

  1. <?php
  2. require_once('../config.php');
  3. require_once($CFG->libdir.'/adminlib.php');
  4. $section = required_param('section', PARAM_SAFEDIR);
  5. $return = optional_param('return','', PARAM_ALPHA);
  6. $adminediting = optional_param('adminedit', -1, PARAM_BOOL);
  7. /// no guest autologin
  8. require_login(0, false);
  9. $PAGE->set_context(get_context_instance(CONTEXT_SYSTEM));
  10. $PAGE->set_url('/admin/settings.php', array('section' => $section));
  11. $PAGE->set_pagetype('admin-setting-' . $section);
  12. $PAGE->set_pagelayout('admin');
  13. $PAGE->navigation->clear_cache();
  14. $adminroot = admin_get_root(); // need all settings
  15. $settingspage = $adminroot->locate($section, true);
  16. if (empty($settingspage) or !($settingspage instanceof admin_settingpage)) {
  17. print_error('sectionerror', 'admin', "$CFG->wwwroot/$CFG->admin/");
  18. die;
  19. }
  20. if (!($settingspage->check_access())) {
  21. print_error('accessdenied', 'admin');
  22. die;
  23. }
  24. /// WRITING SUBMITTED DATA (IF ANY) -------------------------------------------------------------------------------
  25. $statusmsg = '';
  26. $errormsg = '';
  27. $focus = '';
  28. if ($data = data_submitted() and confirm_sesskey()) {
  29. if (admin_write_settings($data)) {
  30. $statusmsg = get_string('changessaved');
  31. }
  32. if (empty($adminroot->errors)) {
  33. switch ($return) {
  34. case 'site': redirect("$CFG->wwwroot/");
  35. case 'admin': redirect("$CFG->wwwroot/$CFG->admin/");
  36. }
  37. } else {
  38. $errormsg = get_string('errorwithsettings', 'admin');
  39. $firsterror = reset($adminroot->errors);
  40. $focus = $firsterror->id;
  41. }
  42. $adminroot = admin_get_root(true); //reload tree
  43. $settingspage = $adminroot->locate($section, true);
  44. }
  45. if ($PAGE->user_allowed_editing() && $adminediting != -1) {
  46. $USER->editing = $adminediting;
  47. }
  48. /// print header stuff ------------------------------------------------------------
  49. if (empty($SITE->fullname)) {
  50. $PAGE->set_title($settingspage->visiblename);
  51. $PAGE->set_heading($settingspage->visiblename);
  52. echo $OUTPUT->header();
  53. echo $OUTPUT->box(get_string('configintrosite', 'admin'));
  54. if ($errormsg !== '') {
  55. echo $OUTPUT->notification($errormsg);
  56. } else if ($statusmsg !== '') {
  57. echo $OUTPUT->notification($statusmsg, 'notifysuccess');
  58. }
  59. // ---------------------------------------------------------------------------------------------------------------
  60. echo '<form action="settings.php" method="post" id="adminsettings">';
  61. echo '<div class="settingsform clearfix">';
  62. echo html_writer::input_hidden_params($PAGE->url);
  63. echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
  64. echo '<input type="hidden" name="return" value="'.$return.'" />';
  65. echo $settingspage->output_html();
  66. echo '<div class="form-buttons"><input class="form-submit" type="submit" value="'.get_string('savechanges','admin').'" /></div>';
  67. echo '</div>';
  68. echo '</form>';
  69. } else {
  70. if ($PAGE->user_allowed_editing()) {
  71. $url = clone($PAGE->url);
  72. if ($PAGE->user_is_editing()) {
  73. $caption = get_string('blockseditoff');
  74. $url->param('adminedit', 'off');
  75. } else {
  76. $caption = get_string('blocksediton');
  77. $url->param('adminedit', 'on');
  78. }
  79. $buttons = $OUTPUT->single_button($url, $caption, 'get');
  80. $PAGE->set_button($buttons);
  81. }
  82. $visiblepathtosection = array_reverse($settingspage->visiblepath);
  83. $PAGE->set_title("$SITE->shortname: " . implode(": ",$visiblepathtosection));
  84. $PAGE->set_heading($SITE->fullname);
  85. echo $OUTPUT->header();
  86. if ($errormsg !== '') {
  87. echo $OUTPUT->notification($errormsg);
  88. } else if ($statusmsg !== '') {
  89. echo $OUTPUT->notification($statusmsg, 'notifysuccess');
  90. }
  91. // ---------------------------------------------------------------------------------------------------------------
  92. echo '<form action="settings.php" method="post" id="adminsettings">';
  93. echo '<div class="settingsform clearfix">';
  94. echo html_writer::input_hidden_params($PAGE->url);
  95. echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
  96. echo '<input type="hidden" name="return" value="'.$return.'" />';
  97. echo $OUTPUT->heading($settingspage->visiblename);
  98. echo $settingspage->output_html();
  99. if ($settingspage->show_save()) {
  100. echo '<div class="form-buttons"><input class="form-submit" type="submit" value="'.get_string('savechanges','admin').'" /></div>';
  101. }
  102. echo '</div>';
  103. echo '</form>';
  104. }
  105. echo $OUTPUT->footer();