--- loncom/lonnet/perl/lonnet.pm	2006/04/06 19:19:11	1.683.2.20
+++ loncom/lonnet/perl/lonnet.pm	2006/01/10 21:41:39	1.694
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # TCP networking package
 #
-# $Id: lonnet.pm,v 1.683.2.20 2006/04/06 19:19:11 albertel Exp $
+# $Id: lonnet.pm,v 1.694 2006/01/10 21:41:39 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -272,8 +272,6 @@ sub transfer_profile_to_env {
     for ($envi=0;$envi<=$#profile;$envi++) {
 	chomp($profile[$envi]);
 	my ($envname,$envvalue)=split(/=/,$profile[$envi],2);
-	$envname=&unescape($envname);
-	$envvalue=&unescape($envvalue);
 	$env{$envname} = $envvalue;
         if (my ($key,$time) = ($envname =~ /^(cgi\.(\d+)_\d+\.)/)) {
             if ($time < time-300) {
@@ -291,14 +289,14 @@ sub transfer_profile_to_env {
 
 sub appenv {
     my %newenv=@_;
-    foreach (keys %newenv) {
-	if (($newenv{$_}=~/^user\.role/) || ($newenv{$_}=~/^user\.priv/)) {
+    foreach my $key (keys(%newenv)) {
+	if (($newenv{$key}=~/^user\.role/) || ($newenv{$key}=~/^user\.priv/)) {
             &logthis("<font color=\"blue\">WARNING: ".
-                "Attempt to modify environment ".$_." to ".$newenv{$_}
+                "Attempt to modify environment ".$key." to ".$newenv{$key}
                 .'</font>');
-	    delete($newenv{$_});
+	    delete($newenv{$key});
         } else {
-            $env{$_}=$newenv{$_};
+            $env{$key}=$newenv{$key};
         }
     }
 
@@ -326,8 +324,6 @@ sub appenv {
         chomp($oldenv[$i]);
         if ($oldenv[$i] ne '') {
 	    my ($name,$value)=split(/=/,$oldenv[$i],2);
-	    $name=&unescape($name);
-	    $value=&unescape($value);
 	    unless (defined($newenv{$name})) {
 		$newenv{$name}=$value;
 	    }
@@ -340,7 +336,7 @@ sub appenv {
 	}
 	my $newname;
 	foreach $newname (keys %newenv) {
-	    print $fh &escape($newname).'='.&escape($newenv{$newname})."\n";
+	    print $fh "$newname=$newenv{$newname}\n";
 	}
 	close($fh);
     }
@@ -352,6 +348,7 @@ sub appenv {
 
 sub delenv {
     my $delthis=shift;
+    my %newenv=();
     if (($delthis=~/user\.role/) || ($delthis=~/user\.priv/)) {
         &logthis("<font color=\"blue\">WARNING: ".
                 "Attempt to delete from environment ".$delthis);
@@ -384,10 +381,8 @@ sub delenv {
 	    return 'error: '.$!;
 	}
 	foreach my $cur_key (@oldenv) {
-	    my $unescaped_cur_key = &unescape($cur_key);
-	    if ($unescaped_cur_key=~/^$delthis/) { 
-                my ($key) = split('=',$cur_key,2);
-		$key = &unescape($key);
+	    if ($cur_key=~/^$delthis/) { 
+                my ($key,undef) = split('=',$cur_key,2);
                 delete($env{$key});
             } else {
                 print $fh $cur_key; 
@@ -952,50 +947,13 @@ sub userenvironment {
 sub studentphoto {
     my ($udom,$unam,$ext) = @_;
     my $home=&Apache::lonnet::homeserver($unam,$udom);
-    if (defined($env{'request.course.id'})) {
-        if ($env{'course.'.$env{'request.course.id'}.'.internal.showphoto'}) {
-            if ($udom eq $env{'course.'.$env{'request.course.id'}.'.domain'}) {
-                return(&retrievestudentphoto($udom,$unam,$ext)); 
-            } else {
-                my ($result,$perm_reqd)=
-		    &Apache::lonnet::auto_photo_permission($unam,$udom);
-                if ($result eq 'ok') {
-                    if (!($perm_reqd eq 'yes')) {
-                        return(&retrievestudentphoto($udom,$unam,$ext));
-                    }
-                }
-            }
-        }
-    } else {
-        my ($result,$perm_reqd) = 
-	    &Apache::lonnet::auto_photo_permission($unam,$udom);
-        if ($result eq 'ok') {
-            if (!($perm_reqd eq 'yes')) {
-                return(&retrievestudentphoto($udom,$unam,$ext));
-            }
-        }
-    }
-    return '/adm/lonKaputt/lonlogo_broken.gif';
-}
-
-sub retrievestudentphoto {
-    my ($udom,$unam,$ext,$type) = @_;
-    my $home=&Apache::lonnet::homeserver($unam,$udom);
-    my $ret=&Apache::lonnet::reply("studentphoto:$udom:$unam:$ext:$type",$home);
-    if ($ret eq 'ok') {
-        my $url="/uploaded/$udom/$unam/internal/studentphoto.$ext";
-        if ($type eq 'thumbnail') {
-            $url="/uploaded/$udom/$unam/internal/studentphoto_tn.$ext"; 
-        }
-        my $tokenurl=&Apache::lonnet::tokenwrapper($url);
-        return $tokenurl;
-    } else {
-        if ($type eq 'thumbnail') {
-            return '/adm/lonKaputt/genericstudent_tn.gif';
-        } else { 
-            return '/adm/lonKaputt/lonlogo_broken.gif';
-        }
+    my $ret=&Apache::lonnet::reply("studentphoto:$udom:$unam:$ext",$home);
+    my $url="/uploaded/$udom/$unam/internal/studentphoto.".$ext;
+    if ($ret ne 'ok') {
+	return '/adm/lonKaputt/lonlogo_broken.gif';
     }
+    my $tokenurl=&Apache::lonnet::tokenwrapper($url);
+    return $tokenurl;
 }
 
 # -------------------------------------------------------------------- New chat
@@ -1322,8 +1280,15 @@ sub clean_filename {
 }
 
 # --------------- Take an uploaded file and put it into the userfiles directory
-# input: name of form element, coursedoc=1 means this is for the course
-# output: url of file in userspace
+# input: $formname - the contents of the file are in $env{"form.$formname"}
+#                    the desired filenam is in $env{"form.$formname"}
+#        $coursedoc - if true up to the current course
+#                     if false
+#        $subdir - directory in userfile to store the file into
+#        $parser, $allfiles, $codebase - unknown
+#
+# output: url of file in userspace, or error: <message> 
+#             or /adm/notfound.html if failure to upload occurse
 
 
 sub userfileupload {
@@ -3108,7 +3073,6 @@ sub customaccess {
 
 sub allowed {
     my ($priv,$uri,$symb)=@_;
-    my $ver_orguri=$uri;
     $uri=&deversion($uri);
     my $orguri=$uri;
     $uri=&declutter($uri);
@@ -3209,7 +3173,7 @@ sub allowed {
                 $thisallowed.=$1;
             }
         } else {
-            my $refuri = $env{'httpref.'.$orguri} || $env{'httpref.'.$ver_orguri};
+            my $refuri=$env{'httpref.'.$orguri};
             if ($refuri) {
                 if ($refuri =~ m|^/adm/|) {
                     $thisallowed='F';
@@ -3440,17 +3404,16 @@ sub allowed {
    return 'F';
 }
 
-sub split_uri_for_cond {
-    my $uri=&deversion(&declutter(shift));
-    my @uriparts=split(/\//,$uri);
-    my $filename=pop(@uriparts);
-    my $pathname=join('/',@uriparts);
-    return ($pathname,$filename);
-}
 # --------------------------------------------------- Is a resource on the map?
 
 sub is_on_map {
-    my ($pathname,$filename) = &split_uri_for_cond(shift);
+    my $uri=&deversion(&declutter(shift));
+    my @uriparts=split(/\//,$uri);
+    my $filename=$uriparts[$#uriparts];
+    my $pathname=$uri;
+    $pathname=~s|/\Q$filename\E$||;
+    $pathname=~s/^adm\/wrapper\///;
+    $pathname=~s/^adm\/coursedocs\/showdoc\///;
     #Trying to find the conditional for the file
     my $match=($env{'acc.res.'.$env{'request.course.id'}.'.'.$pathname}=~
 	       /\&\Q$filename\E\:([\d\|]+)\&/);
@@ -3723,82 +3686,6 @@ sub auto_create_password {
     return ($authparam,$create_passwd,$authchk);
 }
 
-sub auto_photo_permission {
-    my ($cnum,$cdom,$students) = @_;
-    my $homeserver = &homeserver($cnum,$cdom);
-    my ($outcome,$perm_reqd,$conditions) = 
-	split(/:/,&unescape(&reply('autophotopermission:'.$cdom,$homeserver)),3);
-    if ($outcome =~ /^(con_lost|unknown_cmd|no_such_host)$/) {
-	return (undef,undef);
-    }
-    return ($outcome,$perm_reqd,$conditions);
-}
-
-sub auto_checkphotos {
-    my ($uname,$udom,$pid) = @_;
-    my $homeserver = &homeserver($uname,$udom);
-    my ($result,$resulttype);
-    my $outcome = &unescape(&reply('autophotocheck:'.&escape($udom).':'.
-				   &escape($uname).':'.&escape($pid),
-				   $homeserver));
-    if ($outcome =~ /^(con_lost|unknown_cmd|no_such_host)$/) {
-	return (undef,undef);
-    }
-    if ($outcome) {
-        ($result,$resulttype) = split(/:/,$outcome);
-    } 
-    return ($result,$resulttype);
-}
-
-sub auto_photochoice {
-    my ($cnum,$cdom) = @_;
-    my $homeserver = &homeserver($cnum,$cdom);
-    my ($update,$comment) = split(/:/,&unescape(&reply('autophotochoice:'.
-						       &escape($cdom),
-						       $homeserver)));
-    if ($update =~ /^(con_lost|unknown_cmd|no_such_host)$/) {
-	return (undef,undef);
-    }
-    return ($update,$comment);
-}
-
-sub auto_photoupdate {
-    my ($affiliatesref,$dom,$cnum,$photo) = @_;
-    my $homeserver = &homeserver($cnum,$dom);
-    my $host=$hostname{$homeserver};
-    my $cmd = '';
-    my $maxtries = 1;
-    foreach (keys %{$affiliatesref}) {
-        $cmd .= $_.'='.join(",",@{$$affiliatesref{$_}}).'%%';
-    }
-    $cmd =~ s/%%$//;
-    $cmd = &escape($cmd);
-    my $query = 'institutionalphotos';
-    my $queryid=&reply("querysend:".$query.':'.$dom.':'.$cnum.':'.$cmd,$homeserver);
-    unless ($queryid=~/^\Q$host\E\_/) {
-        &logthis('institutionalphotos: invalid queryid: '.$queryid.' for host: '.$host.' and homeserver: '.$homeserver.' and course: '.$cnum);
-        return 'error: '.$queryid;
-    }
-    my $reply = &get_query_reply($queryid);
-    my $tries = 1;
-    while (($reply=~/^timeout/) && ($tries < $maxtries)) {
-        $reply = &get_query_reply($queryid);
-        $tries ++;
-    }
-    if ( ($reply =~/^timeout/) || ($reply =~/^error/) ) {
-        &logthis('institutionalphotos error: '.$reply.' for '.$dom.' '.$env{'user.name'}.' for '.$queryid.' course: '.$cnum.' maxtries: '.$maxtries.' tries: '.$tries);
-    } else {
-        my @responses = split(/:/,$reply);
-        my $outcome = shift(@responses); 
-        foreach my $item (@responses) {
-            my ($key,$value) = split(/=/,$item);
-            $$photo{$key} = $value;
-        }
-        return $outcome;
-    }
-    return 'error';
-}
-
 sub auto_instcode_format {
     my ($caller,$codedom,$instcodes,$codes,$codetitles,$cat_titles,$cat_order) = @_;
     my $courses = '';
@@ -3850,6 +3737,10 @@ sub modify_group_roles {
     my $role = 'gr/'.&escape($userprivs);
     my ($uname,$udom) = split(/:/,$user);
     my $result = &assignrole($udom,$uname,$url,$role,$end,$start);
+    if ($result eq 'ok') {
+        &devalidate_getgroups_cache($udom,$uname,$cdom,$cnum);
+    }
+
     return $result;
 }
 
@@ -4653,30 +4544,11 @@ sub GetFileTimestamp {
 
 # -------------------------------------------------------- Value of a Condition
 
-# gets the value of a specific preevaluated condition
-#    stored in the string  $env{user.state.<cid>}
-# or looks up a condition reference in the bighash and if if hasn't
-# already been evaluated recurses into docondval to get the value of
-# the condition, then memoizing it to 
-#   $env{user.state.<cid>.<condition>}
 sub directcondval {
     my $number=shift;
     if (!defined($env{'user.state.'.$env{'request.course.id'}})) {
 	&Apache::lonuserstate::evalstate();
     }
-    if (exists($env{'user.state.'.$env{'request.course.id'}.".$number"})) {
-	return $env{'user.state.'.$env{'request.course.id'}.".$number"};
-    } elsif ($number =~ /^_/) {
-	my $sub_condition;
-	if (tie(my %bighash,'GDBM_File',$env{'request.course.fn'}.'.db',
-		&GDBM_READER(),0640)) {
-	    $sub_condition=$bighash{'conditions'.$number};
-	    untie(%bighash);
-	}
-	my $value = &docondval($sub_condition);
-	&appenv('user.state.'.$env{'request.course.id'}.".$number" => $value);
-	return $value;
-    }
     if ($env{'user.state.'.$env{'request.course.id'}}) {
        return substr($env{'user.state.'.$env{'request.course.id'}},$number,1);
     } else {
@@ -4684,49 +4556,43 @@ sub directcondval {
     }
 }
 
-# get the collection of conditions for this resource
 sub condval {
     my $condidx=shift;
+    my $result=0;
     my $allpathcond='';
-    foreach my $cond (split(/\|/,$condidx)) {
-	if (defined($env{'acc.cond.'.$env{'request.course.id'}.'.'.$cond})) {
-	    $allpathcond.=
-		'('.$env{'acc.cond.'.$env{'request.course.id'}.'.'.$cond}.')|';
-	}
+    foreach (split(/\|/,$condidx)) {
+       if (defined($env{'acc.cond.'.$env{'request.course.id'}.'.'.$_})) {
+	   $allpathcond.=
+               '('.$env{'acc.cond.'.$env{'request.course.id'}.'.'.$_}.')|';
+       }
     }
     $allpathcond=~s/\|$//;
-    return &docondval($allpathcond);
-}
-
-#evaluates an expression of conditions
-sub docondval {
-    my ($allpathcond) = @_;
-    my $result=0;
-    if ($env{'request.course.id'}
-	&& defined($allpathcond)) {
-	my $operand='|';
-	my @stack;
-	foreach my $chunk ($allpathcond=~/(\d+|_\d+\.\d+|\(|\)|\&|\|)/g) {
-	    if ($chunk eq '(') {
-		push @stack,($operand,$result);
-	    } elsif ($chunk eq ')') {
-		my $before=pop @stack;
-		if (pop @stack eq '&') {
-		    $result=$result>$before?$before:$result;
-		} else {
-		    $result=$result>$before?$result:$before;
-		}
-	    } elsif (($chunk eq '&') || ($chunk eq '|')) {
-		$operand=$chunk;
-	    } else {
-		my $new=directcondval($chunk);
-		if ($operand eq '&') {
-		    $result=$result>$new?$new:$result;
-		} else {
-		    $result=$result>$new?$result:$new;
-		}
-	    }
-	}
+    if ($env{'request.course.id'}) {
+       if ($allpathcond) {
+          my $operand='|';
+	  my @stack;
+           foreach ($allpathcond=~/(\d+|\(|\)|\&|\|)/g) {
+              if ($_ eq '(') {
+                 push @stack,($operand,$result)
+              } elsif ($_ eq ')') {
+                  my $before=pop @stack;
+		  if (pop @stack eq '&') {
+		      $result=$result>$before?$before:$result;
+                  } else {
+                      $result=$result>$before?$result:$before;
+                  }
+              } elsif (($_ eq '&') || ($_ eq '|')) {
+                  $operand=$_;
+              } else {
+                  my $new=directcondval($_);
+                  if ($operand eq '&') {
+                     $result=$result>$new?$new:$result;
+                  } else {
+                     $result=$result>$new?$result:$new;
+                  }
+              }
+          }
+       }
     }
     return $result;
 }
@@ -4958,10 +4824,21 @@ sub EXT {
         return $env{'course.'.$courseid.'.'.$spacequalifierrest};
     } elsif ($realm eq 'resource') {
 
-	my $section;
 	if (defined($courseid) && $courseid eq $env{'request.course.id'}) {
 	    if (!$symbparm) { $symbparm=&symbread(); }
 	}
+
+	if ($space eq 'title') {
+	    if (!$symbparm) { $symbparm = $env{'request.filename'}; }
+	    return &gettitle($symbparm);
+	}
+	
+	if ($space eq 'map') {
+	    my ($map) = &decode_symb($symbparm);
+	    return &symbread($map);
+	}
+
+	my ($section, $group, @groups);
 	my ($courselevelm,$courselevel);
 	if ($symbparm && defined($courseid) && 
 	    $courseid eq $env{'request.course.id'}) {
@@ -4978,12 +4855,20 @@ sub EXT {
 	    if (($env{'user.name'} eq $uname) &&
 		($env{'user.domain'} eq $udom)) {
 		$section=$env{'request.course.sec'};
+                @groups=&sort_course_groups($env{'request.course.groups'},$courseid); 
+                if (@groups > 0) {
+                    @groups = sort(@groups);
+                }
 	    } else {
 		if (! defined($usection)) {
 		    $section=&getsection($udom,$uname,$courseid);
 		} else {
 		    $section = $usection;
 		}
+                my $grouplist = &get_users_groups($udom,$uname,$courseid);
+                if ($grouplist) {
+                    @groups=&sort_course_groups($grouplist,$courseid);
+                }
 	    }
 
 	    my $seclevel=$courseid.'.['.$section.'].'.$spacequalifierrest;
@@ -4999,12 +4884,17 @@ sub EXT {
 	    my $userreply=&resdata($uname,$udom,'user',
 				       ($courselevelr,$courselevelm,
 					$courselevel));
-
 	    if (defined($userreply)) { return $userreply; }
 
 # ------------------------------------------------ second, check some of course
+            my $coursereply;
+            if (@groups > 0) {
+                $coursereply = &check_group_parms($courseid,\@groups,$symbparm,
+                                       $mapparm,$spacequalifierrest);
+                if (defined($coursereply)) { return $coursereply; }
+            }
 
-	    my $coursereply=&resdata($env{'course.'.$courseid.'.num'},
+	    $coursereply=&resdata($env{'course.'.$courseid.'.num'},
 				     $env{'course.'.$courseid.'.domain'},
 				     'course',
 				     ($seclevelr,$seclevelm,$seclevel,
@@ -5075,15 +4965,36 @@ sub EXT {
 	if ($space eq 'time') {
 	    return time;
         }
-    } elsif ($realm eq 'server') {
-# ----------------------------------------------------------------- system.time
-	if ($space eq 'name') {
-	    return $ENV{'SERVER_NAME'};
-        }
     }
     return '';
 }
 
+sub check_group_parms {
+    my ($courseid,$groups,$symbparm,$mapparm,$what) = @_;
+    my @groupitems = ();
+    my $resultitem;
+    my @levels = ($symbparm,$mapparm,$what);
+    foreach my $group (@{$groups}) {
+        foreach my $level (@levels) {
+             my $item = $courseid.'.['.$group.'].'.$level;
+             push(@groupitems,$item);
+        }
+    }
+    my $coursereply = &resdata($env{'course.'.$courseid.'.num'},
+                            $env{'course.'.$courseid.'.domain'},
+                                     'course',@groupitems);
+    return $coursereply;
+}
+
+sub sort_course_groups { # Sort groups based on defined rankings. Default is sort().
+    my ($grouplist,$courseid) = @_;
+    my @groups = split/:/,$grouplist;
+    if (@groups > 1) {
+        @groups = sort(@groups);
+    }
+    return @groups;
+}
+
 sub packages_tab_default {
     my ($uri,$varname)=@_;
     my (undef,$part,$name)=split(/\./,$varname);
@@ -5126,7 +5037,8 @@ sub metadata {
     # if it is a non metadata possible uri return quickly
     if (($uri eq '') || 
 	(($uri =~ m|^/*adm/|) && 
-	     ($uri !~ m|^adm/includes|) && ($uri !~ m|/bulletinboard$|)) ||
+	     ($uri !~ m|^adm/includes|) && ($uri !~ m|/bulletinboard$|)
+	  && ($uri !~ m|^adm/coursedocs/|) && ($uri !~ m|^adm/wrapper/|)) ||
         ($uri =~ m|/$|) || ($uri =~ m|/.meta$|) || ($uri =~ /^~/) ||
 	($uri =~ m|home/[^/]+/public_html/|)) {
 	return undef;
@@ -5311,7 +5223,7 @@ sub metadata {
 	$metaentry{':keys'}=join(',',keys %metathesekeys);
 	&metadata_generate_part0(\%metathesekeys,\%metaentry,$uri);
 	$metaentry{':allpossiblekeys'}=join(',',keys %metathesekeys);
-	&do_cache_new('meta',$uri,\%metaentry,60*60);
+	&do_cache_new('meta',$uri,\%metaentry,60*60*24);
 # this is the end of "was not already recently cached
     }
     return $metaentry{':'.$what};
@@ -5407,17 +5319,10 @@ sub get_slot {
 	$cdom=$env{'course.'.$courseid.'.domain'};
 	$cnum=$env{'course.'.$courseid.'.num'};
     }
-    my $key=join("\0",'slots',$cdom,$cnum,$which);
-    my %slotinfo;
-    if (exists($remembered{$key})) {
-	$slotinfo{$which} = $remembered{$key};
-    } else {
-	%slotinfo=&get('slots',[$which],$cdom,$cnum);
-	&Apache::lonhomework::showhash(%slotinfo);
-	my ($tmp)=keys(%slotinfo);
-	if ($tmp=~/^error:/) { return (); }
-	$remembered{$key} = $slotinfo{$which};
-    }
+    my %slotinfo=&get('slots',[$which],$cdom,$cnum);
+    &Apache::lonhomework::showhash(%slotinfo);
+    my ($tmp)=keys(%slotinfo);
+    if ($tmp=~/^error:/) { return (); }
     if (ref($slotinfo{$which}) eq 'HASH') {
 	return %{$slotinfo{$which}};
     }
@@ -6157,11 +6062,6 @@ sub filelocation {
     my ($dir,$file) = @_;
     my $location;
     $file=~ s/^\s*(\S+)\s*$/$1/; ## strip off leading and trailing spaces
-
-    if ($file =~ m-^/adm/-) {
-	$file=~s-^/adm/wrapper/-/-;
-	$file=~s-^/adm/coursedocs/showdoc/-/-;
-    }
     if ($file=~m:^/~:) { # is a contruction space reference
         $location = $file;
         $location =~ s:/~(.*?)/(.*):/home/$1/public_html/$2:;
@@ -6201,9 +6101,6 @@ sub hreflocation {
     my ($dir,$file)=@_;
     unless (($file=~m-^http://-i) || ($file=~m-^/-)) {
 	$file=filelocation($dir,$file);
-    } elsif ($file=~m-^/adm/-) {
-	$file=~s-^/adm/wrapper/-/-;
-	$file=~s-^/adm/coursedocs/showdoc/-/-;
     }
     if ($file=~m-^\Q$perlvar{'lonDocRoot'}\E-) {
 	$file=~s-^\Q$perlvar{'lonDocRoot'}\E--;
@@ -6247,10 +6144,10 @@ sub declutter {
     if ($thisfn=~m|^/enc/|) { $thisfn=&Apache::lonenc::unencrypted($thisfn); }
     $thisfn=~s/^\Q$perlvar{'lonDocRoot'}\E//;
     $thisfn=~s/^\///;
-    $thisfn=~s|^adm/wrapper/||;
-    $thisfn=~s|^adm/coursedocs/showdoc/||;
     $thisfn=~s/^res\///;
     $thisfn=~s/\?.+$//;
+    $thisfn=~s|adm/wrapper/||;
+    $thisfn=~s|adm/coursedocs/showdoc/||;
     return $thisfn;
 }
 
@@ -6262,29 +6159,19 @@ sub clutter {
        $thisfn='/res'.$thisfn; 
     }
     if ($thisfn !~m|/adm|) {
-	if ($thisfn =~ m|/ext/|) {
+	my ($ext) = ($thisfn =~ /\.(\w+)$/);
+	my $embstyle=&Apache::loncommon::fileembstyle($ext);
+	if (($embstyle eq 'img') 
+	    || ($embstyle eq 'emb')
+	    || ($embstyle eq 'wrp')) {
 	    $thisfn='/adm/wrapper'.$thisfn;
-	} else {
-	    my ($ext) = ($thisfn =~ /\.(\w+)$/);
-	    my $embstyle=&Apache::loncommon::fileembstyle($ext);
-	    if ($embstyle eq 'ssi'
-		|| ($embstyle eq 'hdn')
-		|| ($embstyle eq 'rat')
-		|| ($embstyle eq 'prv')
-		|| ($embstyle eq 'ign')) {
-		#do nothing with these
-	    } elsif (($embstyle eq 'img') 
-		|| ($embstyle eq 'emb')
-		|| ($embstyle eq 'wrp')) {
-		$thisfn='/adm/wrapper'.$thisfn;
-	    } elsif ($embstyle eq 'unk'
-		     && $thisfn!~/\.(sequence|page)$/) {
-		$thisfn='/adm/coursedocs/showdoc'.$thisfn;
-	    } else {
-		#&logthis("Got a blank emb style");
-	    }
+	} elsif ($embstyle eq 'ssi') {
+	    #do nothing with these
+	} elsif ($thisfn!~/\.(sequence|page)$/) {
+	    $thisfn='/adm/coursedocs/showdoc'.$thisfn;
 	}
     }
+
     return $thisfn;
 }
 
@@ -6428,7 +6315,7 @@ BEGIN {
     }
     close($config);
     # FIXME: dev server don't want this, production servers _do_ want this
-    &get_iphost();
+    #&get_iphost();
 }
 
 sub get_iphost {