Rev 17208 | Blame | Compare with Previous | Last modification | View Log | RSS feed
sjob=$job
!!to avoid sheet of an open class
noopenclone=
!if $ssourcecls=$empty and $step>-2
step=-3
!endif
!if $scheckpwd!=1 and $step>-1
step=-2
!exit
!endif
!if $smethodecp=$empty and $step>0
step=-1
!exit
!endif
!if $wims_class=$empty
cltype=0
!else
!read adm/class/userdef classes,$wims_class,$wims_user
supervisable=!defof user_supervisable\
user_mkclass in $userdef
!distribute line $supervisable into supervisable,mkclass
!if $wims_supertype!=2 or ($wims_user!=supervisor and $supervisable!=yes) or $wims_class!=$wims_superclass or $mkclass=no
error=no_subclass
!exit
!endif
!endif
!if $step=-3
!! search if exists at less one cloneable class (verifying keywords)
!reset scheckpwd
keyword=!items2words $keyword
keyword=!trim $keyword
kw=!words2items $keyword
kw=!deaccent $kw
kw=!tolower $kw
ccnt=!recordcnt wimshome/log/classes/.index
i=1
debcls=$empty
!while $i<=$ccnt and $debcls=$empty
l=!record $i of wimshome/log/classes/.index
!distribute items $l into code,expire,inst,cl,la,ty
!if $ty!=4
l1=!deaccent $l
l1=!tolower $l1
c1=!text extract 0123456789 in $code
k=yes
!if $kw!=$empty
!for w in $kw
!if $w notin $l1
!let k=no
!break
!endif
!next w
!endif
!if $k=no and $kw!=$empty and $ty=2
!! find of keyword in subclasses
sbcnt=!recordcnt wimshome/log/classes/$code/.subclasses
sb=1
!while $sb<=$sbcnt and $k=no
ksb=yes
l1sb=!record $sb of wimshome/log/classes/$code/.subclasses
l1sb=!deaccent $l1sb
l1sb=!tolower $l1sb
!for w in $kw
!if $w notin $l1sb
ksb=no
!!break
!endif
!next w
!if $ksb=yes
k=yes
!endif
!increase sb
!endwhile
!endif
!if $k=yes
debcls=$i
!endif
!endif
!increase i
!endwhile
!exit
!endif
!if $step=-2
!if $sourcecls!=file and $sourcecls!=wget
!! checking allowed clonage + ask for cloning pwd
sourcecls=!text select /0123456789 in $sourcecls
tmp=!defof class_defined\
class_allowcloning\
class_type\
class_typename in wimshome/log/classes/$sourcecls/.def
testneighbors=!defof sharing_all in wimshome/log/classes/$sourcecls/neighbors
!distribute line $tmp into tmp1,tmp3,tmp6,tmp7
!if yes!=$tmp1
error=classdontexists
!exit
!endif
!if $sourcecls<=9999 and $sourcecls notin $noopenclone
step=-1
!else
!! only single class can be cloned (waiting other improvment)
!! class with sharing can't be cloned.
!if (($tmp6!=1 or $tmp7!=class) and 0!=$tmp6) or $testneighbors!=$empty
error=disallowcloning
!exit
!endif
!if yes!=$tmp3
error=cloningnotallow
!exit
!endif
!endif
ssourcecls=$sourcecls
!else
!if $sourcecls=file
!! --- manage to clone a tgz file classe
!if $wims_deposit!=$empty
wims_deposit=!word 1 of $wims_deposit
selection=
gotlist=
!if . notin $wims_deposit or / isin $wims_deposit or .. isin $wims_deposit
error=bad_file
!exit
!endif
!endif
t=!translate . to $ $ in $wims_deposit
format=!word 2 to -1 of $t
format=!translate $ $ to . in $format
!if $format notwordof tgz tar.gz zip
error=bad_file
!exit
!endif
!else
!! manage of method wget
!read adm/class/authchars
wgetfile=!text select /&=$char_passwd in $wgetfile
t=!translate / to , in $wgetfile
t=!item -1 of $t
t=!translate . to $ $ in $t
format=!word 2 to -1 of $t
format=!translate $ $ to . in $format
!if $format notwordof tgz tar.gz zip
error=bad_file
!exit
!endif
!sh cd $wims_home/sessions/$wims_session;\
wget -O user-deposit "$wgetfile" 2> /dev/null;
wims_deposit=savecls.$format
!endif
!sh $wims_home/public_html/scripts/adm/decompress.sh
ssourcecls=file
scheckpwd=1
step=-1
!endif
!endif
!if $ssourcecls=file
source_title=!defof class_institution,class_description in wimshome/sessions/$wims_session/upload/class/.def
!else
source_title=!defof class_institution,class_description in wimshome/log/classes/$ssourcecls/.def
!endif
!if $step=-2
!exit
!endif
!if $step=-1
!!checking pwd or exampleclass
!if $ssourcecls=file
scheckpwd=1
!else
!if $ssourcecls>9999
!! check cloningpwd
!! --------------------------------------- attention il faut rajouter la temporisation pour badpwd
pwd=!defof class_cloningpwd in wimshome/log/classes/$ssourcecls/.def
!if $pwd!=$clonepwd
error=badcloningpwd
step=-2
!exit
!endif
!endif
scheckpwd=1
!endif
!exit
!endif
!if $step=0
!if $methodecp!=0 and $methodecp!=1
error=badcpmethod
!exit
!endif
smethodecp=$methodecp
!endif
!read proc/newclass.proc
!! ajout des ressources de la classe d'exemple
!if $step=3
!read proc/cloning.proc
!if $wims_class!=$empty
!restart module=home
!endif
!endif