Subversion Repositories wimsdev

Rev

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
#MKUSERLIST
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
#    also constructs .userlist_external if needed
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
# On supprime une eventuelle liste temporaire "userlist*.raw" dans chaque classe
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/null
74
 !sh rm -f $wims_home/log/classes/$c/.userlist.raw 2>/dev/null\
76
 !sh rm -f $wims_home/log/classes/$c/.userlist_external.raw 2>/dev/null
75
 rm -f $wims_home/log/classes/$c/.userlist_external.raw 2>/dev/null
77
!next
76
!next
78
 
77
 
79
# On parcourt nos paquets de 1000 users
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
!!( suppress to add supervisor who are registered as participant to appear in userlist)
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
 !set nbuser_=!recordcnt $basedir2/$c/.userlist
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
 !writefile $basedir2/$c/.usernextlist.raw
143
  rm -f $basedir/$c/.usernextlist.raw 2>/dev/null\
147
 !writefile $basedir2/$c/.userprevlist.raw
144
  rm -f $basedir/$c/.userprevlist.raw 2>/dev/null
148
 !set firstuser=!record 1 of $basedir2/$c/.userlist
145
  !set nbuser_=!recordcnt $basedir2/$c/.userlist
149
 !set firstuser1=$firstuser
146
  !if $nbuser_=0
150
 !for l = 2 to $nbuser_
147
    !break
-
 
148
  !endif
151
    !set nextuser=!record $l of $basedir2/$c/.userlist
149
  !set list_1=!record 1 to -1 of $basedir2/$c/.userlist
-
 
150
  !set list_1=!column 3 of $list_1
152
    !appendfile $basedir2/$c/.usernextlist.raw $(firstuser[3]):$(nextuser[3])
151
  !set nextuser=!makelist $$(list_1[x]), $$(list_1[x+1]); for x=1 to $nbuser_-1
153
    !appendfile $basedir2/$c/.userprevlist.raw $(nextuser[3]):$(firstuser[3])
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
    !set firstuser=$nextuser
155
  !set prevuser=!rows2lines $prevuser
-
 
156
  !set prevuser=!replace internal , by : in $prevuser
155
 !next
157
  !set nextuser=!rows2lines $nextuser
-
 
158
  !set nextuser=!replace internal , by : in $nextuser
156
 !appendfile $basedir2/$c/.usernextlist.raw $(firstuser[3]):$(firstuser1[3])
159
  !writefile $basedir2/$c/.usernextlist.raw $nextuser
157
 !appendfile $basedir2/$c/.userprevlist.raw $(firstuser1[3]):$(firstuser[3])
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