Rev 10132 | Rev 10346 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 10132 | Rev 10133 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 |
|
1 | # mkuserlist |
2 | # Constructs .userlist file in specified class (wims_class by default) |
2 | # Constructs .userlist file in specified class (wims_class by default) |
- | 3 | # constructs .usernextlist and .userprevlist |
|
3 | # |
4 | # also constructs .userlist_external if needed |
4 | 5 | ||
5 | uclass=$wims_read_parm |
6 | uclass=$wims_read_parm |
6 | !default uclass=$wims_class |
7 | !default uclass=$wims_class |
7 | 8 | ||
8 | !if user notwordof $wims_prefix |
9 | !if user notwordof $wims_prefix |
Line 17... | Line 18... | ||
17 | supertype=!defof class_type in wimshome/log/classes/$supclass/.def |
18 | supertype=!defof class_type in wimshome/log/classes/$supclass/.def |
18 | typename=!defof class_typename in wimshome/log/classes/$uclass/.def |
19 | typename=!defof class_typename in wimshome/log/classes/$uclass/.def |
19 | !if $typename iswordof level program |
20 | !if $typename iswordof level program |
20 | !exit |
21 | !exit |
21 | !endif |
22 | !endif |
22 | - | ||
23 | !if $typename issametext course |
23 | !if $typename issametext course |
24 | class_parent=!defof class_parent in wimshome/log/classes/$uclass/.def |
24 | class_parent=!defof class_parent in wimshome/log/classes/$uclass/.def |
25 | !if $class_parent!=$empty |
25 | !if $class_parent!=$empty |
26 | i=!defof class_ocourses in wimshome/log/classes/$class_parent/.def |
26 | i=!defof class_ocourses in wimshome/log/classes/$class_parent/.def |
27 | i=!makelist $wims_superclass/x for x in $i |
27 | i=!makelist $wims_superclass/x for x in $i |
Line 29... | Line 29... | ||
29 | uclass=$class_parent |
29 | uclass=$class_parent |
30 | !goto mkstart |
30 | !goto mkstart |
31 | !endif |
31 | !endif |
32 | !endif |
32 | !endif |
33 | clist=$uclass |
33 | clist=$uclass |
34 | - | ||
35 | !else |
34 | !else |
36 | !if / isin $uclass |
35 | !if / isin $uclass |
37 | class_lvl=!translate internal / to , in $uclass |
36 | class_lvl=!translate internal / to , in $uclass |
38 | class_lvl=$(class_lvl[1])/$(class_lvl[2]) |
37 | class_lvl=$(class_lvl[1])/$(class_lvl[2]) |
39 | !if $class_lvl=$uclass |
38 | !if $class_lvl=$uclass |
Line 52... | Line 51... | ||
52 | supclass=$uclass |
51 | supclass=$uclass |
53 | !endif |
52 | !endif |
54 | 53 | ||
55 | mul_userdir=wimshome/log/classes/$supclass/.users |
54 | mul_userdir=wimshome/log/classes/$supclass/.users |
56 | mul_userdir2=$wims_home/log/classes/$supclass/.users |
55 | mul_userdir2=$wims_home/log/classes/$supclass/.users |
57 | - | ||
58 | 56 | ||
59 | ## On range la liste des utilisateurs par paquets de 1000 (userlist_0, userlist_1, etc...) |
57 | ## On range la liste des utilisateurs par paquets de 1000 (userlist_0, userlist_1, etc...) |
60 | start=0 |
58 | start=0 |
61 | userlist_$start=!sh cd $mul_userdir2; ls 2>/dev/null | head -1000 |
59 | userlist_$start=!sh cd $mul_userdir2; ls 2>/dev/null | head -1000 |
62 | userlist_$start=!words2items $(userlist_$start) |
60 | userlist_$start=!words2items $(userlist_$start) |
63 | 61 | ||
64 | userlist_lastcnt=!itemcnt $(userlist_$start) |
62 | userlist_lastcnt=!itemcnt $(userlist_$start) |
65 | 63 | ||
66 | !while $userlist_lastcnt>999 |
64 | !while $userlist_lastcnt>999 |
67 | !advance start |
65 | !advance start |
68 | userlist_$start=!sh cd $mul_userdir2; ls 2>/dev/null | tail -n +$(start)001 | head -1000 |
66 | userlist_$start=!sh cd $mul_userdir2; ls 2>/dev/null | tail -n +$(start)001 | head -1000 |
69 | userlist_$start=!words2items $(userlist_$start) |
67 | userlist_$start=!words2items $(userlist_$start) |
70 | userlist_lastcnt=!itemcnt $(userlist_$start) |
68 | userlist_lastcnt=!itemcnt $(userlist_$start) |
71 | !endwhile |
69 | !endwhile |
72 | 70 | ||
73 |
|
71 | ## On supprime une eventuelle liste temporaire "userlist*.raw" dans chaque classe |
- | 72 | ## just junk |
|
74 | !for c in $clist |
73 | !for c in $clist |
75 | !sh rm -f $wims_home/log/classes/$c/.userlist.raw 2>/dev/ |
74 | !sh rm -f $wims_home/log/classes/$c/.userlist.raw 2>/dev/null\ |
76 |
|
75 | rm -f $wims_home/log/classes/$c/.userlist_external.raw 2>/dev/null |
77 | !next |
76 | !next |
78 | 77 | ||
79 |
|
78 | ## On parcourt nos paquets de 1000 users |
80 | !for N=0 to $start |
79 | !for N=0 to $start |
81 | !for u in $(userlist_$N) |
80 | !for u in $(userlist_$N) |
82 | !reset user_firstname, user_lastname, user_supervisable,\ |
81 | !reset user_firstname, user_lastname, user_supervisable,\ |
83 | user_class, user_participate, user_exists, user_external_auth |
82 | user_class, user_participate, user_exists, user_external_auth |
84 | !readdef $mul_userdir/$u |
83 | !readdef $mul_userdir/$u |
85 | 84 | ||
86 | !!TODO better to make a special list for user_supervisable who participates |
85 | !!TODO better to make a special list for user_supervisable who participates |
87 | !!( |
86 | !!(suppress to add supervisor who are registered as participant to appear in userlist) |
88 | - | ||
89 | !if $user_exists=yes and $user_supervisable!=yes |
87 | !if $user_exists=yes and $user_supervisable!=yes |
90 | userline=:$user_lastname,$user_firstname,$u |
88 | userline=:$user_lastname,$user_firstname,$u |
91 | - | ||
92 | !reset userline_external |
89 | !reset userline_external |
93 | !if $user_external_auth!=$empty |
90 | !if $user_external_auth!=$empty |
94 | userline_external=$user_external_auth:$u |
91 | userline_external=$user_external_auth:$u |
95 | !endif |
92 | !endif |
96 | - | ||
97 | !if $typename=course |
93 | !if $typename=course |
98 | !readdef wimshome/log/classes/$uclass/.users/$u |
94 | !readdef wimshome/log/classes/$uclass/.users/$u |
99 | !if $user_class!=$empty |
95 | !if $user_class!=$empty |
100 | !appendfile wimshome/log/classes/$uclass/.userlist.raw $userline,$user_class |
96 | !appendfile wimshome/log/classes/$uclass/.userlist.raw $userline,$user_class |
101 | !if $userline_external!=$empty |
97 | !if $userline_external!=$empty |
102 | !appendfile wimshome/log/classes/$uclass/.userlist_external.raw $userline_external |
98 | !appendfile wimshome/log/classes/$uclass/.userlist_external.raw $userline_external |
103 | !endif |
99 | !endif |
104 | !endif |
100 | !endif |
105 | !else |
101 | !else |
106 | - | ||
107 | !if $supclass=$uclass or $uclass isitemof $user_participate |
102 | !if $supclass=$uclass or $uclass isitemof $user_participate |
108 | !appendfile wimshome/log/classes/$uclass/.userlist.raw $userline |
103 | !appendfile wimshome/log/classes/$uclass/.userlist.raw $userline |
109 | !if $userline_external!=$empty |
104 | !if $userline_external!=$empty |
110 | !appendfile wimshome/log/classes/$uclass/.userlist_external.raw $userline_external |
105 | !appendfile wimshome/log/classes/$uclass/.userlist_external.raw $userline_external |
111 | !endif |
106 | !endif |
112 | !endif |
107 | !endif |
113 | - | ||
- | 108 | ### do it for the $supclass ? could be done many times |
|
114 | !if $supclass!=$uclass |
109 | !if $supclass!=$uclass |
115 | !appendfile wimshome/log/classes/$supclass/.userlist.raw $userline |
110 | !appendfile wimshome/log/classes/$supclass/.userlist.raw $userline |
116 | !if $userline_external!=$empty |
111 | !if $userline_external!=$empty |
117 | !appendfile wimshome/log/classes/$supclass/.userlist_external.raw $userline_external |
112 | !appendfile wimshome/log/classes/$supclass/.userlist_external.raw $userline_external |
118 | !endif |
113 | !endif |
119 | !if $class_lvl!=$empty and $class_lvl/ isin $user_participate |
114 | !if $class_lvl!=$empty and $class_lvl/ isin $user_participate |
- | 115 | ## do it for the intermediaire class ? could be done many times |
|
120 | !appendfile wimshome/log/classes/$class_lvl/.userlist.raw $userline |
116 | !appendfile wimshome/log/classes/$class_lvl/.userlist.raw $userline |
121 | !if $userline_external!=$empty |
117 | !if $userline_external!=$empty |
122 | !appendfile wimshome/log/classes/$class_lvl/.userlist_external.raw $userline_external |
118 | !appendfile wimshome/log/classes/$class_lvl/.userlist_external.raw $userline_external |
123 | !endif |
119 | !endif |
124 | !endif |
120 | !endif |
125 | !endif |
121 | !endif |
126 | - | ||
127 | !endif |
122 | !endif |
128 | - | ||
129 | !endif |
123 | !endif |
130 | - | ||
131 | !next u |
124 | !next u |
132 | !next N |
125 | !next N |
133 | 126 | ||
134 | basedir=$wims_home/log/classes |
127 | basedir=$wims_home/log/classes |
135 | basedir2=wimshome/log/classes |
128 | basedir2=wimshome/log/classes |
- | 129 | ||
136 | !for c in $clist |
130 | !for c in $clist |
137 | !sh sort -f $basedir/$c/.userlist.raw >$basedir/$c/.userlist 2>/dev/null\ |
131 | !sh sort -f $basedir/$c/.userlist.raw >$basedir/$c/.userlist 2>/dev/null\ |
138 | rm -f $basedir/$c/.userlist.raw 2>/dev/null\ |
132 | 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 |
- | |
141 | - | ||
142 | !sh sort -f $basedir/$c/.userlist_external.raw >$basedir/$c/.userlist_external 2>/dev/null\ |
133 | !sh sort -f $basedir/$c/.userlist_external.raw >$basedir/$c/.userlist_external 2>/dev/null\ |
143 | rm -f $basedir/$c/.userlist_external.raw 2>/dev/null |
134 | rm -f $basedir/$c/.userlist_external.raw 2>/dev/null |
- | 135 | !next |
|
- | 136 | ## Now the files .userlist and .userlist_external are created in the classes of $clist, |
|
- | 137 | ## so in the sup classes of $uclass. Do we need to do that (it is done many times for |
|
- | 138 | ## the portal ... |
|
144 | 139 | ||
145 |
|
140 | ## do now the .usernextlist and .userprevlist only in the class $uclass |
- | 141 | ## in fact, there is only one class in $uclass. Leave the loop for the moment |
|
- | 142 | !for c in $uclass |
|
146 |
|
143 | rm -f $basedir/$c/.usernextlist.raw 2>/dev/null\ |
147 |
|
144 | rm -f $basedir/$c/.userprevlist.raw 2>/dev/null |
148 | !set |
145 | !set nbuser_=!recordcnt $basedir2/$c/.userlist |
149 |
|
146 | !if $nbuser_=0 |
150 |
|
147 | !break |
- | 148 | !endif |
|
151 |
|
149 | !set list_1=!record 1 to -1 of $basedir2/$c/.userlist |
- | 150 | !set list_1=!column 3 of $list_1 |
|
152 |
|
151 | !set nextuser=!makelist $$(list_1[x]), $$(list_1[x+1]); for x=1 to $nbuser_-1 |
153 |
|
152 | !set nextuser=!nospace $nextuser$(list_1[$nbuser_]),$(list_1[1]) |
- | 153 | !set nextuser=!replace internal ;, by ; in $nextuser |
|
- | 154 | !set prevuser=!nospace $(nextuser[;2,1]) |
|
154 |
|
155 | !set prevuser=!rows2lines $prevuser |
- | 156 | !set prevuser=!replace internal , by : in $prevuser |
|
155 |
|
157 | !set nextuser=!rows2lines $nextuser |
- | 158 | !set nextuser=!replace internal , by : in $nextuser |
|
156 |
|
159 | !writefile $basedir2/$c/.usernextlist.raw $nextuser |
157 |
|
160 | !writefile $basedir2/$c/.userprevlist.raw $prevuser |
158 | !sh mv $basedir/$c/.usernextlist.raw $basedir/$c/.usernextlist\ |
161 | !sh mv $basedir/$c/.usernextlist.raw $basedir/$c/.usernextlist\ |
159 | mv $basedir/$c/.userprevlist.raw $basedir/$c/.userprevlist |
162 | mv $basedir/$c/.userprevlist.raw $basedir/$c/.userprevlist |
160 | !next c |
163 | !next c |
161 | 164 | ||
162 | !exit |
165 | !exit |