version 1.267.4.2, 2002/08/30 19:11:28
|
version 1.276, 2002/08/30 18:36:03
|
Line 761 sub userfileupload {
|
Line 761 sub userfileupload {
|
$docudom=$ENV{'user.domain'}; |
$docudom=$ENV{'user.domain'}; |
$docuhome=$ENV{'user.home'}; |
$docuhome=$ENV{'user.home'}; |
} |
} |
|
return |
|
&finishuserfileupload($docuname,$docudom,$docuhome,$formname,$fname); |
|
} |
|
|
|
sub finishuserfileupload { |
|
my ($docuname,$docudom,$docuhome,$formname,$fname)=@_; |
my $path=$docudom.'/'.$docuname.'/'; |
my $path=$docudom.'/'.$docuname.'/'; |
my $filepath=$perlvar{'lonDocRoot'}; |
my $filepath=$perlvar{'lonDocRoot'}; |
my @parts=split(/\//,$filepath.'/userfiles/'.$path); |
my @parts=split(/\//,$filepath.'/userfiles/'.$path); |
Line 1435 sub coursedescription {
|
Line 1441 sub coursedescription {
|
while (my ($name,$value) = each %returnhash) { |
while (my ($name,$value) = each %returnhash) { |
$envhash{'course.'.$normalid.'.'.$name}=$value; |
$envhash{'course.'.$normalid.'.'.$name}=$value; |
} |
} |
$returnhash{'url'}='/res/'.declutter($returnhash{'url'}); |
$returnhash{'url'}=&clutter($returnhash{'url'}); |
$returnhash{'fn'}=$perlvar{'lonDaemons'}.'/tmp/'. |
$returnhash{'fn'}=$perlvar{'lonDaemons'}.'/tmp/'. |
$ENV{'user.name'}.'_'.$cdomain.'_'.$cnum; |
$ENV{'user.name'}.'_'.$cdomain.'_'.$cnum; |
$envhash{'course.'.$normalid.'.last_cache'}=time; |
$envhash{'course.'.$normalid.'.last_cache'}=time; |
Line 1563 sub get {
|
Line 1569 sub get {
|
|
|
my $rep=&reply("get:$udomain:$uname:$namespace:$items",$uhome); |
my $rep=&reply("get:$udomain:$uname:$namespace:$items",$uhome); |
my @pairs=split(/\&/,$rep); |
my @pairs=split(/\&/,$rep); |
|
if ( $#pairs==0 && $pairs[0] =~ /^(con_lost|error|no_such_host)/i) { |
|
return @pairs; |
|
} |
my %returnhash=(); |
my %returnhash=(); |
my $i=0; |
my $i=0; |
foreach (@$storearr) { |
foreach (@$storearr) { |
Line 2137 sub modifyuserauth {
|
Line 2146 sub modifyuserauth {
|
my $uhome=&homeserver($uname,$udom); |
my $uhome=&homeserver($uname,$udom); |
unless (&allowed('mau',$udom)) { return 'refused'; } |
unless (&allowed('mau',$udom)) { return 'refused'; } |
&logthis('Call to modify user authentication '.$udom.', '.$uname.', '. |
&logthis('Call to modify user authentication '.$udom.', '.$uname.', '. |
$umode.' by '.$ENV{'user.name'}.' at '.$ENV{'user.domain'}); |
$umode.' by '.$ENV{'user.name'}.' at '.$ENV{'user.domain'}. |
|
' in domain '.$ENV{'request.role.domain'}); |
my $reply=&reply('encrypt:changeuserauth:'.$udom.':'.$uname.':'.$umode.':'. |
my $reply=&reply('encrypt:changeuserauth:'.$udom.':'.$uname.':'.$umode.':'. |
&escape($upass),$uhome); |
&escape($upass),$uhome); |
&log($ENV{'user.domain'},$ENV{'user.name'},$ENV{'user.home'}, |
&log($ENV{'user.domain'},$ENV{'user.name'},$ENV{'user.home'}, |
Line 2168 sub modifyuser {
|
Line 2178 sub modifyuser {
|
$last.', '.$gene.'(forceid: '.$forceid.')'. |
$last.', '.$gene.'(forceid: '.$forceid.')'. |
(defined($desiredhome) ? ' desiredhome = '.$desiredhome : |
(defined($desiredhome) ? ' desiredhome = '.$desiredhome : |
' desiredhome not specified'). |
' desiredhome not specified'). |
' by '.$ENV{'user.name'}.' at '.$ENV{'user.domain'}); |
' by '.$ENV{'user.name'}.' at '.$ENV{'user.domain'}. |
|
' in domain '.$ENV{'request.role.domain'}); |
my $uhome=&homeserver($uname,$udom,'true'); |
my $uhome=&homeserver($uname,$udom,'true'); |
# ----------------------------------------------------------------- Create User |
# ----------------------------------------------------------------- Create User |
if (($uhome eq 'no_host') && ($umode) && ($upass)) { |
if (($uhome eq 'no_host') && ($umode) && ($upass)) { |
Line 2293 sub writecoursepref {
|
Line 2304 sub writecoursepref {
|
# ---------------------------------------------------------- Make/modify course |
# ---------------------------------------------------------- Make/modify course |
|
|
sub createcourse { |
sub createcourse { |
my ($udom,$description,$url,$course_server)=@_; |
my ($udom,$description,$url,$course_server,$nonstandard)=@_; |
$url=&declutter($url); |
$url=&declutter($url); |
my $cid=''; |
my $cid=''; |
unless (&allowed('ccc',$udom)) { |
unless (&allowed('ccc',$udom)) { |
Line 2325 sub createcourse {
|
Line 2336 sub createcourse {
|
if (($uhome eq '') || ($uhome eq 'no_host')) { |
if (($uhome eq '') || ($uhome eq 'no_host')) { |
return 'error: no such course'; |
return 'error: no such course'; |
} |
} |
|
# ----------------------------------------------------------------- Course made |
|
my $topurl=$url; |
|
unless ($nonstandard) { |
|
# ------------------------------------------ For standard courses, make top url |
|
my $mapurl=&clutter($url); |
|
$ENV{'form.initmap'}=(<<ENDINITMAP); |
|
<map> |
|
<resource id="1" type="start"></resource> |
|
<resource id="2" src="$mapurl"></resource> |
|
<resource id="3" type="finish"></resource> |
|
<link index="1" from="1" to="2"></link> |
|
<link index="2" from="2" to="3"></link> |
|
</map> |
|
ENDINITMAP |
|
$topurl=&declutter( |
|
&finishuserfileupload($uname,$udom,$uhome,'initmap','default.sequence') |
|
); |
|
} |
|
# ----------------------------------------------------------- Write preferences |
&writecoursepref($udom.'_'.$uname, |
&writecoursepref($udom.'_'.$uname, |
('description' => $description, |
('description' => $description, |
'url' => $url)); |
'url' => $topurl)); |
return '/'.$udom.'/'.$uname; |
return '/'.$udom.'/'.$uname; |
} |
} |
|
|
Line 2428 sub dirlist {
|
Line 2458 sub dirlist {
|
} |
} |
} |
} |
|
|
|
# --------------------------------------------- GetFileTimestamp |
|
# This function utilizes dirlist and returns the date stamp for |
|
# when it was last modified. It will also return an error of -1 |
|
# if an error occurs |
|
|
|
sub GetFileTimestamp { |
|
my ($studentDomain,$studentName,$filename,$root)=@_; |
|
$studentDomain=~s/\W//g; |
|
$studentName=~s/\W//g; |
|
my $subdir=$studentName.'__'; |
|
$subdir =~ s/(.)(.)(.).*/$1\/$2\/$3/; |
|
my $proname="$studentDomain/$subdir/$studentName"; |
|
$proname .= '/'.$filename; |
|
my @dir = &Apache::lonnet::dirlist($proname, $studentDomain, $studentName, |
|
$root); |
|
my $fileStat = $dir[0]; |
|
my @stats = split('&', $fileStat); |
|
if($stats[0] ne 'empty' && $stats[0] ne 'no_such_dir') { |
|
return $stats[9]; |
|
} else { |
|
return -1; |
|
} |
|
} |
|
|
# -------------------------------------------------------- Value of a Condition |
# -------------------------------------------------------- Value of a Condition |
|
|
sub directcondval { |
sub directcondval { |
Line 3085 sub receipt {
|
Line 3139 sub receipt {
|
# ------------------------------------------------------------ Serves up a file |
# ------------------------------------------------------------ Serves up a file |
# returns either the contents of the file or a -1 |
# returns either the contents of the file or a -1 |
sub getfile { |
sub getfile { |
my $file=shift; |
my $file=shift; |
|
if ($file=~/^\/*uploaded\//) { # user file |
|
my $ua=new LWP::UserAgent; |
|
my $request=new HTTP::Request('GET',&tokenwrapper($file)); |
|
my $response=$ua->request($request); |
|
if ($response->is_success()) { |
|
return $response->content; |
|
} else { |
|
return -1; |
|
} |
|
} else { # normal file from res space |
&repcopy($file); |
&repcopy($file); |
if (! -e $file ) { return -1; }; |
if (! -e $file ) { return -1; }; |
my $fh=Apache::File->new($file); |
my $fh=Apache::File->new($file); |
my $a=''; |
my $a=''; |
while (<$fh>) { $a .=$_; } |
while (<$fh>) { $a .=$_; } |
return $a |
return $a; |
|
} |
} |
} |
|
|
sub filelocation { |
sub filelocation { |
Line 3101 sub filelocation {
|
Line 3166 sub filelocation {
|
if ($file=~m:^/~:) { # is a contruction space reference |
if ($file=~m:^/~:) { # is a contruction space reference |
$location = $file; |
$location = $file; |
$location =~ s:/~(.*?)/(.*):/home/$1/public_html/$2:; |
$location =~ s:/~(.*?)/(.*):/home/$1/public_html/$2:; |
|
} elsif ($file=~/^\/*uploaded/) { # is an uploaded file |
|
$location=$file; |
} else { |
} else { |
$file=~s/^$perlvar{'lonDocRoot'}//; |
$file=~s/^$perlvar{'lonDocRoot'}//; |
$file=~s:^/*res::; |
$file=~s:^/*res::; |
Line 3138 sub declutter {
|
Line 3205 sub declutter {
|
return $thisfn; |
return $thisfn; |
} |
} |
|
|
|
# ------------------------------------------------------------- Clutter up URLs |
|
|
|
sub clutter { |
|
my $thisfn='/'.&declutter(shift); |
|
unless ($thisfn=~/^\/(uploaded|adm|userfiles|ext|raw|priv)\//) { |
|
$thisfn='/res'.$thisfn; |
|
} |
|
return $thisfn; |
|
} |
|
|
# -------------------------------------------------------- Escape Special Chars |
# -------------------------------------------------------- Escape Special Chars |
|
|
sub escape { |
sub escape { |