Rapport de Scorm en pourcentage

Re: Rapport de Scorm en pourcentage

par Antoine Elearn,
Nombre de réponses : 0
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)