Subversion Repositories wimsdev

Rev

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

Rev Author Line No. Line
4626 obado 1
#MKUSERLIST
2
# Constructs .userlist file in specified class (wims_class by default)
4996 czzmrn 3
#    also constructs .userlist_external if needed
4626 obado 4
 
20 reyssat 5
uclass=$wims_read_parm
6
!default uclass=$wims_class
4626 obado 7
 
20 reyssat 8
!if user notwordof $wims_prefix
9
 wims_prefix=$wims_prefix user
10
!endif
4626 obado 11
 
20 reyssat 12
:mkstart
13
supclass=!defof class_superclass in wimshome/log/classes/$uclass/.def
14
reset class_lvl
4626 obado 15
 
20 reyssat 16
!if $supclass!=$empty and $supclass!=$uclass
17
 supertype=!defof class_type in wimshome/log/classes/$supclass/.def
18
 typename=!defof class_typename in wimshome/log/classes/$uclass/.def
19
 !if $typename iswordof level program
20
  !exit
21
 !endif
8030 bpr 22
 
20 reyssat 23
 !if $typename issametext course
24
  class_parent=!defof class_parent in wimshome/log/classes/$uclass/.def
25
  !if $class_parent!=$empty
26
   i=!defof class_ocourses in wimshome/log/classes/$class_parent/.def
27
   i=!makelist $wims_superclass/x for x in $i
28
   !if $uclass isitemof $i
29
    uclass=$class_parent
30
    !goto mkstart
31
   !endif
32
  !endif
33
  clist=$uclass
8030 bpr 34
 
20 reyssat 35
 !else
36
  !if / isin $uclass
37
   class_lvl=!translate internal / to , in $uclass
38
   class_lvl=$(class_lvl[1])/$(class_lvl[2])
39
   !if $class_lvl=$uclass
40
    class_lvl=
41
    clist=$supclass,$uclass
42
   !else
43
    clist=$supclass,$class_lvl,$uclass
44
   !endif
45
  !else
46
   clist=!listuniq $supclass,$uclass
47
  !endif
48
 !endif
49
!else
50
 typename=class
51
 clist=$uclass
52
 supclass=$uclass
53
!endif
54
 
55
mul_userdir=wimshome/log/classes/$supclass/.users
56
mul_userdir2=$wims_home/log/classes/$supclass/.users
4626 obado 57
 
58
 
59
## On range la liste des utilisateurs par paquets de 1000 (userlist_0, userlist_1, etc...)
20 reyssat 60
start=0
61
userlist_$start=!sh cd $mul_userdir2; ls 2>/dev/null | head -1000
62
userlist_$start=!words2items $(userlist_$start)
4626 obado 63
 
20 reyssat 64
userlist_lastcnt=!itemcnt $(userlist_$start)
4626 obado 65
 
20 reyssat 66
!while $userlist_lastcnt>999
67
 !advance start
172 schaersvoo 68
 userlist_$start=!sh cd $mul_userdir2; ls 2>/dev/null | tail -n +$(start)001 | head -1000
20 reyssat 69
 userlist_$start=!words2items $(userlist_$start)
70
 userlist_lastcnt=!itemcnt $(userlist_$start)
71
!endwhile
72
 
4996 czzmrn 73
# On supprime une eventuelle liste temporaire "userlist*.raw" dans chaque classe
20 reyssat 74
!for c in $clist
75
 !sh rm -f $wims_home/log/classes/$c/.userlist.raw 2>/dev/null
4996 czzmrn 76
 !sh rm -f $wims_home/log/classes/$c/.userlist_external.raw 2>/dev/null
1605 bpr 77
!next
4626 obado 78
 
79
# On parcourt nos paquets de 1000 users
20 reyssat 80
!for N=0 to $start
81
 !for u in $(userlist_$N)
82
  !reset user_firstname, user_lastname, user_supervisable,\
4996 czzmrn 83
	user_class, user_participate, user_exists, user_external_auth
20 reyssat 84
  !readdef $mul_userdir/$u
5295 bpr 85
 
86
!!TODO  better to make a special list for user_supervisable who participates
87
!!( suppress to add supervisor who are registered as participant to appear in userlist)
88
 
89
  !if $user_exists=yes and $user_supervisable!=yes
