original_string: public static function grade_competency($userid, $competencyid, $grade, $note = null) {
          global $USER;
          static::require_enabled();
  
          $uc = static::get_user_competency($userid, $competencyid);
          $context = $uc->get_context();
          if (!user_competency::can_grade_user($uc->get('userid'))) {
              throw new required_capability_exception($context, 'moodle/competency:competencygrade', 'nopermissions', '');
          }
  
          // Throws exception if competency not in plan.
          $competency = $uc->get_competency();
          $competencycontext = $competency->get_context();
          if (!has_any_capability(array('moodle/competency:competencyview', 'moodle/competency:competencymanage'),
                  $competencycontext)) {
              throw new required_capability_exception($competencycontext, 'moodle/competency:competencyview', 'nopermissions', '');
          }
  
          $action = evidence::ACTION_OVERRIDE;
          $desckey = 'evidence_manualoverride';
  
          $result = self::add_evidence($uc->get('userid'),
                                    $competency,
                                    $context->id,
                                    $action,
                                    $desckey,
                                    'core_competency',
                                    null,
                                    false,
                                    null,
                                    $grade,
                                    $USER->id,
                                    $note);
          if ($result) {
              $uc->read();
              $event = \core\event\competency_user_competency_rated::create_from_user_competency($uc);
              $event->trigger();
          }
          return $result;
      }
code: public static function grade_competency($userid, $competencyid, $grade, $note = null) {
          global $USER;
          static::require_enabled();
  
          $uc = static::get_user_competency($userid, $competencyid);
          $context = $uc->get_context();
          if (!user_competency::can_grade_user($uc->get('userid'))) {
              throw new required_capability_exception($context, 'moodle/competency:competencygrade', 'nopermissions', '');
          }
  
          // Throws exception if competency not in plan.
          $competency = $uc->get_competency();
          $competencycontext = $competency->get_context();
          if (!has_any_capability(array('moodle/competency:competencyview', 'moodle/competency:competencymanage'),
                  $competencycontext)) {
              throw new required_capability_exception($competencycontext, 'moodle/competency:competencyview', 'nopermissions', '');
          }
  
          $action = evidence::ACTION_OVERRIDE;
          $desckey = 'evidence_manualoverride';
  
          $result = self::add_evidence($uc->get('userid'),
                                    $competency,
                                    $context->id,
                                    $action,
                                    $desckey,
                                    'core_competency',
                                    null,
                                    false,
                                    null,
                                    $grade,
                                    $USER->id,
                                    $note);
          if ($result) {
              $uc->read();
              $event = \core\event\competency_user_competency_rated::create_from_user_competency($uc);
              $event->trigger();
          }
          return $result;
      }
code_tokens: public static function grade_competency ( $ userid , $ competencyid , $ grade , $ note = null ) { global $ USER ; static :: require_enabled ( ) ; $ uc = static :: get_user_competency ( $ userid , $ competencyid ) ; $ context = $ uc -> get_context ( ) ; if ( ! user_competency :: can_grade_user ( $ uc -> get ( 'userid' ) ) ) { throw new required_capability_exception ( $ context , 'moodle/competency:competencygrade' , 'nopermissions' , '' ) ; } // Throws exception if competency not in plan. $ competency = $ uc -> get_competency ( ) ; $ competencycontext = $ competency -> get_context ( ) ; if ( ! has_any_capability ( array ( 'moodle/competency:competencyview' , 'moodle/competency:competencymanage' ) , $ competencycontext ) ) { throw new required_capability_exception ( $ competencycontext , 'moodle/competency:competencyview' , 'nopermissions' , '' ) ; } $ action = evidence :: ACTION_OVERRIDE ; $ desckey = 'evidence_manualoverride' ; $ result = self :: add_evidence ( $ uc -> get ( 'userid' ) , $ competency , $ context -> id , $ action , $ desckey , 'core_competency' , null , false , null , $ grade , $ USER -> id , $ note ) ; if ( $ result ) { $ uc -> read ( ) ; $ event = \ core \ event \ competency_user_competency_rated :: create_from_user_competency ( $ uc ) ; $ event -> trigger ( ) ; } return $ result ; }
docstring: Manually grade a user competency.
  
  @param int $userid
  @param int $competencyid
  @param int $grade
  @param string $note A note to attach to the evidence
  @return array of \core_competency\user_competency
docstring_tokens: Manually grade a user competency .