original_string: public static function enrol_users($enrolments) {
          global $DB, $CFG;
  
          require_once($CFG->libdir . '/enrollib.php');
  
          $params = self::validate_parameters(self::enrol_users_parameters(),
                  array('enrolments' => $enrolments));
  
          $transaction = $DB->start_delegated_transaction(); // Rollback all enrolment if an error occurs
                                                             // (except if the DB doesn't support it).
  
          // Retrieve the manual enrolment plugin.
          $enrol = enrol_get_plugin('manual');
          if (empty($enrol)) {
              throw new moodle_exception('manualpluginnotinstalled', 'enrol_manual');
          }
  
          foreach ($params['enrolments'] as $enrolment) {
              // Ensure the current user is allowed to run this function in the enrolment context.
              $context = context_course::instance($enrolment['courseid'], IGNORE_MISSING);
              self::validate_context($context);
  
              // Check that the user has the permission to manual enrol.
              require_capability('enrol/manual:enrol', $context);
  
              // Throw an exception if user is not able to assign the role.
              $roles = get_assignable_roles($context);
              if (!array_key_exists($enrolment['roleid'], $roles)) {
                  $errorparams = new stdClass();
                  $errorparams->roleid = $enrolment['roleid'];
                  $errorparams->courseid = $enrolment['courseid'];
                  $errorparams->userid = $enrolment['userid'];
                  throw new moodle_exception('wsusercannotassign', 'enrol_manual', '', $errorparams);
              }
  
              // Check manual enrolment plugin instance is enabled/exist.
              $instance = null;
              $enrolinstances = enrol_get_instances($enrolment['courseid'], true);
              foreach ($enrolinstances as $courseenrolinstance) {
                if ($courseenrolinstance->enrol == "manual") {
                    $instance = $courseenrolinstance;
                    break;
                }
              }
              if (empty($instance)) {
                $errorparams = new stdClass();
                $errorparams->courseid = $enrolment['courseid'];
                throw new moodle_exception('wsnoinstance', 'enrol_manual', $errorparams);
              }
  
              // Check that the plugin accept enrolment (it should always the case, it's hard coded in the plugin).
              if (!$enrol->allow_enrol($instance)) {
                  $errorparams = new stdClass();
                  $errorparams->roleid = $enrolment['roleid'];
                  $errorparams->courseid = $enrolment['courseid'];
                  $errorparams->userid = $enrolment['userid'];
                  throw new moodle_exception('wscannotenrol', 'enrol_manual', '', $errorparams);
              }
  
              // Finally proceed the enrolment.
              $enrolment['timestart'] = isset($enrolment['timestart']) ? $enrolment['timestart'] : 0;
              $enrolment['timeend'] = isset($enrolment['timeend']) ? $enrolment['timeend'] : 0;
              $enrolment['status'] = (isset($enrolment['suspend']) && !empty($enrolment['suspend'])) ?
                      ENROL_USER_SUSPENDED : ENROL_USER_ACTIVE;
  
              $enrol->enrol_user($instance, $enrolment['userid'], $enrolment['roleid'],
                      $enrolment['timestart'], $enrolment['timeend'], $enrolment['status']);
  
          }
  
          $transaction->allow_commit();
      }
code: public static function enrol_users($enrolments) {
          global $DB, $CFG;
  
          require_once($CFG->libdir . '/enrollib.php');
  
          $params = self::validate_parameters(self::enrol_users_parameters(),
                  array('enrolments' => $enrolments));
  
          $transaction = $DB->start_delegated_transaction(); // Rollback all enrolment if an error occurs
                                                             // (except if the DB doesn't support it).
  
          // Retrieve the manual enrolment plugin.
          $enrol = enrol_get_plugin('manual');
          if (empty($enrol)) {
              throw new moodle_exception('manualpluginnotinstalled', 'enrol_manual');
          }
  
          foreach ($params['enrolments'] as $enrolment) {
              // Ensure the current user is allowed to run this function in the enrolment context.
              $context = context_course::instance($enrolment['courseid'], IGNORE_MISSING);
              self::validate_context($context);
  
              // Check that the user has the permission to manual enrol.
              require_capability('enrol/manual:enrol', $context);
  
              // Throw an exception if user is not able to assign the role.
              $roles = get_assignable_roles($context);
              if (!array_key_exists($enrolment['roleid'], $roles)) {
                  $errorparams = new stdClass();
                  $errorparams->roleid = $enrolment['roleid'];
                  $errorparams->courseid = $enrolment['courseid'];
                  $errorparams->userid = $enrolment['userid'];
                  throw new moodle_exception('wsusercannotassign', 'enrol_manual', '', $errorparams);
              }
  
              // Check manual enrolment plugin instance is enabled/exist.
              $instance = null;
              $enrolinstances = enrol_get_instances($enrolment['courseid'], true);
              foreach ($enrolinstances as $courseenrolinstance) {
                if ($courseenrolinstance->enrol == "manual") {
                    $instance = $courseenrolinstance;
                    break;
                }
              }
              if (empty($instance)) {
                $errorparams = new stdClass();
                $errorparams->courseid = $enrolment['courseid'];
                throw new moodle_exception('wsnoinstance', 'enrol_manual', $errorparams);
              }
  
              // Check that the plugin accept enrolment (it should always the case, it's hard coded in the plugin).
              if (!$enrol->allow_enrol($instance)) {
                  $errorparams = new stdClass();
                  $errorparams->roleid = $enrolment['roleid'];
                  $errorparams->courseid = $enrolment['courseid'];
                  $errorparams->userid = $enrolment['userid'];
                  throw new moodle_exception('wscannotenrol', 'enrol_manual', '', $errorparams);
              }
  
              // Finally proceed the enrolment.
              $enrolment['timestart'] = isset($enrolment['timestart']) ? $enrolment['timestart'] : 0;
              $enrolment['timeend'] = isset($enrolment['timeend']) ? $enrolment['timeend'] : 0;
              $enrolment['status'] = (isset($enrolment['suspend']) && !empty($enrolment['suspend'])) ?
                      ENROL_USER_SUSPENDED : ENROL_USER_ACTIVE;
  
              $enrol->enrol_user($instance, $enrolment['userid'], $enrolment['roleid'],
                      $enrolment['timestart'], $enrolment['timeend'], $enrolment['status']);
  
          }
  
          $transaction->allow_commit();
      }
