Rev 16618 | Blame | Compare with Previous | Last modification | View Log | RSS feed
!default uu=$wims_read_parm
!!! perhaps should be a command in wims.c ?
!!! variables which are necessary : wims_class, checksessions
!!! FIXME max of session number
!!! do reset only if the variable is non empty, if not it creates a variable
!!! and gives some "variable_name_buffer_overflow"
max_exams=!defof MAX_EXAMS in wimshome/public_html/bases/sys/define.conf
!for i in $activexams
!if $(Dureeexam_$i)!=$empty
!reset Dureeexam_$i
!endif
!if $(Dureeexam_$i)!=$empty
!reset Dureeexam_$i
!endif
!for jj=1 to $max_exams
!! jj correspond to maximum of number sessions
!if $(duree$(jj)_$(i))!=$empty
!reset duree$(jj)_$(i)
!endif
!if $(exam_$jj)!=$empty
!reset exam_$jj
!endif
!! jj correspond to exos in an exam
!if $(exam$(i)_$jj)!=$empty
!reset exam$(i)_$jj
!endif
!if $(sess_$jj)!=$empty
!reset sess_$jj
!endif
!next jj
!next i
!! -------- reduce file length with only concerned session before wims action
tmp_=$empty
checksessions=!text select char 0123456789AZERTYUIOPMLKJHGFDSQWXCVBN,azertyuiopmlkjhgfdsqwxcvbn in $checksessions
!for k_ in $checksessions
tmp_=!append word a["$k_"]=0; to $tmp_
!reset ip_$(k_)
!next k_
!sh if [ -e $wims_home/log/classes/$wims_class/score/$uu.exam ]; then awk 'BEGIN{$tmp_} {if ($$6 in a || ($$6=="0" && flag==1)){print $$0; flag=1;} else {flag=0};}' $wims_home/log/classes/$wims_class/score/$uu.exam > $wims_home/sessions/$wims_session/tmpuser.exam; fi;
!! ---------------------
sc=!record 0 of wimshome/sessions/$wims_session/tmpuser.exam
!!sc=!record 0 of wimshome/log/classes/$wims_class/score/$uu.exam
!if $sc=$empty
!exit
!endif
nsc=!linecnt $sc
!reset scorereducedbyip
!for i=1 to $nsc
l=!line $i of $sc
!distribute words $l into e_,s_,t__,T_,i_,S_,t_
!if $S_=0
!reset jj
!else
!set jj=!positionof item $S_ in $checksessions
!if $(ip_$jj)=$i_
scoreip$(jj)_$e_=$s_
!endif
!set score$(jj)_$e_=$s_
!set exam_$jj=!append item $e_ to $(exam_$jj)
!set sess_$e_=!append item $jj to $(sess_$e_)
!set exam_$jj=!listuniq $(exam_$jj)
!if $s_ issametext 00
start$(jj)_$e_=$t_
dur$(jj)_$e_=$T_
ip_$jj=$i_
!endif
!if $t__ issametext -1
duree$(jj)_$(e_)=$[$T_ - $(dur$(jj)_$e_)]
!if $(score$(jj)_$e_)!=$(scoreip$(jj)_$e_)
scorereducedbyip=1
!endif
!endif
!endif
!next i
!for i in $activexams
!if $(Dureeexam_$i)!=$empty
!reset Dureeexam_$i
!endif
!for e=1 to $max_exams
!if $(Exam_$(i)_$(e))!=$empty
!reset Exam_$(i)_$(e)
!endif
!if $(exam$(i)_$e)!=$empty
!reset exam$(i)_$e
!endif
!next e
!for ses_ in $checksessions
!set jj=!positionof item $ses_ in $checksessions
!if $(duree$(jj)_$i)!=$empty
Dureeexam_$i=!append item $(duree$(jj)_$i) to $(Dureeexam_$i)
!endif
!next ses_
!next
!!details des notes examens par session
!for ses_ in $checksessions
!set jj=!positionof item $ses_ in $checksessions
!set ss=!sh grep "$ses_" $wims_home/log/classes/$wims_class/noscore/$uu | grep "score" | awk -F"\t" '{print $$1}' | awk -F" " '{print $$3,$$4,$$6}'
!set ss=!lines2rows $ss
!set ss=!words2items $ss
!!perhaps several different exams in one session.
!for i in $(exam_$(jj))
!set s_=!select $ss where column 1=$i
!set nbx=!recordcnt wimshome/log/classes/$wims_class/exams/.exam$i
!for k_=1 to $nbx
!reset s
!set s=!select $s_ where column 2=$k_
!set s=$(s[3])
!if $s!=$empty
!set s=$[rint($s*$scoremax)/10]
!endif
!set Exam_$(i)_$(jj)=$(Exam_$(i)_$(jj)) $s,
!next
!next
!next