[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
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 require_capability('moodle/site:config', $context); 46 47 $baseurl = new moodle_url("/$CFG->admin/repositoryinstance.php", array('sesskey'=>sesskey())); 48 49 $parenturl = new moodle_url("/$CFG->admin/repository.php", array( 50 'sesskey'=>sesskey(), 51 'action'=>'edit', 52 )); 53 54 if ($new) { 55 $parenturl->param('repos', $new); 56 } else { 57 $parenturl->param('repos', $type); 58 } 59 60 $return = true; 61 62 if (!empty($edit) || !empty($new)) { 63 if (!empty($edit)) { 64 $instance = repository::get_instance($edit); 65 if (!$instance->can_be_edited_by_user()) { 66 throw new repository_exception('nopermissiontoaccess', 'repository'); 67 } 68 $instancetype = repository::get_type_by_id($instance->options['typeid']); 69 $classname = 'repository_' . $instancetype->get_typename(); 70 $configs = $instance->get_instance_option_names(); 71 $plugin = $instancetype->get_typename(); 72 $typeid = $instance->options['typeid']; 73 } else { 74 $plugin = $new; 75 $typeid = null; 76 $instance = null; 77 } 78 79 // display the edit form for this instance 80 $mform = new repository_instance_form('', array('plugin' => $plugin, 'typeid' => $typeid, 'instance' => $instance, 'contextid' => $context->id)); 81 // end setup, begin output 82 83 if ($mform->is_cancelled()){ 84 redirect($parenturl); 85 exit; 86 } else if ($fromform = $mform->get_data()){ 87 if ($edit) { 88 $settings = array(); 89 $settings['name'] = $fromform->name; 90 if (!$instance->readonly) { 91 foreach($configs as $config) { 92 if (isset($fromform->$config)) { 93 $settings[$config] = $fromform->$config; 94 } else { 95 $settings[$config] = null; 96 } 97 } 98 } 99 $success = $instance->set_option($settings); 100 } else { 101 $success = repository::static_function($plugin, 'create', $plugin, 0, $context, $fromform); 102 $data = data_submitted(); 103 } 104 if ($success) { 105 core_plugin_manager::reset_caches(); 106 redirect($parenturl); 107 } else { 108 print_error('instancenotsaved', 'repository', $parenturl); 109 } 110 exit; 111 } else { 112 echo $OUTPUT->header(); 113 echo $OUTPUT->heading(get_string('configplugin', 'repository_'.$plugin)); 114 echo $OUTPUT->box_start(); 115 $mform->display(); 116 echo $OUTPUT->box_end(); 117 $return = false; 118 } 119 } else if (!empty($hide)) { 120 $instance = repository::get_type_by_typename($hide); 121 $instance->hide(); 122 core_plugin_manager::reset_caches(); 123 $return = true; 124 } else if (!empty($delete)) { 125 $instance = repository::get_instance($delete); 126 if ($instance->readonly) { 127 // If you try to delete an instance set as readonly, display an error message. 128 throw new repository_exception('readonlyinstance', 'repository'); 129 } else if (!$instance->can_be_edited_by_user()) { 130 throw new repository_exception('nopermissiontoaccess', 'repository'); 131 } 132 if ($sure) { 133 if ($instance->delete($downloadcontents)) { 134 $deletedstr = get_string('instancedeleted', 'repository'); 135 core_plugin_manager::reset_caches(); 136 redirect($parenturl, $deletedstr, 3); 137 } else { 138 print_error('instancenotdeleted', 'repository', $parenturl); 139 } 140 exit; 141 } 142 143 echo $OUTPUT->header(); 144 echo $OUTPUT->box_start('generalbox', 'notice'); 145 $continueurl = new moodle_url($baseurl, array( 146 'type' => $type, 147 'delete' => $delete, 148 'sure' => 'yes', 149 )); 150 $continueanddownloadurl = new moodle_url($continueurl, array( 151 'downloadcontents' => 1 152 )); 153 $message = get_string('confirmdelete', 'repository', $instance->name); 154 echo html_writer::tag('p', $message); 155 156 echo $OUTPUT->single_button($continueurl, get_string('continueuninstall', 'repository')); 157 echo $OUTPUT->single_button($continueanddownloadurl, get_string('continueuninstallanddownload', 'repository')); 158 echo $OUTPUT->single_button($parenturl, get_string('cancel')); 159 160 echo $OUTPUT->box_end(); 161 162 $return = false; 163 } 164 165 if (!empty($return)) { 166 redirect($parenturl); 167 } 168 echo $OUTPUT->footer();
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Aug 11 10:00:09 2016 | Cross-referenced by PHPXref 0.7.1 |