Rev 10132 | Blame | Compare with Previous | Last modification | View Log | RSS feed
# GetExamScores
# Donne les notes de l'ensemble des utilisateurs pour l'examen $qexam
#Pour commencer, on verifie la classe
!read scripts/check.class
!if $error!=$empty
!exit
!endif
#puis l'examen
type=exams
!read scripts/check.proc
!if $error!=$empty
!exit
!endif
exam_properties=!lines2items $qproperties\
exam_status=!item 1 of $exam_properties
#Status : 0-inactif 1-actif 2-perime 3-perime+cache
!if $exam_status<1 or $exam_status>3
error=Exam #$qexam must be active
!exit
!endif
nbexams=!recordcnt wimshome/log/classes/$qclass/exams/.exams
active_index=0
nb_active=0
!for i=1 to $nbexams
!reset exam_properties,status
exam_properties=!record $i of wimshome/log/classes/$qclass/exams/.exams
status=!line 1 of $exam_properties
!if $status>=1 and $status <=2
!advance nb_active
!endif
!if $qexam=$i
active_index=$nb_active
!endif
!next i
class_superclass=!defof class_superclass in $classdeffile
#un utilisateur se trouve toujours dans la superclasse si elle existe
!if $class_superclass != $empty
users_dir = wimshome/log/classes/$class_superclass/.users
!else
users_dir = wimshome/log/classes/$qclass/.users
!endif
!read adm/class/mkuserlist $qclass
!read adm/class/stat
usercnt=!recordcnt wimshome/log/classes/$qclass/.userlist
!if $usercnt=0
error=There's no user in this class
!exit
!endif
real_usercnt=0
max_score=0
mean_score=0
!for u=1 to $usercnt
l=!record $u of wimshome/log/classes/$qclass/.userlist
quser=!item 3 of $l
lastname=!item 1 of $l
firstname=!item 2 of $l
!defread $users_dir/$quser
examscore=!examscore user=$quser class=$qclass
##format du "examscore" :
#line 1 : exam1_scoremax exam2_scoremax ...
#line 2 : attempts_max, attempts, 1 ??? (exam 1)
#line n : attempts_max, attempts, 1 ??? (exam n-1)
exam_score=!line 1 of $examscore
exam_score=!word $qexam of $exam_score
!if $exam_score>$max_score
max_score=$exam_score
!endif
exam_attempts=!line $[$qexam+1] of $examscore
exam_attempts=!word 2 of $exam_attempts
!if $exam_attempts > 0
!advance real_usercnt
mean_score = $[$mean_score + $exam_score]
new_line = "id":"$quser", "first_name":"$firstname", "last_name":"$lastname", "score":$exam_score , "attempts" : $exam_attempts
data_scores = !append line $new_line to $data_scores
!endif
!next u
!if $mean_score>0
mean_score = $[$mean_score / $real_usercnt]
!endif
scoremax=!record 0 of wimshome/log/classes/$qclass/sheets/.severity
scoremax=!word 1 of $scoremax
!default scoremax = 10
weights = !getscoreweight class=$qclass user=$quser