Diff for /loncom/interface/loncoursequeueadmin.pm between versions 1.12 and 1.12.2.6

version 1.12, 2009/11/18 19:15:45 version 1.12.2.6, 2010/01/15 15:38:10
Line 33  Apache::loncoursequeueadmin.pm Line 33  Apache::loncoursequeueadmin.pm
   
 =head1 SYNOPSIS  =head1 SYNOPSIS
   
 Adminitsration utilities used by domain coordinators for queued course creation requests, and by course coordinators for queued self-enrollment requests.  Utilities used by domain coordinators to administer queued course creation requests,
   and by course coordinators for queued self-enrollment requests, and by general
   users to display their queued self-enrollment requests.
   
 This is part of the LearningOnline Network with CAPA project  This is part of the LearningOnline Network with CAPA project
 described at http://www.lon-capa.org.  described at http://www.lon-capa.org.
Line 50  described at http://www.lon-capa.org. Line 52  described at http://www.lon-capa.org.
   
 =item get_student_counts()  =item get_student_counts()
   
   =item course_creation()
   
   =item build_batchcreatehash()
   
   =item can_clone_course()
   
   =item queued_selfenrollment()
   
 =back  =back
   
 =cut  =cut
Line 57  described at http://www.lon-capa.org. Line 67  described at http://www.lon-capa.org.
 package Apache::loncoursequeueadmin;  package Apache::loncoursequeueadmin;
   
 use strict;  use strict;
 use Apache::Constants qw(:common :http);  
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::loncommon;  use Apache::loncommon;
 use Apache::lonmsg;  use Apache::lonmsg;
Line 366  sub update_request_queue { Line 375  sub update_request_queue {
         @existing,@missingreq,@invalidusers,@limitexceeded,@completed,          @existing,@missingreq,@invalidusers,@limitexceeded,@completed,
         @processing_errors,@warn_approves,@warn_rejects,@approvals,          @processing_errors,@warn_approves,@warn_rejects,@approvals,
         @rejections,@rejectionerrors,@nopermissions,%courseroles,          @rejections,@rejectionerrors,@nopermissions,%courseroles,
         %communityroles,%domdefs,%approvalmsg,%rejectionmsg,$crstype);          %communityroles,%domdefs,%approvalmsg,%rejectionmsg,$crstype,
           @warn_coursereqs);
     @approvals = &Apache::loncommon::get_env_multiple('form.approvereq');      @approvals = &Apache::loncommon::get_env_multiple('form.approvereq');
     @rejections = &Apache::loncommon::get_env_multiple('form.rejectreq');      @rejections = &Apache::loncommon::get_env_multiple('form.rejectreq');
     $now = time;      $now = time;
