Subversion Repositories wimsdev

Rev

Rev 17070 | Rev 17098 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
17070 guerimand 1
!! -------- check user
2
user=$wims_user
3
test=!fileexists wimshome/log/classes/$wims_class/swork
4
!sh mkdir -p $wims_home/log/classes/$wims_class/swork
5
clsfile=wimshome/log/classes/$wims_class/swork/averagescore
6
Clsfile=$wims_home/log/classes/$wims_class/swork/averagescore
7
ufile=wimshome/log/classes/$wims_class/swork/averagescore.$user
8
Ufile=$wims_home/log/classes/$wims_class/swork/averagescore.$user
9
time1=!record 0 of $ufile
17097 guerimand 10
time1=!line 1 of $time1
17070 guerimand 11
!distribute word $time1 into time1,majdate,bl
12
!default time1=0
17097 guerimand 13
!if $[$wims_nowseconds-$time1]<3600*$swork_refreshtiming or ($swork_allowrefresh=1 and $refresh!=1)
17070 guerimand 14
  !exit
15
!endif
16
time2=!record 0 of $clsfile
17
time2=!word 1 of $time2
18
!default time2=0
19
!if $[$wims_nowseconds-$time2]<3600
20
  userlist=$user
21
!else
22
  !reset userlist
23
  !for k=1 to $nbuser
24
    d=!record $k of wimshome/log/classes/$wims_class/.userlist
25
    userlist=!append item $(d[3]) to $userlist
26
  !next k
27
  !writefile $clsfile $wims_nowseconds $wims_now
28
  time2=yes
29
!endif
30
!writefile $ufile $wims_nowseconds $wims_now 100000
31
majdate=$wims_now
32
nbsheet=!recordcnt wimshome/log/classes/$wims_class/sheets/.sheets
33
nbuser=!recordcnt wimshome/log/classes/$wims_class/.userlist
34
!for sh=1 to $nbsheet
17097 guerimand 35
  dtsh=!record $sh of wimshome/log/classes/$wims_class/sheets/.sheets
17070 guerimand 36
  stat=!line 1 of $dtsh
37
  !if $stat!=0
38
    nbexo=!recordcnt wimshome/log/classes/$wims_class/sheets/.sheet$sh
39
    average=!values 0 for v=1 to $nbexo
40
    max=$average
17097 guerimand 41
    lsev=!line $[$sh+1] of $severity
17070 guerimand 42
    !distribute word $lsev into swei,rule,indic
17097 guerimand 43
    formula=!item $rule of $formulas
17070 guerimand 44
    wei=!getscoreweight user=$user sheet=$sh
45
    wei=!words2items $wei
46
    totwei=!replace internal , by + in $wei
47
    totwei=$[$totwei]
48
    !reset useraverage
49
    !for dtu in $userlist
17097 guerimand 50
      lq=!getscoremean user=$dtu sheet=$sh
17070 guerimand 51
      !if $indic=0
52
        li=!getscore user=$dtu sheet=$sh
53
      !else
54
        !if $indic=1
17097 guerimand 55
          li=!getscorebest user=$dtu sheet=$sh
17070 guerimand 56
        !else
57
          li=!getscorelevel user=$dtu sheet=$sh
58
        !endif
59
      !endif
60
      !!calcul du score pour chaque exo
61
      !reset lave lmax
62
      !for k=1 to $nbexo
63
        ewei=!word $k of $wei
64
        elq=!word $k of $lq
65
        eli=!word $k of $li
17097 guerimand 66
        ave=!replace internal I by $[$eli/10] in $formula
67
        ave=!replace internal Q by $[$elq/10] in $ave
68
        ave=$[rint($ave*1000)]
17070 guerimand 69
        !if $dtu=$user
70
          useraverage=!append item $ave to $useraverage
71
        !endif
72
        lmax=!append item $[max($ave,$(max[$k]))] to $lmax
73
        ave=$[$(ave)+$(average[$k])]
74
        lave=!append item $ave to $lave
75
      !next k
76
      average=$lave
77
      max=$lmax
78
    !next dtu
79
    !reset tmp tmp2
80
    !if $time2!=yes
81
      tmp=!record $sh of $clsfile
82
    !endif
83
    !for k=1 to $nbexo
84
      !if $time2=yes
17097 guerimand 85
        ave=$[rint($(average[$k])/$nbuser)]
86
        m=$[rint($(max[$k]))]
17070 guerimand 87
        tmp=!append line $sh $k $ave $m to $tmp
88
      !else
89
        ave=!line $k of $tmp
90
        m=!word 4 of $ave
91
        ave=!word 3 of $ave
92
      !endif
93
      !if $(wei[$k])!=0 and $swei!=0
17097 guerimand 94
        val=$[rint($ave - $(useraverage[$k]))]
95
        val=$[rint($val * $swei * $(wei[$k])/$totwei )]   
96
        !if $val<=0
17070 guerimand 97
          val=-1000
98
        !endif
99
      !else
100
        !if $swei!=0
101
          val=$[-10000*$swei]
102
        !else
103
          val=-10000
104
        !endif
105
      !endif
17097 guerimand 106
      m2=$[rint($m-$(useraverage[$k]))]
107
      !appendfile $ufile :$sh $k $val $m2 $ave $m
17070 guerimand 108
    !next k
109
    !if $time2=yes
110
      !appendfile $clsfile :$tmp
111
    !endif
112
  !else
113
    !if $time2=yes
114
      !appendfile $clsfile : 
115
    !endif
116
  !endif
117
!next sh
118
 
119
!sh sort -n -r -k 3 -k 4 $Ufile > $wims_home/sessions/$wimss_session/tmp.swork;\
120
    mv -f $wims_home/sessions/$wimss_session/tmp.swork $Ufile
121