Subversion Repositories wimsdev

Rev

Rev 16091 | Blame | Compare with Previous | Last modification | View Log | RSS feed

!bound restore within replace,merge default merge

v=!record 0 of wimshome/$wims_sesdir/upload/class/version
v=!word 1 of $v
!if $v=$empty or $v<4
  error=no_upload
  !exit
!endif
serial=!record 0 of wimshome/$wims_sesdir/upload/class/serial
serial=!word 1 of $serial
!readdef wimshome/log/classes/$wims_class/neighbors

sharing=
!for r in $sharelist
  !if $(sharing_$r)!=$empty
    sharing=!append item $r to $sharing
  !endif
!endif
sharing=!append item log,neighbor to $sharing

safe=!listcomplement def,sup in $reclist
selection=!replace item all by $safe in $selection
sel=!listintersect $selection and $reclist
sel=!listcomplement $sharing in $sel
!if $sel=$empty
  no_selection=yes
  !read arch/upload.proc
  job2=upload
  !exit
!endif
selw=!items2words $sel
dictionary=$module_dir/arch/recdep
dep=!exec translator $selw
copy=!words2items $selw $dep
copy=!listuniq $copy
copy=!listcomplement $forbiddenlistdep in $copy

!! ----------------------------- restore of user when replace or merge
!if user isitemof $copy
  n=!recordcnt wimshome/$wims_sesdir/upload/class/.userlist
  !read adm/class/userremain.proc
  m=!recordcnt wimshome/log/classes/$wims_class/.userlist
  !if $restore=merge
    !if $n>$dispo
      user_bad=refused
      copy=!listcomplement user,score in $copy
    !endif
  !else
    !if ($n>$dispo and $class_superclass!=$empty) or ($class_superclass=$empty and $n>$dispo+$m)
      user_bad=refused
      copy=!listcomplement user,score in $copy
    !else
      !if $m>0
        erase=user
      !endif
    !endif
  !endif
  !if ($wims_supertype=4 or $wims_supertype=2)
    !if $class_typename=class
      !if user isin $erase
        !for k=1 to $m
          u=!record $k of wimshome/log/classes/$wims_class/.userlist
          t=!defof user_participate in wimshome/log/classes/$wims_superclass/.users/$(u[3])
          t=!listcomplement $wims_class in $t
          !setdef !set user_participate=$t in wimshome/log/classes/$wims_superclass/.users/$(u[3])
        !next k
      !endif
      !reset user_ok,user_loginused
      !for k=1 to $n
        u=!record $k of wimshome/$wims_sesdir/upload/class/.userlist
        test=!defof user_exists in wimshome/log/classes/$wims_superclass/.users/$(u[3])
        !if $test!=$empty
          user_loginused=!append item $(u[3]) to $(user_loginused)
          !sh rm -f $wims_home/$wims_sesdir/upload/class/.users/$(u[3]) $wims_home/$wims_sesdir/upload/class/score/$(u[3]) $wims_home/$wims_sesdir/upload/class/noscore/$(u[3]);
        !else
          user_ok=!append item $(u[3]) to $user_ok
        !endif
      !next k
      !sh cd $wims_home/$wims_sesdir/upload/class/;\
cp -pR .users $wims_home/log/classes/$wims_superclass/;
      !for u in $user_ok
        !setdef !set user_participate=$wims_class in wimshome/log/classes/$wims_superclass/.users/$u
      !next k
    !endif
    copy=!listcomplement user in $copy
    !readproc adm/class/mkuserlist
  !endif
!endif

!if $restore=replace
  erase=$copy
!else
  erase=!listcomplement user,exo in $copy
!endif
copyw=!items2words $copy
erasew=!items2words $erase
dictionary=$module_dir/arch/recdir
copylist=!exec translator $copyw
eraselist=!exec translator $erasew
c=!replace , by , $ in $copy
dictionary=$module_dir/lang/recnames.$moduclass_lang
restored=!exec translator $c

!distribute words y y y y y y y y y y y y y y y y y y y y y y y into $copy

!if def isitemof $copy
  creat=!defof class_creation in wimshome/log/classes/$wims_class/.def
!endif

!if y=$def
  !readproc arch/restoredef.proc
!endif
!mexec arch/restore.sh
wims_class_log=Restore $copy from $wims_deposit by $wims_realuser
selection=

!if user isitemof $copy
  !read adm/class/mkuserlist
!endif

!! Attention la restauration de la sauvegarde ne devrait pas pouvoir modifier la variable class_expiration des sous classes d'un groupement ou d'un portail (il y a un correctif à effectuer).
!if def isitemof $copy
  !setdef !set class_creation=$creat in wimshome/log/classes/$wims_class/.def
  exp=!defof class_expiration in wimshome/log/classes/$wims_class/.def
  today=!char 1 to 8 of $wims_now
  later=!date -d '2 months' '+%Y%m%d'
  !if NaN isin $[$exp]
    exp_bad=bad
    exp=$later
  !endif
  !if $exp<$later
    exp=$later
    exp_bad=early
  !endif
  !if $exp>$today+10000
    exp=$[$today+10000]
    exp_bad=late
  !endif
  !if $exp_bad!=$empty
    !setdef !set class_expiration=$exp in wimshome/log/classes/$wims_class/.def
  !endif
!!  !mexec scripts/classlist.sh   this script don't exist
!endif

!read adm/class/stat