--- loncom/lonnet/perl/lonnet.pm 2009/03/20 21:18:26 1.976.2.7 +++ loncom/lonnet/perl/lonnet.pm 2008/12/19 17:14:08 1.980 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.976.2.7 2009/03/20 21:18:26 raeburn Exp $ +# $Id: lonnet.pm,v 1.980 2008/12/19 17:14:08 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -73,6 +73,8 @@ package Apache::lonnet; use strict; use LWP::UserAgent(); use HTTP::Date; +use Image::Magick; + # use Date::Parse; use vars qw(%perlvar %spareid %pr %prp $memcache %packagetab $tmpdir $_64bit %env %protocol); @@ -97,6 +99,8 @@ use LONCAPA::Configuration; my $readit; my $max_connection_retries = 10; # Or some such value. +my $upload_photo_form = 0; #Variable to check when user upload a photo 0=not 1=true + require Exporter; our @ISA = qw (Exporter); @@ -177,20 +181,6 @@ sub create_connection { return 0; } -sub get_server_timezone { - my ($cnum,$cdom) = @_; - my $home=&homeserver($cnum,$cdom); - if ($home ne 'no_host') { - my $cachetime = 24*3600; - my ($timezone,$cached)=&is_cached_new('servertimezone',$home); - if (defined($cached)) { - return $timezone; - } else { - my $timezone = &reply('servertimezone',$home); - return &do_cache_new('servertimezone',$home,$timezone,$cachetime); - } - } -} # -------------------------------------------------- Non-critical communication sub subreply { @@ -522,7 +512,7 @@ sub appenv { # ----------------------------------------------------- Delete from Environment sub delenv { - my ($delthis,$regexp) = @_; + my $delthis=shift; if (($delthis=~/user\.role/) || ($delthis=~/user\.priv/)) { &logthis("WARNING: ". "Attempt to delete from environment ".$delthis); @@ -535,17 +525,10 @@ sub delenv { tie(my %disk_env,'GDBM_File',$env{'user.environment'}, (&GDBM_WRITER()|&GDBM_NOLOCK()),0640)) { foreach my $key (keys(%disk_env)) { - if ($regexp) { - if ($key=~/^$delthis/) { - delete($env{$key}); - delete($disk_env{$key}); - } - } else { - if ($key=~/^\Q$delthis\E/) { - delete($env{$key}); - delete($disk_env{$key}); - } - } + if ($key=~/^$delthis/) { + delete($env{$key}); + delete($disk_env{$key}); + } } untie(%disk_env); } @@ -1248,6 +1231,7 @@ sub inst_userrules { sub get_domain_defaults { my ($domain) = @_; my $cachetime = 60*60*24; + my ($defauthtype,$defautharg,$deflang,%deftools); my ($result,$cached)=&is_cached_new('domdefaults',$domain); if (defined($cached)) { if (ref($result) eq 'HASH') { @@ -1261,8 +1245,6 @@ sub get_domain_defaults { $domdefaults{'lang_def'} = $domconfig{'defaults'}{'lang_def'}; $domdefaults{'auth_def'} = $domconfig{'defaults'}{'auth_def'}; $domdefaults{'auth_arg_def'} = $domconfig{'defaults'}{'auth_arg_def'}; - $domdefaults{'timezone_def'} = $domconfig{'defaults'}{'timezone_def'}; - $domdefaults{'datelocale_def'} = $domconfig{'defaults'}{'datelocale_def'}; } else { $domdefaults{'lang_def'} = &domain($domain,'lang_def'); $domdefaults{'auth_def'} = &domain($domain,'auth_def'); @@ -2033,6 +2015,14 @@ sub clean_filename { return $fname; } +#Wrapper function for userphotoupload +sub userphotoupload +{ + my($formname,$subdir) = @_; + $upload_photo_form = 1; + return &userfileupload($formname,undef,$subdir); +} + # --------------- Take an uploaded file and put it into the userfiles directory # input: $formname - the contents of the file are in $env{"form.$formname"} # the desired filenam is in $env{"form.$formname.filename"} @@ -2159,6 +2149,25 @@ sub finishuserfileupload { return '/adm/notfound.html'; } close(FH); + if($upload_photo_form==1) + { + my $ima = Image::Magick->new; + $ima->Read($filepath.'/'.$file); + if($ima->Get('width') > 300) + { + my $factor = $ima->Get('width')/300; + $ima->Scale( width=>300, height=>$ima->Get('height')/$factor ); + } + if($ima->Get('height') > 400) + { + my $factor = $ima->Get('height')/400; + $ima->Scale( width=>$ima->Get('width')/$factor, height=>400); + } + + + $ima->Write($filepath.'/'.$file); + $upload_photo_form = 0; + } } if ($parser eq 'parse') { my $parse_result = &extract_embedded_items($filepath.'/'.$file,$allfiles, @@ -4414,7 +4423,7 @@ sub usertools_access { if (($udom eq $env{'user.domain'}) && ($uname eq $env{'user.name'})) { if ($action ne 'reload') { return $env{'environment.availabletools.'.$tool}; - } + } } my ($toolstatus,$inststatus); @@ -9235,11 +9244,9 @@ in the user's environment.db and in %env =item * X -B: removes all items from the session -environment file that begin with $delthis. If the -optional second arg - $regexp - is true, $delthis is treated as a -regular expression, otherwise \Q$delthis\E is used. -The values are also deleted from the current processes %env. +B: removes all items from the session +environment file that matches the regular expression in $regexp. The +values are also delted from the current processes %env. =item * get_env_multiple($name)