Diff for /loncom/homework/daxesave.pm between versions 1.3 and 1.6

version 1.3, 2016/02/17 00:05:14 version 1.6, 2023/08/23 20:43:34
Line 28 Line 28
 ###  ###
   
 package Apache::daxesave;  package Apache::daxesave;
   use strict;
   
 use Apache::Constants;  use Apache::Constants qw(:common);
 use Apache::lonnet;  use Apache::lonnet;
 use Try::Tiny;  use Try::Tiny;
 use File::Copy;  use File::Copy;
Line 44  sub handler { Line 45  sub handler {
     $request->content_type('text/plain');      $request->content_type('text/plain');
           
     # path should be in the form "/daxeopen/priv/..."      # path should be in the form "/daxeopen/priv/..."
     # or ^/daxeopen/uploaded/[^/]+/[^/]+/supplemental/.*html?$      # or ^/daxeopen/uploaded/[^/]+/[^/]+/.*html?$
     my $path = $env{'form.path'};      my $path = $env{'form.path'};
     $path =~ s/^\/daxeopen//;      $path =~ s/^\/daxeopen//;
           
Line 60  sub handler { Line 61  sub handler {
                 }                  }
             }              }
         }          }
     } elsif ($path =~ m|^/uploaded/[^/]+/[^/]+/supplemental/|) {      } elsif ($path =~ m|^/uploaded/[^/]+/[^/]+/|) {
         if ($env{'user.name'} ne '' && $env{'user.domain'} ne '' && $env{'request.course.id'}) {          if ($env{'user.name'} ne '' && $env{'user.domain'} ne '' && $env{'request.course.id'}) {
             $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};              $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
             $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};              $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
             if ($path =~ m|^/uploaded/\Q$cdom\E/\Q$cnum\E/supplemental/| && $path !~ /\.\./) {              if ($path =~ m|^/uploaded/\Q$cdom\E/\Q$cnum\E/| && $path !~ /\.\./) {
                 if (&Apache::lonnet::allowed('mdc', $env{'request.course.id'})) {                  if (&Apache::lonnet::allowed('mdc', $env{'request.course.id'})) {
                     $allowed = 1;                      $allowed = 1;
                 }                  }
Line 82  sub handler { Line 83  sub handler {
   
     my $contents = $env{'form.file'};      my $contents = $env{'form.file'};
           
     try {      my $mode;
         $contents = &Apache::xml_to_loncapa::convert_file($contents);      if ($path =~ /\.(task|problem|exam|quiz|assess|survey|library|xml|html|htm|xhtml|xhtm)$/) {
     } catch {          try {
         $request->print("error\nconvert failed for $path: $_");              $contents = &Apache::xml_to_loncapa::convert_file($contents);
         return OK;          } catch {
     };              $request->print("error\nconvert failed for $path: $_");
               return OK;
           };
           $mode = '>:encoding(UTF-8)';
       } else {
           $mode = '>';
       }
           
     my $filebak = $newpath.".bak";      my $filebak = $newpath.".bak";
     if (-e $newpath) {      if (-e $newpath) {
         copy($newpath, $filebak); # errors ignored          copy($newpath, $filebak); # errors ignored
     }      }
     open my $out, '>:encoding(UTF-8)', $newpath;      if (open(my $out, $mode, $newpath)) {
     print $out $contents;          print $out $contents;
     close $out;          close $out;
               $request->print("ok\n");
     $request->print("ok\n");      } else {
           $request->print("error\nFailed to open file to save $path");
       }
     return OK;      return OK;
 }  }
   

Removed from v.1.3  
changed lines
  Added in v.1.6


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>