Beispiel #1
0
 /**
  * Manually grade a user competency from the plans page.
  *
  * @param mixed $planorid
  * @param int $competencyid
  * @param int $grade
  * @param string $note A note to attach to the evidence
  * @return array of \core_competency\user_competency
  */
 public static function grade_competency_in_plan($planorid, $competencyid, $grade, $note = null)
 {
     global $USER;
     static::require_enabled();
     $plan = $planorid;
     if (!is_object($planorid)) {
         $plan = new plan($planorid);
     }
     $context = $plan->get_context();
     if (!user_competency::can_grade_user($plan->get_userid())) {
         throw new required_capability_exception($context, 'moodle/competency:competencygrade', 'nopermissions', '');
     }
     // Throws exception if competency not in plan.
     $competency = $plan->get_competency($competencyid);
     $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_manualoverrideinplan';
     $result = self::add_evidence($plan->get_userid(), $competency, $context->id, $action, $desckey, 'core_competency', $plan->get_name(), false, null, $grade, $USER->id, $note);
     if ($result) {
         $uc = static::get_user_competency($plan->get_userid(), $competency->get_id());
         $event = \core\event\competency_user_competency_rated_in_plan::create_from_user_competency($uc, $plan->get_id());
         $event->trigger();
     }
     return $result;
 }
 protected function get_other_values(renderer_base $output)
 {
     global $DB;
     $result = new stdClass();
     $result->showrelatedcompetencies = true;
     $competency = $this->related['competency'];
     $exporter = new competency_summary_exporter(null, array('competency' => $competency, 'context' => $competency->get_context(), 'framework' => $competency->get_framework(), 'linkedcourses' => array(), 'relatedcompetencies' => $this->related['relatedcompetencies']));
     $result->competency = $exporter->export($output);
     $result->cangrade = user_competency::can_grade_user($this->related['user']->id);
     if ($this->related['user']) {
         $exporter = new user_summary_exporter($this->related['user']);
         $result->user = $exporter->export($output);
     }
     $related = array('scale' => $competency->get_scale());
     if ($this->related['usercompetency']) {
         $exporter = new user_competency_exporter($this->related['usercompetency'], $related);
         $result->usercompetency = $exporter->export($output);
     }
     if ($this->related['usercompetencyplan']) {
         $exporter = new user_competency_plan_exporter($this->related['usercompetencyplan'], $related);
         $result->usercompetencyplan = $exporter->export($output);
     }
     if ($this->related['usercompetencycourse']) {
         $exporter = new user_competency_course_exporter($this->related['usercompetencycourse'], $related);
         $result->usercompetencycourse = $exporter->export($output);
     }
     $allevidence = array();
     $usercache = array();
     $scale = $competency->get_scale();
     $result->evidence = array();
     if (count($this->related['evidence'])) {
         foreach ($this->related['evidence'] as $evidence) {
             $actionuserid = $evidence->get_actionuserid();
             if (!empty($actionuserid)) {
                 $usercache[$evidence->get_actionuserid()] = true;
             }
         }
         $users = array();
         if (!empty($usercache)) {
             list($sql, $params) = $DB->get_in_or_equal(array_keys($usercache));
             $users = $DB->get_records_select('user', 'id ' . $sql, $params);
         }
         foreach ($users as $user) {
             $usercache[$user->id] = $user;
         }
         foreach ($this->related['evidence'] as $evidence) {
             $actionuserid = $evidence->get_actionuserid();
             $related = array('scale' => $scale, 'usercompetency' => $this->related['usercompetency'] ? $this->related['usercompetency'] : null, 'usercompetencyplan' => $this->related['usercompetencyplan'] ? $this->related['usercompetencyplan'] : null);
             $related['actionuser'] = !empty($actionuserid) ? $usercache[$actionuserid] : null;
             $exporter = new evidence_exporter($evidence, $related);
             $allevidence[] = $exporter->export($output);
         }
         $result->evidence = $allevidence;
     }
     $usercompetency = !empty($this->related['usercompetency']) ? $this->related['usercompetency'] : null;
     if (!empty($usercompetency) && $usercompetency->can_read_comments()) {
         $commentareaexporter = new comment_area_exporter($usercompetency->get_comment_object());
         $result->commentarea = $commentareaexporter->export($output);
     }
     return (array) $result;
 }