Search moodle.org's
Developer Documentation


  • Bug fixes for general core bugs in 2.8.x ended 9 November 2015 (12 months).
  • Bug fixes for security issues in 2.8.x ended 9 May 2016 (18 months).
  • minimum PHP 5.4.4 (always use latest PHP 5.4.x or 5.5.x on Windows - http://windows.php.net/download/), PHP 7 is NOT supported
  • Differences Between: [Versions 28 and 32] [Versions 28 and 33] [Versions 28 and 34] [Versions 28 and 35] [Versions 28 and 36] [Versions 28 and 37]

       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(dirname(dirname(__FILE__)) . '/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();
    

    Search This Site: