Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is supported too.
   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   * Self enrolment plugin settings and presets.
  19   *
  20   * @package    enrol_self
  21   * @copyright  2010 Petr Skoda  {@link http://skodak.org}
  22   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  23   */
  24  
  25  defined('MOODLE_INTERNAL') || die();
  26  
  27  if ($ADMIN->fulltree) {
  28  
  29      //--- general settings -----------------------------------------------------------------------------------
  30      $settings->add(new admin_setting_heading('enrol_self_settings', '', get_string('pluginname_desc', 'enrol_self')));
  31  
  32      $settings->add(new admin_setting_configcheckbox('enrol_self/requirepassword',
  33          get_string('requirepassword', 'enrol_self'), get_string('requirepassword_desc', 'enrol_self'), 0));
  34  
  35      $settings->add(new admin_setting_configcheckbox('enrol_self/usepasswordpolicy',
  36          get_string('usepasswordpolicy', 'enrol_self'), get_string('usepasswordpolicy_desc', 'enrol_self'), 0));
  37  
  38      $settings->add(new admin_setting_configcheckbox('enrol_self/showhint',
  39          get_string('showhint', 'enrol_self'), get_string('showhint_desc', 'enrol_self'), 0));
  40  
  41      // Note: let's reuse the ext sync constants and strings here, internally it is very similar,
  42      //       it describes what should happend when users are not supposed to be enerolled any more.
  43      $options = array(
  44          ENROL_EXT_REMOVED_KEEP           => get_string('extremovedkeep', 'enrol'),
  45          ENROL_EXT_REMOVED_SUSPENDNOROLES => get_string('extremovedsuspendnoroles', 'enrol'),
  46          ENROL_EXT_REMOVED_UNENROL        => get_string('extremovedunenrol', 'enrol'),
  47      );
  48      $settings->add(new admin_setting_configselect('enrol_self/expiredaction', get_string('expiredaction', 'enrol_self'), get_string('expiredaction_help', 'enrol_self'), ENROL_EXT_REMOVED_KEEP, $options));
  49  
  50      $options = array();
  51      for ($i=0; $i<24; $i++) {
  52          $options[$i] = $i;
  53      }
  54      $settings->add(new admin_setting_configselect('enrol_self/expirynotifyhour', get_string('expirynotifyhour', 'core_enrol'), '', 6, $options));
  55  
  56      //--- enrol instance defaults ----------------------------------------------------------------------------
  57      $settings->add(new admin_setting_heading('enrol_self_defaults',
  58          get_string('enrolinstancedefaults', 'admin'), get_string('enrolinstancedefaults_desc', 'admin')));
  59  
  60      $settings->add(new admin_setting_configcheckbox('enrol_self/defaultenrol',
  61          get_string('defaultenrol', 'enrol'), get_string('defaultenrol_desc', 'enrol'), 1));
  62  
  63      $options = array(ENROL_INSTANCE_ENABLED  => get_string('yes'),
  64                       ENROL_INSTANCE_DISABLED => get_string('no'));
  65      $settings->add(new admin_setting_configselect('enrol_self/status',
  66          get_string('status', 'enrol_self'), get_string('status_desc', 'enrol_self'), ENROL_INSTANCE_DISABLED, $options));
  67  
  68      $options = array(1  => get_string('yes'), 0 => get_string('no'));
  69      $settings->add(new admin_setting_configselect('enrol_self/newenrols',
  70          get_string('newenrols', 'enrol_self'), get_string('newenrols_desc', 'enrol_self'), 1, $options));
  71  
  72      $options = array(1  => get_string('yes'),
  73                       0 => get_string('no'));
  74      $settings->add(new admin_setting_configselect('enrol_self/groupkey',
  75          get_string('groupkey', 'enrol_self'), get_string('groupkey_desc', 'enrol_self'), 0, $options));
  76  
  77      if (!during_initial_install()) {
  78          $options = get_default_enrol_roles(context_system::instance());
  79          $student = get_archetype_roles('student');
  80          $student = reset($student);
  81          $settings->add(new admin_setting_configselect('enrol_self/roleid',
  82              get_string('defaultrole', 'enrol_self'),
  83              get_string('defaultrole_desc', 'enrol_self'),
  84              $student->id ?? null,
  85              $options));
  86      }
  87  
  88      $settings->add(new admin_setting_configduration('enrol_self/enrolperiod',
  89          get_string('enrolperiod', 'enrol_self'), get_string('enrolperiod_desc', 'enrol_self'), 0));
  90  
  91      $options = array(0 => get_string('no'),
  92                       1 => get_string('expirynotifyenroller', 'enrol_self'),
  93                       2 => get_string('expirynotifyall', 'enrol_self'));
  94      $settings->add(new admin_setting_configselect('enrol_self/expirynotify',
  95          get_string('expirynotify', 'core_enrol'), get_string('expirynotify_help', 'core_enrol'), 0, $options));
  96  
  97      $settings->add(new admin_setting_configduration('enrol_self/expirythreshold',
  98          get_string('expirythreshold', 'core_enrol'), get_string('expirythreshold_help', 'core_enrol'), 86400, 86400));
  99  
 100      $options = array(0 => get_string('never'),
 101                       1800 * 3600 * 24 => get_string('numdays', '', 1800),
 102                       1000 * 3600 * 24 => get_string('numdays', '', 1000),
 103                       365 * 3600 * 24 => get_string('numdays', '', 365),
 104                       180 * 3600 * 24 => get_string('numdays', '', 180),
 105                       150 * 3600 * 24 => get_string('numdays', '', 150),
 106                       120 * 3600 * 24 => get_string('numdays', '', 120),
 107                       90 * 3600 * 24 => get_string('numdays', '', 90),
 108                       60 * 3600 * 24 => get_string('numdays', '', 60),
 109                       30 * 3600 * 24 => get_string('numdays', '', 30),
 110                       21 * 3600 * 24 => get_string('numdays', '', 21),
 111                       14 * 3600 * 24 => get_string('numdays', '', 14),
 112                       7 * 3600 * 24 => get_string('numdays', '', 7));
 113      $settings->add(new admin_setting_configselect('enrol_self/longtimenosee',
 114          get_string('longtimenosee', 'enrol_self'), get_string('longtimenosee_help', 'enrol_self'), 0, $options));
 115  
 116      $settings->add(new admin_setting_configtext('enrol_self/maxenrolled',
 117          get_string('maxenrolled', 'enrol_self'), get_string('maxenrolled_help', 'enrol_self'), 0, PARAM_INT));
 118  
 119      $settings->add(new admin_setting_configselect('enrol_self/sendcoursewelcomemessage',
 120              get_string('sendcoursewelcomemessage', 'enrol_self'),
 121              get_string('sendcoursewelcomemessage_help', 'enrol_self'),
 122              ENROL_SEND_EMAIL_FROM_COURSE_CONTACT,
 123              enrol_send_welcome_email_options()));
 124  }