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.
/cohort/ -> assign.php (source)
   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   * Cohort related management functions, this file needs to be included manually.
  19   *
  20   * @package    core_cohort
  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  require('../config.php');
  26  require_once($CFG->dirroot.'/cohort/locallib.php');
  27  
  28  $id = required_param('id', PARAM_INT);
  29  $returnurl = optional_param('returnurl', '', PARAM_LOCALURL);
  30  
  31  require_login();
  32  
  33  $cohort = $DB->get_record('cohort', array('id'=>$id), '*', MUST_EXIST);
  34  $context = context::instance_by_id($cohort->contextid, MUST_EXIST);
  35  
  36  require_capability('moodle/cohort:assign', $context);
  37  
  38  $PAGE->set_context($context);
  39  $PAGE->set_url('/cohort/assign.php', array('id'=>$id));
  40  $PAGE->set_pagelayout('admin');
  41  
  42  if ($returnurl) {
  43      $returnurl = new moodle_url($returnurl);
  44  } else {
  45      $returnurl = new moodle_url('/cohort/index.php', array('contextid' => $cohort->contextid));
  46  }
  47  
  48  if (!empty($cohort->component)) {
  49      // We can not manually edit cohorts that were created by external systems, sorry.
  50      redirect($returnurl);
  51  }
  52  
  53  if (optional_param('cancel', false, PARAM_BOOL)) {
  54      redirect($returnurl);
  55  }
  56  
  57  if ($context->contextlevel == CONTEXT_COURSECAT) {
  58      $category = $DB->get_record('course_categories', array('id'=>$context->instanceid), '*', MUST_EXIST);
  59      navigation_node::override_active_url(new moodle_url('/cohort/index.php', array('contextid'=>$cohort->contextid)));
  60  } else {
  61      navigation_node::override_active_url(new moodle_url('/cohort/index.php', array()));
  62  }
  63  $PAGE->navbar->add(get_string('assign', 'cohort'));
  64  
  65  $PAGE->set_title(get_string('assigncohorts', 'cohort'));
  66  $PAGE->set_heading($COURSE->fullname);
  67  
  68  echo $OUTPUT->header();
  69  echo $OUTPUT->heading(get_string('assignto', 'cohort', format_string($cohort->name)));
  70  
  71  echo $OUTPUT->notification(get_string('removeuserwarning', 'core_cohort'));
  72  
  73  // Get the user_selector we will need.
  74  $potentialuserselector = new cohort_candidate_selector('addselect', array('cohortid'=>$cohort->id, 'accesscontext'=>$context));
  75  $existinguserselector = new cohort_existing_selector('removeselect', array('cohortid'=>$cohort->id, 'accesscontext'=>$context));
  76  
  77  // Process incoming user assignments to the cohort
  78  
  79  if (optional_param('add', false, PARAM_BOOL) && confirm_sesskey()) {
  80      $userstoassign = $potentialuserselector->get_selected_users();
  81      if (!empty($userstoassign)) {
  82  
  83          foreach ($userstoassign as $adduser) {
  84              cohort_add_member($cohort->id, $adduser->id);
  85          }
  86  
  87          $potentialuserselector->invalidate_selected_users();
  88          $existinguserselector->invalidate_selected_users();
  89      }
  90  }
  91  
  92  // Process removing user assignments to the cohort
  93  if (optional_param('remove', false, PARAM_BOOL) && confirm_sesskey()) {
  94      $userstoremove = $existinguserselector->get_selected_users();
  95      if (!empty($userstoremove)) {
  96          foreach ($userstoremove as $removeuser) {
  97              cohort_remove_member($cohort->id, $removeuser->id);
  98          }
  99          $potentialuserselector->invalidate_selected_users();
 100          $existinguserselector->invalidate_selected_users();
 101      }
 102  }
 103  
 104  // Print the form.
 105  ?>
 106  <form id="assignform" method="post" action="<?php echo $PAGE->url ?>"><div>
 107    <input type="hidden" name="sesskey" value="<?php echo sesskey() ?>" />
 108    <input type="hidden" name="returnurl" value="<?php echo $returnurl->out_as_local_url() ?>" />
 109  
 110    <table summary="" class="generaltable generalbox boxaligncenter" cellspacing="0">
 111      <tr>
 112        <td id="existingcell">
 113            <p><label for="removeselect"><?php print_string('currentusers', 'cohort'); ?></label></p>
 114            <?php $existinguserselector->display() ?>
 115        </td>
 116        <td id="buttonscell">
 117            <div id="addcontrols">
 118                <input class="btn btn-secondary" name="add" id="add" type="submit" value="<?php echo $OUTPUT->larrow() . '&nbsp;' .
 119                    s(get_string('add')); ?>" title="<?php p(get_string('add')); ?>" /><br />
 120            </div>
 121  
 122            <div id="removecontrols">
 123                <input class="btn btn-secondary" name="remove" id="remove" type="submit"
 124                       value="<?php echo s(get_string('remove')) . '&nbsp;' . $OUTPUT->rarrow(); ?>"
 125                       title="<?php p(get_string('remove')); ?>" />
 126            </div>
 127        </td>
 128        <td id="potentialcell">
 129            <p><label for="addselect"><?php print_string('potusers', 'cohort'); ?></label></p>
 130            <?php $potentialuserselector->display() ?>
 131        </td>
 132      </tr>
 133      <tr><td colspan="3" id='backcell'>
 134        <input class="btn btn-secondary" type="submit" name="cancel" value="<?php p(get_string('backtocohorts', 'cohort')); ?>" />
 135      </td></tr>
 136    </table>
 137  </div></form>
 138  
 139  <?php
 140  
 141  echo $OUTPUT->footer();