Rev 10778 | Blame | Compare with Previous | Last modification | View Log | RSS feed
!!CopyClass
!! permet de dupliquer sa classe, sans les travaux effectues par les apprenants
!! attention : opération assez longue. risque de finir en "time up"
!read scripts/check.class
!if $error!=$empty
!exit
!endif
!readdef $classdeffile
!if $class_superclass != $empty
# cas ou on duplique une sous-classe
nb_subclass=!recordcnt wimshome/log/classes/$class_superclass/.subclasses
#On cherche alors le prochain sous-id disponible
:new_sub_id
!advance nb_subclass
new_class=$class_superclass/$nb_subclass
classdeffile=wimshome/log/classes/$new_class/.def
test=!defof class_defined in $classdeffile
!if $test=yes
# si une sous-classe a ete supprimee, il se peut que $nb_subclass ne corresponde plus a la prochaine classe disponible. On avance donc jusqu'a trouver un id libre.
!goto new_sub_id
!endif
!else
# Cas ou on duplique autre chose qu'une sous-classe
# On cherche alors un id disponible
:recode
new_class=!randint 10^6,10^7-1
test=!defof class_defined in wimshome/log/classes/$new_class/.def
!if $test=yes
!goto recode
!endif
!endif
# On duplique alors $qclass
!sh cp -R $wims_home/log/classes/$qclass $wims_home/log/classes/$new_class
# puis on supprime les travaux effectués dans la classe dupliquée
!sh cd $wims_home/log/classes/$new_class\
rm -f .log\
rm -f .def\
rm -f .log.auth\
rm -f .userlist\
rm -f .userlist_external\
rm -f .scoreavg\
rm -f scoreavg\
rm -f .grades\
rm -f .users/*\
rm -f $wims_home/log/classes/$new_class/score/*\
rm -f $wims_home/log/classes/$new_class/noscore/*\
!! bizarrement, cette ligne ne fonctionne pas bien si elle est ajoutee aux precedentes
!sh cd $wims_home/log/classes/$new_class\
rm -Rf examlog
# la date de creation de la classe est automatiquement la date du jour.
class_creation=!char 1 to 8 of $wims_now
class_creation=!eval $class_creation
class_creator=$httpd_REMOTE_ADDR
cl_expiration=$[$class_creation+10000]
!if $class_expiration < $cl_expiration
class_expiration = $cl_expiration
!endif
# On recrée le fichier .def avec des dates de creation /expiration mises à jour.
!writefile wimshome/log/classes/$new_class/.def !set class_connections=$class_connections \
!set class_defined=yes\
!set class_creation=$class_creation
!for t in $classdefs
!appendfile wimshome/log/classes/$new_class/.def !set class_$t=$(class_$t)
!next t
!if $class_superclass != $empty
log = !sh cd $wims_home/log/classes; ./.build-index $class_superclass
!else
log = !sh cd $wims_home/log/classes; ./.build-index $new_class
!endif