[LON-CAPA-cvs] cvs: loncom(version_2_11_X) / lond

raeburn raeburn at source.lon-capa.org
Sun Jun 20 12:24:09 EDT 2021


raeburn		Sun Jun 20 16:24:09 2021 EDT

  Modified files:              (Branch: version_2_11_X)
    /loncom	lond 
  Log:
  - For 2.11
    Backport 1.566 (part), 1.567 (part)
  
  
Index: loncom/lond
diff -u loncom/lond:1.489.2.40 loncom/lond:1.489.2.41
--- loncom/lond:1.489.2.40	Wed Feb 10 15:05:51 2021
+++ loncom/lond	Sun Jun 20 16:24:09 2021
@@ -2,7 +2,7 @@
 # The LearningOnline Network
 # lond "LON Daemon" Server (port "LOND" 5663)
 #
-# $Id: lond,v 1.489.2.40 2021/02/10 15:05:51 raeburn Exp $
+# $Id: lond,v 1.489.2.41 2021/06/20 16:24:09 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -63,7 +63,7 @@
 my $status='';
 my $lastlog='';
 
-my $VERSION='$Revision: 1.489.2.40 $'; #' stupid emacs
+my $VERSION='$Revision: 1.489.2.41 $'; #' stupid emacs
 my $remoteVERSION;
 my $currenthostid="default";
 my $currentdomainid;
@@ -5501,6 +5501,39 @@
 }
 &register_handler("autovalidateinstcode", \&validate_instcode_handler, 0, 1, 0);
 
+#
+#  Validate co-owner for cross-listed institutional code and
+#  institutional course code itself used for a LON-CAPA course.
+#
+# Formal Parameters:
+#   $cmd          - The command request that got us dispatched.
+#   $tail         - The tail of the command.  In this case,
+#                   this is a colon separated string containing:
+#      $dom            - Course's LON-CAPA domain
+#      $instcode       - Institutional course code for the course
+#      $inst_xlist     - Institutional course Id for the crosslisting
+#      $coowner        - Username of co-owner
+#      (values for all but $dom have been escaped).
+#
+#   $client       - Socket open on the client.
+# Returns:
+#    1           - Indicating processing should continue.
+#
+sub validate_instcrosslist_handler  {
+    my ($cmd, $tail, $client) = @_;
+    my $userinput = "$cmd:$tail";
+    my ($dom,$instcode,$inst_xlist,$coowner) = split(/:/,$tail);
+    $instcode = &unescape($instcode);
+    $inst_xlist = &unescape($inst_xlist);
+    $coowner = &unescape($coowner);
+    my $outcome = &localenroll::validate_crosslist_access($dom,$instcode,
+                                                          $inst_xlist,$coowner);
+    &Reply($client, \$outcome, $userinput);
+
+    return 1;
+}
+&register_handler("autovalidateinstcrosslist", \&validate_instcrosslist_handler, 0, 1, 0);
+
 #   Get the official sections for which auto-enrollment is possible.
 #   Since the admin people won't know about 'unofficial sections' 
 #   we cannot auto-enroll on them.
@@ -5625,6 +5658,62 @@
 &register_handler("autovalidateclass_sec", \&validate_class_access_handler, 0, 1, 0);
 
 #
+#    Modify institutional sections (using customized &instsec_reformat()
+#    routine in localenroll.pm), to either clutter or declutter, for
+#    purposes of ensuring an institutional course section (string) can
+#    be unambiguously separated into institutional course and section.
+#
+# Formal Parameters:
+#    $cmd     - The command request that got us dispatched.
+#    $tail    - The tail of the command.   In this case this is a colon separated
+#               set of values that will be split into:
+#               $cdom        - The LON-CAPA domain of the course.
+#               $action      - Either: clutter or declutter
+#                              clutter adds character(s) to eliminate ambiguity
+#                              declutter removes the added characters (e.g., for
+#                              display of the institutional course section string.
+#               $info        - A frozen hash in which keys are:
+#                              LON-CAPA course number:Institutional course code
+#                              and values are a reference to an array of the
+#                              items to modify -- either institutional sections,
+#                              or institutional course sections (for crosslistings).
+#    $client  - The socket open on the client.
+# Returns:
+#    1 - continue processing.
+#
+
+sub instsec_reformat_handler {
+    my ($cmd, $tail, $client) = @_;
+    my $userinput = "$cmd:$tail";
+    my ($cdom,$action,$info) = split(/:/,$tail);
+    my $instsecref = &Apache::lonnet::thaw_unescape($info);
+    my ($outcome,$result);
+    eval {
+        local($SIG{__DIE__})='DEFAULT';
+        $outcome=&localenroll::instsec_reformat($cdom,$action,$instsecref);
+        if ($outcome eq 'ok') {
+            if (ref($instsecref) eq 'HASH') {
+                foreach my $key (keys(%{$instsecref})) {
+                    $result .= &escape($key).'='.&Apache::lonnet::freeze_escape($instsecref->{$key}).'&';
+                }
+                $result =~ s/\&$//;
+            }
+        }
+    };
+    if (!$@) {
+        if ($outcome eq 'ok') {
+            &Reply( $client, \$result, $userinput);
+        } else {
+            &Reply($client,\$outcome, $userinput);
+        }
+    } else {
+        &Failure($client,"unknown_cmd\n",$userinput);
+    }
+    return 1;
+}
+&register_handler("autoinstsecreformat",\&instsec_reformat_handler, 0, 1, 0);
+
+#
 #   Validate course owner or co-owners(s) access to enrollment data for all sections
 #   and crosslistings for a particular course.
 #




More information about the LON-CAPA-cvs mailing list