[LON-CAPA-cvs] cvs: loncom / lond
raeburn
lon-capa-cvs-allow@mail.lon-capa.org
Wed, 25 Jul 2007 22:52:13 -0000
raeburn Wed Jul 25 18:52:13 2007 EDT
Modified files:
/loncom lond
Log:
- Add subroutine: inst_dirsrch_handler() to access localenroll::get_userinfo() used for searches of institutional directory information.
- Incoming $tail argument (2nd argument) includes : separated domain, srchby, srchterm and srchtype (middle two escaped).
- srchby can be: uname,lastname or lastfirst (username, lastname or lastname,firstname) respectively.
- srchtype can be exact or contains.
- srchterm is string being searched for.
Index: loncom/lond
diff -u loncom/lond:1.375 loncom/lond:1.376
--- loncom/lond:1.375 Mon Jun 18 18:49:52 2007
+++ loncom/lond Wed Jul 25 18:52:07 2007
@@ -2,7 +2,7 @@
# The LearningOnline Network
# lond "LON Daemon" Server (port "LOND" 5663)
#
-# $Id: lond,v 1.375 2007/06/18 22:49:52 albertel Exp $
+# $Id: lond,v 1.376 2007/07/25 22:52:07 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -59,7 +59,7 @@
my $status='';
my $lastlog='';
-my $VERSION='$Revision: 1.375 $'; #' stupid emacs
+my $VERSION='$Revision: 1.376 $'; #' stupid emacs
my $remoteVERSION;
my $currenthostid="default";
my $currentdomainid;
@@ -4640,6 +4640,30 @@
}
®ister_handler("inst_usertypes", \&inst_usertypes_handler, 0, 1, 0);
+sub inst_dirsrch_handler {
+ my ($cmd, $tail, $client) = @_;
+ my ($domain,$srchby,$srchterm,$srchtype) = split(/:/, $tail);
+ $srchby = &unescape($srchby);
+ $srchterm = &unescape($srchterm);
+ my $userinput = $cmd.":".$tail; # For logging purposes.
+ my (%instusers,%instids,$result,$res);
+ eval {
+ local($SIG{__DIE__})='DEFAULT';
+ $result=&localenroll::get_userinfo($domain,undef,undef,\%instusers,\%instids,undef,$srchby,$srchterm,$srchtype);
+ };
+ if ($result eq 'ok') {
+ if (keys(%instusers) > 0) {
+ foreach my $key (keys(%instusers)) {
+ my $usrstr = &Apache::lonnet::hash2str(%{$instusers{$key}});
+ $res.=&escape($key).'='.&escape($usrstr).'&';
+ }
+ }
+ $res=~s/\&$//;
+ }
+ &Reply($client, "$res\n", $userinput);
+}
+®ister_handler("instdirsrch", \&inst_dirsrch_handler, 0, 1, 0);
+
# mkpath makes all directories for a file, expects an absolute path with a
# file or a trailing / if just a dir is passed
# returns 1 on success 0 on failure