Rapport de Scorm en pourcentage

Rapport de Scorm en pourcentage

par Antoine Elearn,
Nombre de réponses : 1
Bonjour à tous,

Je suis sur moodle 1.8.2+ et nous travaillons principalement avec des cours au format Scorm d'où ma problématique :

Nous aimerions pouvoir visualiser d'un seul coup d'oeil l'avancement des étudiants sur un Scorm car lorsque l'on visualise les rapports pour un Scorm, nous avons accès à l'ensemble des étudiants qui travaille sur le package et leur note actuelle. Cependant, cette note n'est pas très révélatrice de l'avancement de l'étudiant puisqu'il s'agit du nombre d'unités passées avec succès et à moins d'avoir en tête le nombre total d'unités que comprend le scorm il est difficile de se rendre compte de l'avancement.

Aussi pensez vous qu'il existe un moyen simple de passer ces notes en pourcentage via une modification du code?

Merci d'avance pour vos réponses.

Cordialement
Moyenne des évaluations  -
En réponse à Antoine Elearn

Re: Rapport de Scorm en pourcentage

par Antoine Elearn,
Au cas ou certains d'entre vous ont le même besoin voici une petite modification du fichier moodle>scorm>locallib.php qui tranforme le report des scores pour l'activité Scorm dans le cas ou la méthode d'évaluation est celle par défaut (Learning Objects) :
Modifier la function scorm_grade_user_attempt :

function scorm_grade_user_attempt($scorm, $userid, $attempt=1, $time=false) {
$attemptscore = NULL;
$attemptscore->scoes = 0;
$attemptscore->values = 0;
$attemptscore->max = 0;
$attemptscore->sum = 0;
$attemptscore->lastmodify = 0;
//VARIABLE COMPTEUR DE SCOS ET ASSETS
$nbSco = 0;
//END
if (!$scoes = get_records('scorm_scoes','scorm',$scorm->id)) {
return NULL;
}

$grademethod = $scorm->grademethod % 10;

foreach ($scoes as $sco) {
//COMPTEUR DE SCOS ET ASSET EFFECTIFS
if($sco->launch != '') $nbSco++;
//END
if ($userdata=scorm_get_tracks($sco->id, $userid,$attempt)) {
if (($userdata->status == 'completed') || ($userdata->status == 'passed')) {
$attemptscore->scoes++;
}
if (!empty($userdata->score_raw)) {
$attemptscore->values++;
$attemptscore->sum += $userdata->score_raw;
$attemptscore->max = ($userdata->score_raw > $attemptscore->max)?$userdata->score_raw:$attemptscore->max;
if (isset($userdata->timemodified) && ($userdata->timemodified > $attemptscore->lastmodify)) {
$attemptscore->lastmodify = $userdata->timemodified;
} else {
$attemptscore->lastmodify = 0;
}
}
}
}
switch ($grademethod) {
case GRADEHIGHEST:
$score = $attemptscore->max;
break;
case GRADEAVERAGE:
if ($attemptscore->values > 0) {
$score = $attemptscore->sum/$attemptscore->values;
} else {
$score = 0;
}
break;
case GRADESUM:
$score = $attemptscore->sum;
break;
case GRADESCOES:
$score = $attemptscore->scoes;
//CALCUL DU SCORE EN POURCENTAGE
$score = (intval((($score * 100)/$nbSco)*100))/100;
//END
break;
}

if ($time) {
$result = new stdClass();
$result->score = $score;
$result->time = $attemptscore->lastmodify;
} else {
$result = $score;
}

return $result;
}

Ainsi, le résultat retourné sera déjà en %
il ne reste qu'à modifier le fichier report.php afin d'afficher le signe % derrière le score :

ligne 142 à la fin de la ligne ajouté .'%'; de cette façon :
$row[] = scorm_grade_user_attempt($scorm, $scouser->userid, $a).' %';

Et le tour est joué.

Ce n'est pas ce qu'il y a de plus propre mais cela fonctionne très bien sourire
Moyenne des évaluations Utile (1)