Diff for /loncom/enrollment/Autoenroll.pl between versions 1.27 and 1.38

version 1.27, 2007/05/15 06:19:53 version 1.38, 2023/10/02 21:01:22
Line 52 Line 52
     foreach my $dom (@domains) {      foreach my $dom (@domains) {
         #only run if configured to          #only run if configured to
         my $run_enroll = 0;          my $run_enroll = 0;
         my $settings;          my ($domsettings,$autofailsafe,$autofailsafetype);
         my %domconfig =          my %domconfig =
             &Apache::lonnet::get_dom('configuration',['autoenroll'],$dom);              &Apache::lonnet::get_dom('configuration',['autoenroll','coursedefaults'],$dom);
         if (ref($domconfig{'autoenroll'}) eq 'HASH') {          if (ref($domconfig{'autoenroll'}) eq 'HASH') {
             $settings = $domconfig{'autoenroll'};              $domsettings = $domconfig{'autoenroll'};
             if ($settings->{'run'} eq '1') {              if ($domsettings->{'run'} eq '1') {
                 $run_enroll = 1;                  $run_enroll = 1;
             }              }
               if ($domsettings->{'autofailsafe'} ne '') {
                   $autofailsafe = $domsettings->{'autofailsafe'};
               }
               if ($domsettings->{'failsafe'} =~ /^(zero|any|off)$/) {
                    $autofailsafetype = $domsettings->{'failsafe'};
               }
         } else {          } else {
             $run_enroll = &localenroll::run($dom);              $run_enroll = &localenroll::run($dom);
         }          }
Line 71 Line 77
         # Determine the courses          # Determine the courses
         my %courses = &Apache::lonnet::courseiddump($dom,'.',1,'.','.','.',1,\@hostids,'Course');           my %courses = &Apache::lonnet::courseiddump($dom,'.',1,'.','.','.',1,\@hostids,'Course'); 
         my %affiliates = ();          my %affiliates = ();
           my %unclutteredsec = ();
           my %unclutteredlcsec = ();
         my %enrollvar = ();          my %enrollvar = ();
         my %reply = ();          my %reply = ();
         my %LC_code = ();          my %LC_code = ();
         foreach my $key (sort keys %courses) {          my ($showcredits,$domdefcredits);
             my $crs;          if ((ref($domconfig{'coursedefaults'}) eq 'HASH') &&
             if ($key =~ m/^($dom)_(\w+)$/) {              (ref($domconfig{'coursedefaults'}{'coursecredits'}) eq 'HASH')) {
                 $crs = $2;              if ($domconfig{'coursedefaults'}{'coursecredits'}{'official'}) {
                   $showcredits = 1;
                   $domdefcredits = $domconfig{'coursedefaults'}{'coursecredits'}{'official'};
             }              }
           }
           foreach my $key (sort keys %courses) {
               my %args = (
                            one_time => 1,
                          );
 # Get course settings  # Get course settings
             my %settings = &Apache::lonnet::dump('environment',$dom,$crs);              my %settings = &Apache::lonnet::coursedescription($key,\%args);
               my $crs = $settings{'num'};
               next if ($settings{'domain'} ne $dom);
             %{$enrollvar{$crs}} = ();              %{$enrollvar{$crs}} = ();
             @{$affiliates{$crs}} = ();              @{$affiliates{$crs}} = ();
             %{$LC_code{$crs}} = ();              %{$LC_code{$crs}} = ();
Line 92 Line 108
                     $enrollvar{$crs}{$item} = &HTML::Entities::decode($settings{$item});                        $enrollvar{$crs}{$item} = &HTML::Entities::decode($settings{$item});  
                 } elsif ($item eq 'default_enrollment_start_date') {                  } elsif ($item eq 'default_enrollment_start_date') {
                     $enrollvar{$crs}{startdate} = $settings{$item};                      $enrollvar{$crs}{startdate} = $settings{$item};
                 }  elsif ($item eq 'default_enrollment_end_date') {                  } elsif ($item eq 'default_enrollment_end_date') {
                     $enrollvar{$crs}{enddate} = $settings{$item};                      $enrollvar{$crs}{enddate} = $settings{$item};
                 }                  }
             }              }
