Search moodle.org's
Developer Documentation

  • Bug fixes for general core bugs in 3.10.x will end 8 November 2021 (12 months).
  • Bug fixes for security issues in 3.10.x will end 9 May 2022 (18 months).
  • PHP version: minimum PHP 7.2.0 Note: minimum PHP version has increased since Moodle 3.8. PHP 7.3.x and 7.4.x are 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 name="add" id="add" type="submit" value="<?php echo $OUTPUT->larrow().'&nbsp;'.s(get_string('add')); ?>" title="<?php p(get_string('add')); ?>" /><br />
     119            </div>
     120  
     121            <div id="removecontrols">
     122                <input name="remove" id="remove" type="submit" value="<?php echo s(get_string('remove')).'&nbsp;'.$OUTPUT->rarrow(); ?>" title="<?php p(get_string('remove')); ?>" />
     123            </div>
     124        </td>
     125        <td id="potentialcell">
     126            <p><label for="addselect"><?php print_string('potusers', 'cohort'); ?></label></p>
     127            <?php $potentialuserselector->display() ?>
     128        </td>
     129      </tr>
     130      <tr><td colspan="3" id='backcell'>
     131        <input type="submit" name="cancel" value="<?php p(get_string('backtocohorts', 'cohort')); ?>" />
     132      </td></tr>
     133    </table>
     134  </div></form>
     135  
     136  <?php
     137  
     138  echo $OUTPUT->footer();