[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 @@
 }
 &register_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);
+}
+&register_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