Line 455  sub update_request_queue { Line 465  sub update_request_queue {
             my $uhome = &Apache::lonnet::homeserver($uname,$udom);              my $uhome = &Apache::lonnet::homeserver($uname,$udom);
             if ($uhome ne 'no_host') {              if ($uhome ne 'no_host') {
                 if (exists($requesthash{$uname.':'.$udom})) {                  if (exists($requesthash{$uname.':'.$udom})) {
                       if ($cdom eq 'gci' && $cnum eq '9615072b469884921gcil1') {
                           my $enresult = &enable_gci_submission($udom,$uname,
                                                      $access_end,$access_start);
                       }
                     if (exists($classlist->{$uname.':'.$udom})) {                      if (exists($classlist->{$uname.':'.$udom})) {
                         if (ref($classlist->{$uname.':'.$udom}) eq 'ARRAY') {                          if (ref($classlist->{$uname.':'.$udom}) eq 'ARRAY') {
                             if (($classlist->{$uname.':'.$udom}->[$idx->{'status'}] eq 'Active') ||                              if (($classlist->{$uname.':'.$udom}->[$idx->{'status'}] eq 'Active') ||
Line 501  sub update_request_queue { Line 514  sub update_request_queue {
                             &Apache::lonnet::put($namespace,\%userrequest,$udom,$uname);                              &Apache::lonnet::put($namespace,\%userrequest,$udom,$uname);
                         if ($userresult ne 'ok') {                          if ($userresult ne 'ok') {
                             push(@warn_approves,$uname.':'.$udom);                              push(@warn_approves,$uname.':'.$udom);
                           } elsif ($udom eq 'gci') {
                               my %changehash = (
                                   'reqcrsotherdom.unofficial' => 'gcitest:autolimit=',
                               );
                               my $reqresult = &Apache::lonnet::put('environment',\%changehash,
                                                                    $udom,$uname);
                               if ($reqresult ne 'ok') {
                                   push(@warn_coursereqs,$uname.':'.$udom);
                               }
                         }                          }
                     } else {                      } else {
                         push(@processing_errors,$uname.':'.$udom);                          push(@processing_errors,$uname.':'.$udom);
Line 885  sub update_request_queue { Line 907  sub update_request_queue {
             $output .= '</ul></p>';              $output .= '</ul></p>';
         }          }
     }      }
       if (@warn_coursereqs) {
           $output .= '<p>'..&mt("For the following users, an error occurred when setting rights to request creation of Concept Test courses:").'<ul>';
               foreach my $user (@warn_coursereqs) {
                   $output .= '<li>'.$user.'</li>';
               }
               $output .= '</ul></p>';
       }
     return $output;      return $output;
 }  }
   
   sub enable_gci_submission {
       my ($udom,$uname,$access_end,$access_start) = @_;
       my $cdom = 'gci';
       my $cnum = '1H96711d710194bfegcil1';
       my ($stucounts,$idx,$classlist) = &get_student_counts($cdom,$cnum);
       if (exists($classlist->{$uname.':'.$udom})) {
           if (ref($classlist->{$uname.':'.$udom}) eq 'ARRAY') {
               if (($classlist->{$uname.':'.$udom}->[$idx->{'status'}] eq 'Active') ||
                   ($classlist->{$uname.':'.$udom}->[$idx->{'status'}] eq 'Future')) {
                   return;
               }
           }
       }
       return
           &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,undef,$access_end,$access_start,'selfenroll',undef,$cdom.'_'.$cnum,1);
   }
   
 sub get_student_counts {  sub get_student_counts {
     my ($cdom,$cnum) = @_;      my ($cdom,$cnum) = @_;
     my (%idx,%stucounts);      my (%idx,%stucounts);
Line 944  sub build_batchcreatehash { Line 990  sub build_batchcreatehash {
     my ($dom,$context,$details,$owneremail,$domdefs) = @_;      my ($dom,$context,$details,$owneremail,$domdefs) = @_;
     my %batchhash;      my %batchhash;
     my @items = qw{owner domain coursehome clonecrs clonedom datemode dateshift enrollstart enrollend accessstart accessend sections crosslists users};      my @items = qw{owner domain coursehome clonecrs clonedom datemode dateshift enrollstart enrollend accessstart accessend sections crosslists users};
       if ($dom eq 'gcitest') {
           push(@items,'firstres');
       }
     if ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH')) {      if ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH')) {
         my $emailenc = &Apache::lonnet::escape($owneremail);          my $emailenc = &Apache::lonnet::escape($owneremail);
         my $owner = $details->{'owner'}.':'.$details->{'domain'};          my $owner = $details->{'owner'}.':'.$details->{'domain'};
Line 1032  sub can_clone_course { Line 1081  sub can_clone_course {
     return $canclone;      return $canclone;
 }  }
   
   sub queued_selfenrollment {
       my ($notitle) = @_;
       my $output;
       my %selfenrollrequests = &Apache::lonnet::dump('selfenrollrequests');
       my %reqs_by_date;
       foreach my $item (keys(%selfenrollrequests)) {
           if (ref($selfenrollrequests{$item}) eq 'HASH') {
               if ($selfenrollrequests{$item}{'status'} eq 'request') {
                   if ($selfenrollrequests{$item}{'timestamp'}) {
                       push(@{$reqs_by_date{$selfenrollrequests{$item}{'timestamp'}}},$item);
                   }
               }
           }
       }
       if (keys(%reqs_by_date)) {
           my $rolename = &Apache::lonnet::plaintext('st');
           unless ($notitle) {
               $output .= '<b>'.&mt('Enrollment requests pending Course Coordinator approval').'</b><br />';
           }
           $output .= &Apache::loncommon::start_data_table().
                      &Apache::loncommon::start_data_table_header_row().
                      '<th>'.&mt('Date requested').'</th><th>'.&mt('Course title').'</th>'.
                      '<th>'.&mt('User role').'</th><th>'.&mt('Section').'</th>'.
                      &Apache::loncommon::end_data_table_header_row();
           my @sorted = sort { $a <=> $b } (keys(%reqs_by_date));
           foreach my $item (@sorted) {
               if (ref($reqs_by_date{$item}) eq 'ARRAY') {
                   foreach my $crs (@{$reqs_by_date{$item}}) {
                       my %courseinfo = &Apache::lonnet::coursedescription($crs);
                       my $usec = $selfenrollrequests{$crs}{'section'};
                       if ($usec eq '') {
                           $usec = &mt('No section');
                       }
                       $output .= &Apache::loncommon::start_data_table_row().
                                  '<td>'.&Apache::lonlocal::locallocaltime($item).'</td>'.
                                  '<td>'.$courseinfo{'description'}.'</td>'.
                                  '<td>'.$rolename.'</td><td>'.$usec.'</td>'.
                                  &Apache::loncommon::end_data_table_row();
                   }
               }
           }
           $output .= &Apache::loncommon::end_data_table();
       }
       return $output;
   }
   
 1;  1;

Removed from v.1.12  
changed lines
  Added in v.1.12.2.6


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>