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 |