--- loncom/Lond.pm 2018/09/02 01:58:30 1.8.2.1 +++ loncom/Lond.pm 2022/01/19 16:47:51 1.8.2.3 @@ -1,6 +1,6 @@ # The LearningOnline Network # -# $Id: Lond.pm,v 1.8.2.1 2018/09/02 01:58:30 raeburn Exp $ +# $Id: Lond.pm,v 1.8.2.3 2022/01/19 16:47:51 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -239,10 +239,10 @@ sub check_homecourses { } } unless (&untie_domain_hash($hashref)) { - &logthis("Failed to untie tied hash for nohist_courseids.db for $domain"); + &Apache::lonnet::logthis("Failed to untie tied hash for nohist_courseids.db for $domain"); } } else { - &logthis("Failed to tie hash for nohist_courseids.db for $domain"); + &Apache::lonnet::logthis("Failed to tie hash for nohist_courseids.db for $domain"); } } foreach my $hashid (keys(%recent)) { @@ -314,9 +314,9 @@ sub get_courseinfo_hash { }; if ($@) { if ($@ eq "timeout\n") { - &logthis("WARNING courseiddump for $cnum:$cdom from $home timedout"); + &Apache::lonnet::logthis("WARNING courseiddump for $cnum:$cdom from $home timedout"); } else { - &logthis("WARNING unexpected error during eval of call for courseiddump from $home"); + &Apache::lonnet::logthis("WARNING unexpected error during eval of call for courseiddump from $home"); } } else { if (ref($info{$cdom.'_'.$cnum}) eq 'HASH') { @@ -802,15 +802,34 @@ sub is_course { } &Apache::lonnet::do_cache_new('iscourse',$hashid,$iscourse,3600); unless (&untie_domain_hash($hashref)) { - &logthis("Failed to untie tied hash for nohist_courseids.db for $cdom"); + &Apache::lonnet::logthis("Failed to untie tied hash for nohist_courseids.db for $cdom"); } } else { - &logthis("Failed to tie hash for nohist_courseids.db for $cdom"); + &Apache::lonnet::logthis("Failed to tie hash for nohist_courseids.db for $cdom"); } } return $iscourse; } +sub get_dom { + my ($userinput) = @_; + my ($cmd,$udom,$namespace,$what) =split(/:/,$userinput,4); + my $hashref = &tie_domain_hash($udom,$namespace,&GDBM_READER()) or + return "error: ".($!+0)." tie(GDBM) Failed while attempting $cmd"; + my $qresult=''; + if (ref($hashref)) { + chomp($what); + my @queries=split(/\&/,$what); + for (my $i=0;$i<=$#queries;$i++) { + $qresult.="$hashref->{$queries[$i]}&"; + } + $qresult=~s/\&$//; + } + &untie_user_hash($hashref) or + return "error: ".($!+0)." untie(GDBM) Failed while attempting $cmd"; + return $qresult; +} + 1; __END__ @@ -933,7 +952,18 @@ courseID -- for the course for which the The contents of the inner hash, for that single item in the outer hash are returned (and cached in memcache for 10 minutes). +=item get_dom ( $userinput ) +get_dom() will retrieve domain configuration information from a GDBM file +in /home/httpd/lonUsers/$dom on the primary library server in a domain. +The single argument passed is the string: $cmd:$udom:$namespace:$what +where $cmd is the command historically passed to lond - i.e., getdom +or egetdom, $udom is the domain, $namespace is the name of the GDBM file +(encconfig or configuration), and $what is a string containing names of +items to retrieve from the db file (each item name is escaped and separated +from the next item name with an ampersand). The return value is either: +error: followed by an error message, or a string containing the value (escaped) +for each item, again separated from the next item with an ampersand. =back