version 1.60, 2021/03/31 02:19:58
|
version 1.63, 2022/01/14 16:27:20
|
Line 655 sub check_instclasses {
|
Line 655 sub check_instclasses {
|
return 'ok'; |
return 'ok'; |
} |
} |
|
|
|
=pod |
|
|
|
=item instsec_reformat() |
|
|
|
Inputs: $dom, $action, $instsecref |
|
|
|
$dom is the course's domain |
|
$action is either: clutter or declutter |
|
$instsecref is a reference to a hash, in which each key is |
|
course num:course code, and each value is either an array of |
|
institutional sections, or (in the case of crosslisted courses) |
|
an array of institutional course sections. |
|
|
|
Returns: ok |
|
|
|
Side effects: will modify the items in the array as determined by |
|
code implemented for the domain. Modification will differ depending |
|
on whether the action is clutter or declutter. |
|
|
|
The idea is that "clutter" will modify the name of the section such |
|
that a concatenation of institutional code then (modified) section |
|
will result in a string that other customized routines in localenroll.pm |
|
can separate without ambiguity into instituional code then (real) |
|
institutional section using a regular expression. |
|
|
|
Conversely, "declutter" will modify the name of an already modified |
|
item such that display of the concatenated string (e.g., for a |
|
crosslisting in the course catalog) does not include the "added" |
|
characters used to eliminate ambiguity. |
|
|
|
Examples (MSU): |
|
|
|
Starting in Fall 2021 at MSU, institution section numbers are no |
|
longer guaranteed to be three digit numbers (including leading zeroes). |
|
|
|
So, for example the course code: fs21phy183b might have sections: |
|
001, 002, LEC1, LEC2, and be crosslisted with fs21phy233b (with |
|
sections: 730, LEC3, LEC4). |
|
|
|
The sections: LEC1, and LEC2 should be changed to _LEC1, and _LEC2 |
|
before creating the inner keys in the %affiliates hash of a hash, |
|
passed to fetch_enrollment() in Enrollment.pm. They will however |
|
be stored in the course's environment as LEC1 and LEC2. |
|
|
|
For the crosslistings, LEC3 and LEC4 should be changed to |
|
_LEC3 and _LEC4 before storing in the course's environment.db file. |
|
|
|
In both cases when it comes time to extract the various components |
|
of an institutional section code (i.e., the concatenated string) in |
|
fetch_enrollment(), for example, the regexp used at MSU would be: |
|
|
|
if ($class =~ m/^([suf]s)(\d{2})(\w{2,4})(\d{3,4}[A-Za-z]?)(\d{3}|_[A-Za-z0-9]{1,5})$/) { |
|
my ($sem,$yr,$subj,$crse,$sec) = ($1,$2,$3,$4,$5); |
|
|
|
The three digit sections would match the \d{3} and the other sections |
|
(LEC1, LEC2 etc.) would match the _[A-Za-z0-9]{1,5}. |
|
|
|
The customization in &instsec_reformat() would be: |
|
|
|
if ($action eq 'clutter') { |
|
unless ($item =~ /^\d{3}$/) { |
|
$item = '_'.$item; |
|
} |
|
} elsif ($action eq 'declutter') { |
|
if ($item =~ /^([suf]s\d{2}\w{2,4}\d{3,4}[A-Za-z]?)(\d{3}|_[A-Za-z0-9]{1,5})$/) { |
|
my ($instcode,$instsec) = ($1,$2); |
|
$instsec =~ s/^_//; |
|
$item = $instcode.$instsec; |
|
} elsif ($item =~ /^_[A-Za-z0-9]{1,5}$/) { |
|
$item =~ s/^_//; |
|
} |
|
} |
|
|
|
=cut |
|
|
|
sub instsec_reformat { |
|
my ($dom,$action,$instsecref) = @_; |
|
if ((ref($instsecref) eq 'HASH') && |
|
(($action eq 'clutter') || ($action eq 'declutter'))) { |
|
foreach my $key (keys(%{$instsecref})) { |
|
if (ref($instsecref->{$key}) eq 'ARRAY') { |
|
foreach my $sec (@{$instsecref->{$key}}) { |
|
if ($action eq 'clutter') { |
|
# modify the section, as needed. |
|
next; |
|
} elsif ($action eq 'declutter') { |
|
# modify the section, as needed. |
|
next; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
return 'ok'; |
|
} |
|
|
=pod |
=pod |
|
|
Line 977 sub instcode_defaults {
|
Line 1072 sub instcode_defaults {
|
(d) $lc_users - reference to hash containing LON-CAPA usernames in |
(d) $lc_users - reference to hash containing LON-CAPA usernames in |
in domain $dom, as keys. Needed if institutional |
in domain $dom, as keys. Needed if institutional |
data source only allows query by username. |
data source only allows query by username. |
|
(e) $counts - reference to hash (optional), for use when called |
|
from Autoupdate.pl which can contain counts for |
|
user-specified items retrieved in allusers_info() |
|
or in custom subroutines which it calls. Key in |
|
hashref, and count value will be printed to |
|
autoupdate.log by Autoupdate.pl. |
|
|
returns 1 parameter - 'ok' if no processing error, or other value |
returns 1 parameter - 'ok' if no processing error, or other value |
if an error occurred. |
if an error occurred. |
side effects - populates the $instusers and $instids refs to hashes. |
side effects - populates the $instusers and $instids refs to hashes. |
Line 987 sub instcode_defaults {
|
Line 1089 sub instcode_defaults {
|
=cut |
=cut |
|
|
sub allusers_info { |
sub allusers_info { |
my ($dom,$instusers,$instids,$lc_users) = @_; |
my ($dom,$instusers,$instids,$lc_users,$counts) = @_; |
my $outcome = 'ok'; |
my $outcome = 'ok'; |
return $outcome; |
return $outcome; |
} |
} |