Rev 10112 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#! /bin/sh
## if $1 is the number of a class, only calculate the data relative to this class
## to accelerate the indexation
cd `dirname $0`
if [ -e .lockindex ]; then
# echo "busy:wait";
sleep 120;
if [ -e .lockindex ]; then
# echo "always busy : quit"
exit;
fi;
fi
#echo "workstart";
touch .lockindex;
if [ -n "$1" ] ; then
clist=$1;
clist=${clist%%/*};
rm -f $clist/.subclasses 2>/dev/null
cp -f .index .IND
### one delete the line :$clist, in the file .IND
perl -pi -e "s/^:$clist,(.*)\n//" .IND
else
clist=`ls -d [0-9]* 2>/dev/null`;
rm -f .IND 2>/dev/null
rm -f [0-9]*/.subclasses 2>/dev/null
fi
for cls in $clist
do
expr=`awk -F'=' '$1=="!set class_expiration" {print $2; exit}' $cls/.def`
inst=`awk -F'=' '$1=="!set class_institution" {print $2; exit}' $cls/.def`
desc=`awk -F'=' '$1=="!set class_description" {print $2; exit}' $cls/.def`
lang=`awk -F'=' '$1=="!set class_lang" {print $2; exit}' $cls/.def`
lvl=`awk -F'=' '$1=="!set class_level" {print $2; exit}' $cls/.def`
pswd=`awk -F'=' '$1=="!set class_password" {print substr($2,2,3); exit}' $cls/.def`
supv=`awk -F'=' '$1=="!set class_supervisor" {print $2; exit}' $cls/.def`
type=`awk -F'=' '$1=="!set class_type" {print $2; exit}' $cls/.def`
email=`awk -F'=' '$1=="!set class_email" {print $2; exit}' $cls/.def`
connexion=`awk -F'=' '$1=="!set class_connections" {print $2; exit}' $cls/.def`
authent=`awk -F'=' '$1=="!set class_authidp" {print $2; exit}' $cls/.def`
if [ -n "$desc" ]; then
[ -z "$type" ] && type=0
case $type in
0|2|4)
echo ":$cls,$expr,$inst,$desc,$lang,$type,$lvl,$pswd,$supv,$connexion,$authent" >>.IND
if [ "$type" = "2" ]; then
slist=`ls -d $cls/[0-9]* | sort -n -t/ -k2 2>/dev/null`
for scs in $slist; do
expr=`awk -F'=' '$1=="!set class_expiration" {print $2; exit}' $scs/.def`
inst=`awk -F'=' '$1=="!set class_institution" {print $2; exit}' $scs/.def`
desc=`awk -F'=' '$1=="!set class_description" {print $2; exit}' $scs/.def`
lang=`awk -F'=' '$1=="!set class_lang" {print $2; exit}' $scs/.def`
lvl=`awk -F'=' '$1=="!set class_level" {print $2; exit}' $scs/.def`
pswd=`awk -F'=' '$1=="!set class_password" {print substr($2,2,3); exit}' $scs/.def`
supv=`awk -F'=' '$1=="!set class_supervisor" {print $2; exit}' $scs/.def`
connexion=`awk -F'=' '$1=="!set class_connections" {print $2; exit}' $cls/.def`
echo ":$scs,$expr,$inst,$desc,$lang,1,$lvl,$pswd,$supv,$connexion" >>$cls/.subclasses
done
fi
;;
*)
sup=`awk -F'=' '$1=="!set class_superclass" {print $2; exit}' $cls/.def | cut -d, -f1`
[ -n "$sup" ] && [ "$sup" -gt 10000 ] && echo ":$cls,$expr,$inst,$desc,$lang,$type,$lvl,$pswd,$supv" >>$sup/.subclasses 2>/dev/null
;;
esac
fi
done
# if "sort" exits on your system with error 'sort: Illegal byte sequence'
# and thus no .index file is written,
# add LC_ALL=C to the 'env' string or remove the 'env' command all together...
env LC_COLLATE=POSIX LANG=POSIX LC_CTYPE=fr_FR.UTF-8 sort -t ',' -f -k 3,4 <.IND >.index
rm -f .IND
###cleanup example class
### remplacer .bak par autre chose
for cls in 1???
do
if [ -d "$cls/.users.bak" ]; then
dd=`ls $cls/.users | grep -c .`
if [ "$dd" -gt 50 ]; then
rm -rf $cls/.users
cp -R $cls/.users.bak $cls/.users
cp $cls/.userlist.bak $cls/.userlist
rm -rf $cls/score/* $cls/noscore/*
fi
fi
done
./.build-teacher
rm -f .lockindex