Line 109 Line 125
                         $sections[0] = $enrollvar{$crs}{sectionnums};                          $sections[0] = $enrollvar{$crs}{sectionnums};
                     }                      }
                     if ($enrollvar{$crs}{crosslistings} =~ m/,/) {                      if ($enrollvar{$crs}{crosslistings} =~ m/,/) {
                         @crosslistings = split/,/,$enrollvar{$crs}{crosslistings}                          @crosslistings = split/,/,$enrollvar{$crs}{crosslistings};
                     } else {                      } else {
                         @crosslistings = $enrollvar{$crs}{crosslistings};                          @crosslistings = $enrollvar{$crs}{crosslistings};
                     }                      }
                       my $crscode = $enrollvar{$crs}{coursecode}; 
                       my $crskey = $crs.':'.$crscode;
                       @{$unclutteredsec{$crskey}} = ();
                       @{$unclutteredlcsec{$crskey}} = (); 
                     foreach my $sec (@sections) {                      foreach my $sec (@sections) {
                         if ($sec =~ m/^(\w+):(\w*)$/ ) {                          if ($sec =~ m/^(\w+):(\w*)$/ ) {
                             my $course_id = $enrollvar{$crs}{coursecode}.$1;                              my $instsec = $1; 
                             my $gp = $2;                              my $gp = $2;
                             if (!grep/^$course_id$/,@{$affiliates{$crs}}) {                              unless (grep/^\Q$instsec\E$/,@{$unclutteredsec{$crskey}}) {
                                 push @{$affiliates{$crs}}, $course_id;                                  push(@{$unclutteredsec{$crskey}},$instsec);
                                 $LC_code{$crs}{$course_id} = $gp;                                   push(@{$unclutteredlcsec{$crskey}},$gp);
                             }                              }
                         }                          }
                     }                      }
Line 127 Line 147
                         if ($xlist =~ m/^([^:]+):(\w*)$/) {                          if ($xlist =~ m/^([^:]+):(\w*)$/) {
                             my $course_id = $1;                              my $course_id = $1;
                             my $gp = $2;                              my $gp = $2;
                             if (!grep/^$course_id$/,@{$affiliates{$crs}}) {                              if (!grep/^\Q$course_id\E$/,@{$affiliates{$crs}}) {
                                 push @{$affiliates{$crs}}, $course_id;                                  push @{$affiliates{$crs}}, $course_id;
                                 $LC_code{$crs}{$course_id} = $gp;                                  $LC_code{$crs}{$course_id} = $gp;
                             }                              }
Line 136 Line 156
                 }                  }
             }              }
         }          }
           my %formattedsec = &Apache::lonnet::auto_instsec_reformat($dom,'clutter',\%unclutteredsec);
           foreach my $crskey (keys(%formattedsec)) {
               my ($crs,$instcode) = split(/:/,$crskey);
               if ((ref($formattedsec{$crskey}) eq 'ARRAY') && (ref($unclutteredlcsec{$crskey}) eq 'ARRAY')) {
                   for (my $i=0; $i<@{$formattedsec{$crskey}}; $i++) {
                       my $course_id = $instcode.$formattedsec{$crskey}[$i]; 
                       unless (grep/^\Q$course_id\E$/,@{$affiliates{$crs}}) {
                           push(@{$affiliates{$crs}},$course_id);
                           $LC_code{$crs}{$course_id} = $unclutteredlcsec{$crskey}[$i];
                       }
                   }
               }
           }
         my $outcome = &Apache::lonnet::fetch_enrollment_query('automated',\%affiliates,\%reply,$dom);          my $outcome = &Apache::lonnet::fetch_enrollment_query('automated',\%affiliates,\%reply,$dom);
   
 # Now go through classes and perform required enrollment changes.  # Now go through classes and perform required enrollment changes.
