--- loncom/lonnet/perl/lonnet.pm	2004/12/20 20:29:00	1.580
+++ loncom/lonnet/perl/lonnet.pm	2005/01/10 19:12:55	1.585
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # TCP networking package
 #
-# $Id: lonnet.pm,v 1.580 2004/12/20 20:29:00 albertel Exp $
+# $Id: lonnet.pm,v 1.585 2005/01/10 19:12:55 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1588,11 +1588,23 @@ sub courseacclog {
     my $what=$fnsymb.':'.$ENV{'user.name'}.':'.$ENV{'user.domain'};
     if ($fnsymb=~/(problem|exam|quiz|assess|survey|form|page)$/) {
         $what.=':POST';
+        # FIXME: Probably ought to escape things....
 	foreach (keys %ENV) {
             if ($_=~/^form\.(.*)/) {
 		$what.=':'.$1.'='.$ENV{$_};
             }
         }
+    } elsif ($fnsymb =~ m:^/adm/searchcat:) {
+        # FIXME: We should not be depending on a form parameter that someone
+        # editing lonsearchcat.pm might change in the future.
+        if ($ENV{'form.phase'} eq 'course_search') {
+            $what.= ':POST';
+            # FIXME: Probably ought to escape things....
+            foreach my $element ('courseexp','crsfulltext','crsrelated',
+                                 'crsdiscuss') {
+                $what.=':'.$element.'='.$ENV{'form.'.$element};
+            }
+        }
     }
     &courselog($what);
 }
@@ -3360,11 +3372,18 @@ sub auto_instcode_format {
     my $courses = '';
     my $homeserver;
     if ($caller eq 'global') {
-        $homeserver = $perlvar{'lonHostID'};
+        foreach my $tryserver (keys %libserv) {
+            if ($hostdom{$tryserver} eq $codedom) {
+                $homeserver = $tryserver;
+                last;
+            }
+        }
+        if (($ENV{'user.name'}) && ($ENV{'user.domain'} eq $codedom)) {
+            $homeserver = &homeserver($ENV{'user.name'},$codedom);
+        }
     } else {
         $homeserver = &homeserver($caller,$codedom);
     }
-    my $host=$hostname{$homeserver};
     foreach (keys %{$instcodes}) {
         $courses .= &escape($_).'='.&escape($$instcodes{$_}).'&';
     }
@@ -4431,6 +4450,7 @@ sub packages_tab_default {
 	if (defined($packagetab{"$pack_type&$name&default"})) {
 	    return $packagetab{"$pack_type&$name&default"};
 	}
+	if ($pack_type eq 'part') { $pack_part='0'; }
 	if (defined($packagetab{$pack_type."_".$pack_part."&$name&default"})) {
 	    return $packagetab{$pack_type."_".$pack_part."&$name&default"};
 	}
@@ -4790,8 +4810,11 @@ sub symbverify {
                if (
   &symbclean(&declutter($bighash{'map_id_'.$mapid}).'___'.$resid.'___'.$thisfn)
    eq $symb) { 
-                  $okay=1; 
-               }
+		   if (($ENV{'request.role.adv'}) ||
+		       $bighash{'encrypted_'.$_} eq $ENV{'request.enc'}) {
+		       $okay=1; 
+		   }
+	       }
 	   }
         }
 	untie(%bighash);
@@ -5582,6 +5605,7 @@ BEGIN {
 # ----------------------------------- Read loncapa.conf and loncapa_apache.conf
     unless ($readit) {
 {
+    # FIXME: Use LONCAPA::Configuration::read_conf here and omit next block
     open(my $config,"</etc/httpd/conf/loncapa.conf");
 
     while (my $configline=<$config>) {
@@ -6217,9 +6241,10 @@ returns the data handle
 =item *
 
 symbverify($symb,$thisfn) : verifies that $symb actually exists and is
-a possible symb for the URL in $thisfn, returns a 1 on success, 0 on
-failure, user must be in a course, as it assumes the existance of the
-course initi hash, and uses $ENV('request.course.id'}
+a possible symb for the URL in $thisfn, and if is an encryypted
+resource that the user accessed using /enc/ returns a 1 on success, 0
+on failure, user must be in a course, as it assumes the existance of
+the course initial hash, and uses $ENV('request.course.id'}
 
 
 =item *