original_string: public function update_user_enrol(stdClass $instance, $userid, $status = NULL, $timestart = NULL, $timeend = NULL) {
          global $DB, $USER, $CFG;
  
          $name = $this->get_name();
  
          if ($instance->enrol !== $name) {
              throw new coding_exception('invalid enrol instance!');
          }
  
          if (!$ue = $DB->get_record('user_enrolments', array('enrolid'=>$instance->id, 'userid'=>$userid))) {
              // weird, user not enrolled
              return;
          }
  
          $modified = false;
          if (isset($status) and $ue->status != $status) {
              $ue->status = $status;
              $modified = true;
          }
          if (isset($timestart) and $ue->timestart != $timestart) {
              $ue->timestart = $timestart;
              $modified = true;
          }
          if (isset($timeend) and $ue->timeend != $timeend) {
              $ue->timeend = $timeend;
              $modified = true;
          }
  
          if (!$modified) {
              // no change
              return;
          }
  
          $ue->modifierid = $USER->id;
          $ue->timemodified = time();
          $DB->update_record('user_enrolments', $ue);
  
          // User enrolments have changed, so mark user as dirty.
          mark_user_dirty($userid);
  
          // Invalidate core_access cache for get_suspended_userids.
          cache_helper::invalidate_by_definition('core', 'suspended_userids', array(), array($instance->courseid));
  
          // Trigger event.
          $event = \core\event\user_enrolment_updated::create(
                  array(
                      'objectid' => $ue->id,
                      'courseid' => $instance->courseid,
                      'context' => context_course::instance($instance->courseid),
                      'relateduserid' => $ue->userid,
                      'other' => array('enrol' => $name)
                      )
                  );
          $event->trigger();
  
          core_course_category::user_enrolment_changed($instance->courseid, $ue->userid,
                  $ue->status, $ue->timestart, $ue->timeend);
      }
code: public function update_user_enrol(stdClass $instance, $userid, $status = NULL, $timestart = NULL, $timeend = NULL) {
          global $DB, $USER, $CFG;
  
          $name = $this->get_name();
  
          if ($instance->enrol !== $name) {
              throw new coding_exception('invalid enrol instance!');
          }
  
          if (!$ue = $DB->get_record('user_enrolments', array('enrolid'=>$instance->id, 'userid'=>$userid))) {
              // weird, user not enrolled
              return;
          }
  
          $modified = false;
          if (isset($status) and $ue->status != $status) {
              $ue->status = $status;
              $modified = true;
          }
          if (isset($timestart) and $ue->timestart != $timestart) {
              $ue->timestart = $timestart;
              $modified = true;
          }
          if (isset($timeend) and $ue->timeend != $timeend) {
              $ue->timeend = $timeend;
              $modified = true;
          }
  
          if (!$modified) {
              // no change
              return;
          }
  
          $ue->modifierid = $USER->id;
          $ue->timemodified = time();
          $DB->update_record('user_enrolments', $ue);
  
          // User enrolments have changed, so mark user as dirty.
          mark_user_dirty($userid);
  
          // Invalidate core_access cache for get_suspended_userids.
          cache_helper::invalidate_by_definition('core', 'suspended_userids', array(), array($instance->courseid));
  
          // Trigger event.
          $event = \core\event\user_enrolment_updated::create(
                  array(
                      'objectid' => $ue->id,
                      'courseid' => $instance->courseid,
                      'context' => context_course::instance($instance->courseid),
                      'relateduserid' => $ue->userid,
                      'other' => array('enrol' => $name)
                      )
                  );
          $event->trigger();
  
          core_course_category::user_enrolment_changed($instance->courseid, $ue->userid,
                  $ue->status, $ue->timestart, $ue->timeend);
      }
code_tokens: public function update_user_enrol ( stdClass $ instance , $ userid , $ status = NULL , $ timestart = NULL , $ timeend = NULL ) { global $ DB , $ USER , $ CFG ; $ name = $ this -> get_name ( ) ; if ( $ instance -> enrol !== $ name ) { throw new coding_exception ( 'invalid enrol instance!' ) ; } if ( ! $ ue = $ DB -> get_record ( 'user_enrolments' , array ( 'enrolid' => $ instance -> id , 'userid' => $ userid ) ) ) { // weird, user not enrolled return ; } $ modified = false ; if ( isset ( $ status ) and $ ue -> status != $ status ) { $ ue -> status = $ status ; $ modified = true ; } if ( isset ( $ timestart ) and $ ue -> timestart != $ timestart ) { $ ue -> timestart = $ timestart ; $ modified = true ; } if ( isset ( $ timeend ) and $ ue -> timeend != $ timeend ) { $ ue -> timeend = $ timeend ; $ modified = true ; } if ( ! $ modified ) { // no change return ; } $ ue -> modifierid = $ USER -> id ; $ ue -> timemodified = time ( ) ; $ DB -> update_record ( 'user_enrolments' , $ ue ) ; // User enrolments have changed, so mark user as dirty. mark_user_dirty ( $ userid ) ; // Invalidate core_access cache for get_suspended_userids. cache_helper :: invalidate_by_definition ( 'core' , 'suspended_userids' , array ( ) , array ( $ instance -> courseid ) ) ; // Trigger event. $ event = \ core \ event \ user_enrolment_updated :: create ( array ( 'objectid' => $ ue -> id , 'courseid' => $ instance -> courseid , 'context' => context_course :: instance ( $ instance -> courseid ) , 'relateduserid' => $ ue -> userid , 'other' => array ( 'enrol' => $ name ) ) ) ; $ event -> trigger ( ) ; core_course_category :: user_enrolment_changed ( $ instance -> courseid , $ ue -> userid , $ ue -> status , $ ue -> timestart , $ ue -> timeend ) ; }
docstring: Store user_enrolments changes and trigger event.
  
  @param stdClass $instance
  @param int $userid
  @param int $status
  @param int $timestart
  @param int $timeend
  @return void
docstring_tokens: Store user_enrolments changes and trigger event .