See Release Notes
Long Term Support Release
Differences Between: [Versions 310 and 401] [Versions 311 and 401] [Versions 39 and 401] [Versions 400 and 401] [Versions 401 and 402] [Versions 401 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 require_once(__DIR__ . '/../config.php'); 18 require_once($CFG->dirroot . '/repository/lib.php'); 19 require_once($CFG->libdir . '/adminlib.php'); 20 21 require_sesskey(); 22 23 // id of repository 24 $edit = optional_param('edit', 0, PARAM_INT); 25 $new = optional_param('new', '', PARAM_PLUGIN); 26 $hide = optional_param('hide', 0, PARAM_INT); 27 $delete = optional_param('delete', 0, PARAM_INT); 28 $sure = optional_param('sure', '', PARAM_ALPHA); 29 $type = optional_param('type', '', PARAM_PLUGIN); 30 $downloadcontents = optional_param('downloadcontents', false, PARAM_BOOL); 31 32 $context = context_system::instance(); 33 34 $pagename = 'repositorycontroller'; 35 36 if ($edit){ 37 $pagename = 'repositoryinstanceedit'; 38 } else if ($delete) { 39 $pagename = 'repositorydelete'; 40 } else if ($new) { 41 $pagename = 'repositoryinstancenew'; 42 } 43 44 admin_externalpage_setup($pagename, '', null, new moodle_url('/admin/repositoryinstance.php')); 45 46 $baseurl = new moodle_url("/$CFG->admin/repositoryinstance.php", array('sesskey'=>sesskey())); 47 48 $parenturl = new moodle_url("/$CFG->admin/repository.php", array( 49 'sesskey'=>sesskey(), 50 'action'=>'edit', 51 )); 52 53 if ($new) { 54 $parenturl->param('repos', $new); 55 } else { 56 $parenturl->param('repos', $type); 57 } 58 59 $return = true; 60 61 if (!empty($edit) || !empty($new)) { 62 if (!empty($edit)) { 63 $instance = repository::get_instance($edit); 64 if (!$instance->can_be_edited_by_user()) { 65 throw new repository_exception('nopermissiontoaccess', 'repository'); 66 } 67 $instancetype = repository::get_type_by_id($instance->options['typeid']); 68 $classname = 'repository_' . $instancetype->get_typename(); 69 $configs = $instance->get_instance_option_names(); 70 $plugin = $instancetype->get_typename(); 71 $typeid = $instance->options['typeid']; 72 } else { 73 $plugin = $new; 74 $typeid = null; 75 $instance = null; 76 } 77 78 // display the edit form for this instance 79 $mform = new repository_instance_form('', array('plugin' => $plugin, 'typeid' => $typeid, 'instance' => $instance, 'contextid' => $context->id)); 80 // end setup, begin output 81 82 if ($mform->is_cancelled()){ 83 redirect($parenturl); 84 exit; 85 } else if ($fromform = $mform->get_data()){ 86 if ($edit) { 87 $settings = array(); 88 $settings['name'] = $fromform->name; 89 if (!$instance->readonly) { 90 foreach($configs as $config) { 91 if (isset($fromform->$config)) { 92 $settings[$config] = $fromform->$config; 93 } else { 94 $settings[$config] = null; 95 } 96 } 97 } 98 $success = $instance->set_option($settings); 99 } else { 100 $success = repository::static_function($plugin, 'create', $plugin, 0, $context, $fromform); 101 $data = data_submitted(); 102 } 103 if ($success) { 104 core_plugin_manager::reset_caches(); 105 redirect($parenturl); 106 } else { 107 throw new \moodle_exception('instancenotsaved', 'repository', $parenturl); 108 } 109 exit; 110 } else { 111 echo $OUTPUT->header(); 112 echo $OUTPUT->heading(get_string('configplugin', 'repository_'.$plugin)); 113 echo $OUTPUT->box_start(); 114 $mform->display(); 115 echo $OUTPUT->box_end(); 116 $return = false; 117 } 118 } else if (!empty($hide)) { 119 $instance = repository::get_type_by_typename($hide); 120 $instance->hide(); 121 core_plugin_manager::reset_caches(); 122 $return = true; 123 } else if (!empty($delete)) { 124 $instance = repository::get_instance($delete); 125 if ($instance->readonly) { 126 // If you try to delete an instance set as readonly, display an error message. 127 throw new repository_exception('readonlyinstance', 'repository'); 128 } else if (!$instance->can_be_edited_by_user()) { 129 throw new repository_exception('nopermissiontoaccess', 'repository'); 130 } 131 if ($sure) { 132 if ($instance->delete($downloadcontents)) { 133 $deletedstr = get_string('instancedeleted', 'repository'); 134 core_plugin_manager::reset_caches(); 135 redirect($parenturl, $deletedstr, 3); 136 } else { 137 throw new \moodle_exception('instancenotdeleted', 'repository', $parenturl); 138 } 139 exit; 140 } 141 142 echo $OUTPUT->header(); 143 echo $OUTPUT->box_start('generalbox', 'notice'); 144 $continueurl = new moodle_url($baseurl, array( 145 'type' => $type, 146 'delete' => $delete, 147 'sure' => 'yes', 148 )); 149 $continueanddownloadurl = new moodle_url($continueurl, array( 150 'downloadcontents' => 1 151 )); 152 $message = get_string('confirmdelete', 'repository', $instance->name); 153 echo html_writer::tag('p', $message); 154 155 echo $OUTPUT->single_button($continueurl, get_string('continueuninstall', 'repository')); 156 echo $OUTPUT->single_button($continueanddownloadurl, get_string('continueuninstallanddownload', 'repository')); 157 echo $OUTPUT->single_button($parenturl, get_string('cancel')); 158 159 echo $OUTPUT->box_end(); 160 161 $return = false; 162 } 163 164 if (!empty($return)) { 165 redirect($parenturl); 166 } 167 echo $OUTPUT->footer();
title
Description
Body
title
Description
Body
title
Description
Body
title
Body