20 reyssat 90
   userline=:$user_lastname,$user_firstname,$u
4996 czzmrn 91
 
92
   !reset userline_external
93
   !if $user_external_auth!=$empty
94
     userline_external=$user_external_auth:$u
95
   !endif
8030 bpr 96
 
20 reyssat 97
   !if $typename=course
98
    !readdef wimshome/log/classes/$uclass/.users/$u
99
    !if $user_class!=$empty
100
     !appendfile wimshome/log/classes/$uclass/.userlist.raw $userline,$user_class
4996 czzmrn 101
     !if $userline_external!=$empty
102
       !appendfile wimshome/log/classes/$uclass/.userlist_external.raw $userline_external
103
     !endif
20 reyssat 104
    !endif
105
   !else
8030 bpr 106
 
20 reyssat 107
    !if $supclass=$uclass or $uclass isitemof $user_participate
108
     !appendfile wimshome/log/classes/$uclass/.userlist.raw $userline
4996 czzmrn 109
     !if $userline_external!=$empty
110
       !appendfile wimshome/log/classes/$uclass/.userlist_external.raw $userline_external
111
     !endif
112
   !endif
8030 bpr 113
 
20 reyssat 114
    !if $supclass!=$uclass
115
     !appendfile wimshome/log/classes/$supclass/.userlist.raw $userline
4996 czzmrn 116
     !if $userline_external!=$empty
117
       !appendfile wimshome/log/classes/$supclass/.userlist_external.raw $userline_external
118
     !endif
20 reyssat 119
     !if $class_lvl!=$empty and $class_lvl/ isin $user_participate
120
      !appendfile wimshome/log/classes/$class_lvl/.userlist.raw $userline
4996 czzmrn 121
       !if $userline_external!=$empty
122
        !appendfile wimshome/log/classes/$class_lvl/.userlist_external.raw $userline_external
123
       !endif
20 reyssat 124
     !endif
125
    !endif
8030 bpr 126
 
20 reyssat 127
   !endif
8030 bpr 128
 
20 reyssat 129
  !endif
8030 bpr 130
 
20 reyssat 131
 !next u
132
!next N
133
 
134
basedir=$wims_home/log/classes
6868 bpr 135
basedir2=wimshome/log/classes
20 reyssat 136
!for c in $clist
6868 bpr 137
 !sh sort -f $basedir/$c/.userlist.raw >$basedir/$c/.userlist 2>/dev/null\
138
  rm -f $basedir/$c/.userlist.raw 2>/dev/null\
139
  rm -f $basedir/$c/.usernextlist.raw 2>/dev/null\
140
  rm -f $basedir/$c/.userprevlist.raw 2>/dev/null
4996 czzmrn 141
 
6868 bpr 142
 !sh sort -f $basedir/$c/.userlist_external.raw >$basedir/$c/.userlist_external 2>/dev/null\
4996 czzmrn 143
  rm -f $basedir/$c/.userlist_external.raw 2>/dev/null
144
 
6868 bpr 145
 !set nbuser_=!recordcnt $basedir2/$c/.userlist
146
 !writefile $basedir2/$c/.usernextlist.raw
147
 !writefile $basedir2/$c/.userprevlist.raw
148
 !set firstuser=!record 1 of $basedir2/$c/.userlist
149
 !set firstuser1=$firstuser
150
 !for l = 2 to $nbuser_
151
    !set nextuser=!record $l of $basedir2/$c/.userlist
152
    !appendfile $basedir2/$c/.usernextlist.raw $(firstuser[3]):$(nextuser[3])
153
    !appendfile $basedir2/$c/.userprevlist.raw $(nextuser[3]):$(firstuser[3])
154
    !set firstuser=$nextuser
155
 !next
156
 !appendfile $basedir2/$c/.usernextlist.raw $(firstuser[3]):$(firstuser1[3])
157
 !appendfile $basedir2/$c/.userprevlist.raw $(firstuser1[3]):$(firstuser[3])
158
  !sh mv $basedir/$c/.usernextlist.raw $basedir/$c/.usernextlist\
159
   mv $basedir/$c/.userprevlist.raw $basedir/$c/.userprevlist
20 reyssat 160
!next c
161
 
162
!read adm/class/stat