code_tokens: public static function enrol_users ( $ enrolments ) { global $ DB , $ CFG ; require_once ( $ CFG -> libdir . '/enrollib.php' ) ; $ params = self :: validate_parameters ( self :: enrol_users_parameters ( ) , array ( 'enrolments' => $ enrolments ) ) ; $ transaction = $ DB -> start_delegated_transaction ( ) ; // Rollback all enrolment if an error occurs // (except if the DB doesn't support it). // Retrieve the manual enrolment plugin. $ enrol = enrol_get_plugin ( 'manual' ) ; if ( empty ( $ enrol ) ) { throw new moodle_exception ( 'manualpluginnotinstalled' , 'enrol_manual' ) ; } foreach ( $ params [ 'enrolments' ] as $ enrolment ) { // Ensure the current user is allowed to run this function in the enrolment context. $ context = context_course :: instance ( $ enrolment [ 'courseid' ] , IGNORE_MISSING ) ; self :: validate_context ( $ context ) ; // Check that the user has the permission to manual enrol. require_capability ( 'enrol/manual:enrol' , $ context ) ; // Throw an exception if user is not able to assign the role. $ roles = get_assignable_roles ( $ context ) ; if ( ! array_key_exists ( $ enrolment [ 'roleid' ] , $ roles ) ) { $ errorparams = new stdClass ( ) ; $ errorparams -> roleid = $ enrolment [ 'roleid' ] ; $ errorparams -> courseid = $ enrolment [ 'courseid' ] ; $ errorparams -> userid = $ enrolment [ 'userid' ] ; throw new moodle_exception ( 'wsusercannotassign' , 'enrol_manual' , '' , $ errorparams ) ; } // Check manual enrolment plugin instance is enabled/exist. $ instance = null ; $ enrolinstances = enrol_get_instances ( $ enrolment [ 'courseid' ] , true ) ; foreach ( $ enrolinstances as $ courseenrolinstance ) { if ( $ courseenrolinstance -> enrol == "manual" ) { $ instance = $ courseenrolinstance ; break ; } } if ( empty ( $ instance ) ) { $ errorparams = new stdClass ( ) ; $ errorparams -> courseid = $ enrolment [ 'courseid' ] ; throw new moodle_exception ( 'wsnoinstance' , 'enrol_manual' , $ errorparams ) ; } // Check that the plugin accept enrolment (it should always the case, it's hard coded in the plugin). if ( ! $ enrol -> allow_enrol ( $ instance ) ) { $ errorparams = new stdClass ( ) ; $ errorparams -> roleid = $ enrolment [ 'roleid' ] ; $ errorparams -> courseid = $ enrolment [ 'courseid' ] ; $ errorparams -> userid = $ enrolment [ 'userid' ] ; throw new moodle_exception ( 'wscannotenrol' , 'enrol_manual' , '' , $ errorparams ) ; } // Finally proceed the enrolment. $ enrolment [ 'timestart' ] = isset ( $ enrolment [ 'timestart' ] ) ? $ enrolment [ 'timestart' ] : 0 ; $ enrolment [ 'timeend' ] = isset ( $ enrolment [ 'timeend' ] ) ? $ enrolment [ 'timeend' ] : 0 ; $ enrolment [ 'status' ] = ( isset ( $ enrolment [ 'suspend' ] ) && ! empty ( $ enrolment [ 'suspend' ] ) ) ? ENROL_USER_SUSPENDED : ENROL_USER_ACTIVE ; $ enrol -> enrol_user ( $ instance , $ enrolment [ 'userid' ] , $ enrolment [ 'roleid' ] , $ enrolment [ 'timestart' ] , $ enrolment [ 'timeend' ] , $ enrolment [ 'status' ] ) ; } $ transaction -> allow_commit ( ) ; }
docstring: Enrolment of users.
  
  Function throw an exception at the first error encountered.
  @param array $enrolments  An array of user enrolment
  @since Moodle 2.2
docstring_tokens: Enrolment of users .