[LON-CAPA-cvs] cvs: loncom(version_2_11_X) /interface portfolio.pm
raeburn
raeburn at source.lon-capa.org
Fri Sep 14 17:01:02 EDT 2018
raeburn Fri Sep 14 21:01:02 2018 EDT
Modified files: (Branch: version_2_11_X)
/loncom/interface portfolio.pm
Log:
- For 2.11
Backport 1.259
Index: loncom/interface/portfolio.pm
diff -u loncom/interface/portfolio.pm:1.254.2.2 loncom/interface/portfolio.pm:1.254.2.3
--- loncom/interface/portfolio.pm:1.254.2.2 Fri May 19 23:41:52 2017
+++ loncom/interface/portfolio.pm Fri Sep 14 21:01:02 2018
@@ -1,7 +1,7 @@
# The LearningOnline Network
# portfolio browser
#
-# $Id: portfolio.pm,v 1.254.2.2 2017/05/19 23:41:52 raeburn Exp $
+# $Id: portfolio.pm,v 1.254.2.3 2018/09/14 21:01:02 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -2598,6 +2598,45 @@
return $state;
}
+sub valid_container {
+ my ($uname,$udom,$group) = @_;
+ my $container_prefix;
+ if ($group ne '') {
+ $container_prefix = "/uploaded/$udom/$uname/groups/$group/portfolio";
+ } else {
+ $container_prefix = "/uploaded/$udom/$uname/portfolio";
+ }
+ if ($env{'form.currentpath'}) {
+ $container_prefix .= $env{'form.currentpath'};
+ } else {
+ $container_prefix .= '/';
+ }
+ if ($env{'form.container'} =~ m{^\Q$container_prefix\E(.+)$}) {
+ my $filename = $1;
+ if ($filename eq &Apache::lonnet::clean_filename($filename)) {
+ return 1;
+ }
+ }
+ return;
+}
+
+sub invalid_parms {
+ my ($r,$url,$currentpath) = @_;
+ my $escpath = &HTML::Entities::encode($currentpath,'&<>"');
+ my $rtnlink = '<a href="'.$url;
+ if ($url =~ /\?/) {
+ $rtnlink .= '&';
+ } else {
+ $rtnlink .= '?';
+ }
+ $rtnlink .= 'currentpath='.$escpath;
+ $rtnlink .= '">'.&mt('Return to directory').'</a>';
+ $r->print('<h3>'.&mt('Action disallowed').'</h3>');
+ $r->print(&mt('Some of the data included with this request were invalid'));
+ $r->print('<br />'.$rtnlink);
+ return;
+}
+
sub handler {
# this handles file management
my $r = shift;
@@ -2744,6 +2783,21 @@
return OK;
}
}
+ if (($env{'form.currentpath'}) && ($env{'form.currentpath'} ne '/')) {
+ my $clean_currentpath = '/'.&Apache::loncommon::clean_path($env{'form.currentpath'}).'/';
+ unless ($env{'form.currentpath'} eq $clean_currentpath) {
+ &invalid_parms($r,$url);
+ $r->print(&Apache::loncommon::end_page());
+ return OK;
+ }
+ }
+ if ($env{'form.container'}) {
+ unless (&valid_container($uname,$udom,$group)) {
+ &invalid_parms($r,$url,$env{'form.currentpath'});
+ $r->print(&Apache::loncommon::end_page());
+ return OK;
+ }
+ }
if (($env{'form.storeupl'}) & (!$env{'form.uploaddoc.filename'})){
$r->print(
'<p><span class="LC_warning">'
More information about the LON-CAPA-cvs
mailing list