Subversion Repositories wimsdev

Rev

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


!if $wims_class=$empty or $wims_user!=supervisor
  error=unauthorized
  !exit
!endif

t=!exec ftype $wims_home/$wims_sesdir/user-deposit
!if $t=$empty
  error=empty
  !exit
!endif
!if $t=binary
  error=binary
  !exit
!endif

!sh cd $wims_home/$wims_sesdir\
 grep . user-deposit | awk '{print ":"$$0}' | tr '      "' ', ' >user_deposit\
 rm -f user-deposit >/dev/null

file=$wims_sesdir/user_deposit
n=!recordcnt wimshome/$file
!if $n<=0
  error=empty
  !exit
!endif

loglist=
!for i=1 to $n
  l=!record $i of wimshome/$file
  !if $gotlogin!=$empty
    ltest=!item $gotlogin of $l
    ll=!wordcnt $ltest
    !if $ll=1 and # notin $ltest
      dep_$ltest=$l
      loglist=!append item $ltest to $loglist
    !endif
  !else
    !if $i>3
      error=no_login
      !exit
    !endif
    !if login isitemof $l
      l=!lower $l
      types=!nospace $l
      gotlogin=!positionof item login in $l
      gotlogin=!item 1 of $gotlogin
    !endif
  !endif
!next i

!if $gotlogin=$empty
  error=no_login
  !exit
!endif

remark=
!if sheet isin $types or exam isin $types or average isin $types
  remark=$remark noauto
!endif

prop=no
!if noauto iswordof $remark or manual isin $types
  remark=$remark noprop
!else
  !if firstname isitemof $types and lastname isitemof $types
    prop=yes
    !read adm/class/userremain.proc
  !endif
!endif

!if manual isin $types
  manual=yes
!endif

replacelist=$types
types=!replace , by ,up_ in up_$types
gotcnt=!itemcnt $loglist
propcnt=0
gradecnt=0
!reset missing erased bad added change
processed=yes

!for l in $loglist
  !reset up_firstname,up_lastname,up_email,up_password,up_comments,up_regnum,up_photourl,up_participate,up_external_auth
  !distribute items $(dep_$l) into $types
  exist=!defof user_exists in wimshome/log/classes/$wims_class/.users/$l
  !if $exist=yes
    !if $prop=yes
     !read adm/class/adduser $l
    !endif
  !else
    exist2=!defof user_exists in wimshome/log/classes/$wims_class/.users/.$l
    !if $exist2=yes
      erased=!append item $l to $erased
    !else
      missing=!append item $l to $missing
      !if $up_firstname!=$empty and $up_lastname!=$empty and $up_password!=$empty
        !if $prop=yes
          !if $userremain>0
            !read adm/class/adduser $l
            !if $l notwordof $bad
              added=!append item $l to $added
            !else
              userremain=$[$userremain-1]
            !endif
          !else
            remark=$remark full
          !endif
      !endif
      !endif
    !endif
  !endif
!next l
missing=!listcomplement $added in $missing

!if $change!=$empty
  !read adm/class/mkuserlist
  wims_class_log=spreadsheet userinfo
!endif

!if $manual=yes
  fn=wimshome/log/classes/$wims_class/.grades
  fu=wimshome/log/classes/$wims_class/.userlist
  l=!record 1 of $fn
  t=!line 2 of $l
  n=!itemcnt $t
  n=$[$n-2]
  !if $n<1
    error=no_manual
    !exit
  !endif
  otypes=nn
  !for i=1 to $n
    otypes=$otypes,o_$i
  !next i
  first=$l
  cnt=!recordcnt $fn
  !for u=2 to $cnt
    l=!record $u of $fn
    uu=!item 1 of $l
    orig_$uu=!item 2 to -1 of $l
  !next u
  !writefile $fn :$first
  cnt=!recordcnt $fu
  !for i=1 to $cnt
    l_=!record $i of $fu
    u=!item 3 of $l_
    !distribute items $(dep_$u) into $types
    !distribute items $(orig_$u) into $otypes
    t_=!defof user_firstname user_lastname in wimshome/log/classes/$wims_class/.users/$u
    !for i=1 to $n
      l_=$[$(up_manual$i)]
      !if NaN isin $l_ or Inf isin $l_ or $l_<0 or $l_>100000 or $(up_manual$i)=$empty
        l_=
      !endif
      !default l_=$(o_$i)
      t_=!append item $l_ to $t_
    !next i
    !appendfile $fn :$u,$t_
  !next u
  wims_class_log=spreadsheet grades
!endif