Line 148 Line 181
             if ($reply{$crs} > 0) {              if ($reply{$crs} > 0) {
                 if ( ($enrollvar{$crs}{autostart} < $timenow) && ( ($enrollvar{$crs}{autoend} > $timenow) || ($enrollvar{$crs}{autoend} == 0) ) ) {                  if ( ($enrollvar{$crs}{autostart} < $timenow) && ( ($enrollvar{$crs}{autoend} > $timenow) || ($enrollvar{$crs}{autoend} == 0) ) ) {
                     if (($enrollvar{$crs}{autoadds} == 1) || ($enrollvar{$crs}{autodrops} == 1)) {                      if (($enrollvar{$crs}{autoadds} == 1) || ($enrollvar{$crs}{autodrops} == 1)) {
                         my ($changecount,$response) = &LONCAPA::Enrollment::update_LC($dom,$crs,$enrollvar{$crs}{autoadds},$enrollvar{$crs}{autodrops},$enrollvar{$crs}{startdate},$enrollvar{$crs}{enddate},$enrollvar{$crs}{authtype},$enrollvar{$crs}{autharg},\@{$affiliates{$crs}},\%{$LC_code{$crs}},\$logmsg,\$newusermsg,'automated');                          my $defaultcredits = $domdefcredits;
                           if ($enrollvar{$crs}{defaultcredits}) {
                               $defaultcredits = $enrollvar{$crs}{defaultcredits};
                           }
                           my $failsafe = $autofailsafe;
                           if ($enrollvar{$crs}{'autodropfailsafe'}) {
                               $failsafe = $enrollvar{$crs}{'autodropfailsafe'};
                           }
                           my $failsafetype = $autofailsafetype;
                           if ($enrollvar{$crs}{'autodropfailsafetype'}) {
                               $failsafetype = $enrollvar{$crs}{'autodropfailsafetype'};  
                           }
                           my ($changecount,$response) = &LONCAPA::Enrollment::update_LC($dom,$crs,$enrollvar{$crs}{autoadds},$enrollvar{$crs}{autodrops},$enrollvar{$crs}{startdate},$enrollvar{$crs}{enddate},$enrollvar{$crs}{authtype},$enrollvar{$crs}{autharg},$showcredits,$defaultcredits,$failsafe,$failsafetype,$affiliates{$crs},$LC_code{$crs},\$logmsg,\$newusermsg,'automated');
                         print $fh &mt('Messages start for [_1]',$crs)."\n";                          print $fh &mt('Messages start for [_1]',$crs)."\n";
                         print $fh "$logmsg\n";                          print $fh "$logmsg\n";
                         print $fh &mt('Messages end for [_1]',$crs)."\n";                          print $fh &mt('Messages end for [_1]',$crs)."\n";
                         if ($changecount > 0) {                          if ($changecount > 0) {
 # Set $env{'user.name'}, $env{'user.domain'}, $env{'user.home'}  # Set $env{'user.name'}, $env{'user.domain'}, $env{'user.home'},
 # and $env{'request.course.id'} for use by logging in lonmsg  # $env{'request.course.id'} for use by logging in lonmsg,
   # and $env{'course.'.$env{'request.course.id'}.'.internal.userdomains'}
   # for use in courserolelog
                             $env{'request.course.id'} = $dom.'_'.$crs;                              $env{'request.course.id'} = $dom.'_'.$crs;
                               if (exists($enrollvar{$crs}{'userdomains'})) {
                                   $env{'course.'.$dom.'_'.$crs.'.internal.userdomains'} = $enrollvar{$crs}{'userdomains'};
                               }
                             my ($ownername,$ownerdom);                              my ($ownername,$ownerdom);
                             if ($enrollvar{$crs}{'courseowner'} ne '') {                              if ($enrollvar{$crs}{'courseowner'} ne '') {
                                 if ($enrollvar{$crs}{'courseowner'} =~ /:/) {                                  if ($enrollvar{$crs}{'courseowner'} =~ /:/) {
Line 166 Line 216
                                     $ownerdom = $dom;                                      $ownerdom = $dom;
                                 }                                  }
                             }                              }
                             if (($settings->{'sender_uname'} ne '') &&                               $env{'user.name'} = $ownername;
                                 ($settings->{'sender_domain'} ne '')) {                              $env{'user.domain'} = $ownerdom;
                                 $env{'user.name'} = $settings->{'sender_uname'};                              if (ref($domsettings) eq 'HASH') {
                                 $env{'user.domain'} = $settings->{'sender_domain'};                                  if (($domsettings->{'sender_uname'} ne '') && 
                             } else {                                      ($domsettings->{'sender_domain'} ne '')) {
                                 $env{'user.name'} = $ownername;                                      $env{'user.name'} = $domsettings->{'sender_uname'};
                                 $env{'user.domain'} = $ownerdom;                                      $env{'user.domain'} = $domsettings->{'sender_domain'};
                                   }
                             }                              }
                             if ($enrollvar{$crs}{notifylist}  eq '') {                              if ($enrollvar{$crs}{notifylist}  eq '') {
                                 if ($newusermsg ne '') {                                  if ($newusermsg ne '') {
Line 183 Line 234
                                     }                                      }
                                 }                                  }
                             } else {                              } else {
                                   $env{'form.can_reply'} = 'N';
                                 my $msgcc;                                  my $msgcc;
 # Send message about enrollment changes to notifylist.  # Send message about enrollment changes to notifylist.
                                 $env{'user.home'} = &Apache::lonnet::homeserver($env{'user.name'},$env{'user.domain'});                                  $env{'user.home'} = &Apache::lonnet::homeserver($env{'user.name'},$env{'user.domain'});
Line 222 Line 274
                                     my $status =                                        my $status =  
                                         &Apache::lonmsg::user_normal_msg($ccname,$ccdom,$subject,$message,undef,undef,undef,undef,\%sentmessage,undef,undef,undef,1,$recipid);                                          &Apache::lonmsg::user_normal_msg($ccname,$ccdom,$subject,$message,undef,undef,undef,undef,\%sentmessage,undef,undef,undef,1,$recipid);
                                 }                                  }
                                   delete($env{'form.can_reply'});
                             }                              }
                             delete($env{'user.name'});                              delete($env{'user.name'});
                             delete($env{'user.home'});                              delete($env{'user.home'});
                               if (exists($enrollvar{$crs}{'userdomains'})) {
                                   delete($env{'course.'.$dom.'_'.$crs.'.internal.userdomains'});
                               }
                             delete($env{'request.course.id'});                              delete($env{'request.course.id'});
                             $env{'user.domain'} = $dom;                              $env{'user.domain'} = $dom;
                         }                          }
Line 235 Line 291
                     if ( ($enrollvar{$crs}{autostart} < $timenow) && ( ($enrollvar{$crs}{autoend} > $timenow) || ($enrollvar{$crs}{autoend} == 0) ) ) {                      if ( ($enrollvar{$crs}{autostart} < $timenow) && ( ($enrollvar{$crs}{autoend} > $timenow) || ($enrollvar{$crs}{autoend} == 0) ) ) {
                         print $fh &mt('No institutional classlist data could be retrieved for [_1]',$crs)."\n";                          print $fh &mt('No institutional classlist data could be retrieved for [_1]',$crs)."\n";
                     } else {                      } else {
                         print $fh ('Not within time window for auto-enrollment in [_1]',$crs)."\n";                          print $fh &mt('Not within time window for auto-enrollment in [_1]',$crs)."\n";
                     }                      }
                 } else {                  } else {
                     print $fh &mt('Auto-enrollment not currently enabled for [_1]',$crs)."\n";                      print $fh &mt('Auto-enrollment not currently enabled for [_1]',$crs)."\n";

Removed from v.1.27  
changed lines
  Added in v.1.38


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.