[LON-CAPA-cvs] cvs: loncom(version_2_8_X) /auth lonacc.pm
raeburn
raeburn@source.lon-capa.org
Wed, 10 Dec 2008 16:42:51 -0000
raeburn Wed Dec 10 16:42:51 2008 EDT
Modified files: (Branch: version_2_8_X)
/loncom/auth lonacc.pm
Log:
- Backport 1.118, 1.122
Index: loncom/auth/lonacc.pm
diff -u loncom/auth/lonacc.pm:1.116 loncom/auth/lonacc.pm:1.116.2.1
--- loncom/auth/lonacc.pm:1.116 Mon Sep 15 19:08:44 2008
+++ loncom/auth/lonacc.pm Wed Dec 10 16:42:51 2008
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Cookie Based Access Handler
#
-# $Id: lonacc.pm,v 1.116 2008/09/15 19:08:44 raeburn Exp $
+# $Id: lonacc.pm,v 1.116.2.1 2008/12/10 16:42:51 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -90,16 +90,26 @@
if ($lines[$i]=~/^--\Q$contentsep\E/) {
if ($name) {
chomp($value);
+ if (ref($fields) eq 'ARRAY') {
+ next if (!grep(/^\Q$name\E$/,@{$fields}));
+ }
if ($fname) {
- $env{"form.$name.filename"}=$fname;
- $env{"form.$name.mimetype"}=$fmime;
+ if ($env{'form.symb'} ne '') {
+ my $size = (length($value))/(1024.0 * 1024.0);
+ if (&upload_size_allowed($name,$size,$fname) eq 'ok') {
+ $env{"form.$name.filename"}=$fname;
+ $env{"form.$name.mimetype"}=$fmime;
+ &Apache::loncommon::add_to_env("form.$name",$value);
+ }
+ } else {
+ $env{"form.$name.filename"}=$fname;
+ $env{"form.$name.mimetype"}=$fmime;
+ &Apache::loncommon::add_to_env("form.$name",$value);
+ }
} else {
$value=~s/\s+$//s;
+ &Apache::loncommon::add_to_env("form.$name",$value);
}
- if (ref($fields) eq 'ARRAY') {
- next if (!grep(/^\Q$name\E$/,@{$fields}));
- }
- &Apache::loncommon::add_to_env("form.$name",$value);
}
if ($i<$#lines) {
$i++;
@@ -145,6 +155,34 @@
$r->headers_in->unset('Content-length');
}
+#
+# Perform size checks for file uploads to essayresponse items in course context.
+#
+# Add form.HWFILESIZE.$part_$id to %env with file size (MB)
+# If file exceeds maximum allowed size, add form.HWFILETOOBIG.$part_$id to %env.
+#
+
+sub upload_size_allowed {
+ my ($name,$size,$fname) = @_;
+ if ($name =~ /^HWFILE(\w+)$/) {
+ my $ident = $1;
+ my $item = 'HWFILESIZE'.$ident;
+ my $savesize = sprintf("%.6f",$size);
+ &Apache::loncommon::add_to_env("form.$item",$savesize);
+ my $maxsize= &Apache::lonnet::EXT("resource.$ident.maxfilesize");
+ if (!$maxsize) {
+ $maxsize = 10.0; # FIXME This should become a domain configuration.
+ }
+ if ($size > $maxsize) {
+ my $warn = 'HWFILETOOBIG'.$ident;
+ &Apache::loncommon::add_to_env("form.$warn",$fname);
+ return;
+ }
+ }
+ return 'ok';
+}
+
+
# handle the case of the single sign on user, at this point $r->user
# will be set and valid now need to find the loncapa user info and possibly
# balance them