From 36a2629944703adb12756f8d80b636533f1856f9 Mon Sep 17 00:00:00 2001
From: Myriam Delaruelle
 <Myriam Delaruelle@bdn-un-mdelarue.ad.univ-lorraine.fr>
Date: Mon, 28 Feb 2022 15:10:24 +0100
Subject: [PATCH] =?UTF-8?q?Correction=20du=20bug=20competency=20de=20moodl?=
 =?UTF-8?q?e=20:=20le=20export=5Ftemplate=20sur=20list=5Fevidences=20lance?=
 =?UTF-8?q?=20une=20erreur=20si=20l'activit=C3=A9=20a=20=C3=A9t=C3=A9=20su?=
 =?UTF-8?q?pprim=C3=A9e?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 course_competency.php                       | 56 +++++++++++++++------
 entity/block_competency_iena_competency.php |  2 +-
 2 files changed, 43 insertions(+), 15 deletions(-)

diff --git a/course_competency.php b/course_competency.php
index 06ab1aa..5483df0 100644
--- a/course_competency.php
+++ b/course_competency.php
@@ -196,18 +196,43 @@ if ( $is_teacher ) {
 $tool_lp_renderer = $PAGE->get_renderer('tool_lp');
 
 $user_competency = \core_competency\api::get_user_competency($studentid, $competencyid);
-$user_cpt_all_data = new \tool_lp\output\user_competency_summary($user_competency);
-$user_cpt_all_data = $user_cpt_all_data->export_for_template($tool_lp_renderer);
-$all_evidences = $user_cpt_all_data->evidence;
 
+//Evidences : on met la requête en sale ici pour le moment...
+if ($user_competency) {
+	$params=array('usercompid'=> $user_competency->get('id'));
+	$sql = 'SELECT e.*, u.firstname, u.lastname, u.firstnamephonetic, u.lastnamephonetic, u.middlename, u.alternatename
+	FROM {competency_evidence} e
+	JOIN {context} c ON c.id = e.contextid
+	JOIN {user} u ON u.id=e.actionuserid
+	WHERE e.usercompetencyid = :usercompid
+	';
+	$all_evidences = $DB->get_records_sql($sql, $params);
+}
+
+//Pour récupérer l'user : user_summary_exporter::read_properties_definition()
+
+/*$user_cpt_all_data = new \tool_lp\output\user_competency_summary($user_competency);
+$user_cpt_all_data = $user_cpt_all_data->export_for_template($tool_lp_renderer);
+$all_evidences = $user_cpt_all_data->evidence;*/
+foreach($all_evidences as $evidence){
+	$userObj = $DB->get_record("user", array('id' => $evidence->actionuserid));
+	$evidence->actionuser=array();
+	$evidence->actionuser['fullname'] = fullname($userObj);
+    $evidence->actionuser['profileurl'] = new moodle_url('/user/profile.php', array('id' => $evidence->actionuserid));
+	$evidence->desca=json_decode($evidence->desca);
+	$evidence->description=new lang_string($evidence->descidentifier, $evidence->desccomponent, $evidence->desca);
+}
+//$all_evidences=$tool_lp_renderer->render_user_competency_summary($user_cpt_all_data);
 
 if ( count($all_evidences) != 0 ) {
 
 	$user_cpt_course_data = new \tool_lp\output\user_competency_summary_in_course($studentid, $competencyid, $courseid);
 	$user_cpt_course_data = $user_cpt_course_data->export_for_template($tool_lp_renderer);
+
 	$course_evidences = $user_cpt_course_data->usercompetencysummary->evidence;
 	$course_evidences_ids = array();
-	foreach ($course_evidences as $course_evidence) {
+	foreach ($course_evidences  as $course_evidence) {
+		
 		$course_evidences_ids[] = $course_evidence->id;
 	}
 
@@ -242,14 +267,14 @@ if ( count($all_evidences) != 0 ) {
 			$ev->grade_make_proficient = ' list-group-item-light';
 		} else { 
 			/* proficient or not depending of rating in scale (set in framework by creator) */
-			$scale_rules = json_decode($user_cpt_all_data->competency->scaleconfiguration);
-			foreach ($scale_rules as $scale_rule) {
-				if ( isset($scale_rule->proficient) && $scale_rule->id == $ev->grade && $scale_rule->proficient == 1 ) {
-					$ev->grade_make_proficient = ' list-group-item-success';
-					break;
-				} else {
-					$ev->grade_make_proficient = '';
-				}
+			$scale_rules = $cpt->get_scale();
+			$ev->gradename=$scale_rules->scale_items[$ev->grade];
+			
+			if($cpt->get_proficiency_of_grade($ev->grade)==1){
+				$ev->grade_make_proficient = ' list-group-item-success';
+			}
+			else{
+				$ev->grade_make_proficient = '';
 			}
 		}
 		$ev->date = date("d/m/y – H:i", $ev->timemodified);
@@ -327,7 +352,7 @@ $data['review_msg']=$review_msg;
 $data['is_me']=$is_me;
 $data['link_review']=$CFG->wwwroot."/blocks/competency_iena/course_competency.php?courseid=".$courseid."&studentid=".$studentid."&competencyid=".$competencyid;
 $data['scale']=$scale;
-$data['all_evidences']=$all_evidences;
+$data['all_evidences']=array_values($all_evidences);
 $data['count_all_evidences']=count($all_evidences);
 if(isset($chart)){
 	$data['chart']=$OUTPUT->render($chart);
@@ -335,7 +360,10 @@ if(isset($chart)){
 
 
 $data['count_cm_ids']=count($cm_ids);
-$data['cm_ids']=$modules;
+if($modules){
+	$data['cm_ids']=$modules;
+}
+
 $data['proficiency']=$proficiency;
 $data['proficiency_class']=$proficiency_class;
 $data['eval']=$eval;
diff --git a/entity/block_competency_iena_competency.php b/entity/block_competency_iena_competency.php
index a3dbb77..9a978c2 100644
--- a/entity/block_competency_iena_competency.php
+++ b/entity/block_competency_iena_competency.php
@@ -83,7 +83,7 @@ list_evidence_in_course
 	{
 		global $DB;
 		try {
-			$competency = $DB->get_record_sql('select c.id, c.shortname, c.description, cu.proficiency, cu.grade
+			$competency = $DB->get_record_sql('select c.id, c.shortname, c.description, cu.proficiency, cu.grade, cu.scaleconfiguration
 				FROM {competency} as c
 				inner join {competency_usercompcourse} as cu on cu.competencyid = c.id
 				WHERE c.id = ? AND cu.userid = ?', array($id_competency, $id_student));
-- 
GitLab