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

version 1.12.2.6, 2010/01/15 15:38:10 version 1.17, 2010/01/29 13:18:38
Line 35  Apache::loncoursequeueadmin.pm Line 35  Apache::loncoursequeueadmin.pm
   
 Utilities used by domain coordinators to administer queued course creation requests,  Utilities used by domain coordinators to administer queued course creation requests,
 and by course coordinators for queued self-enrollment requests, and by general  and by course coordinators for queued self-enrollment requests, and by general
 users to display their queued self-enrollment requests.  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 55  described at http://www.lon-capa.org. Line 55  described at http://www.lon-capa.org.
 =item course_creation()  =item course_creation()
   
 =item build_batchcreatehash()  =item build_batchcreatehash()
    
 =item can_clone_course()  =item can_clone_course()
   
   =item get_processtype()
   
 =item queued_selfenrollment()  =item queued_selfenrollment()
   
 =back  =back
Line 375  sub update_request_queue { Line 377  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 465  sub update_request_queue { Line 466  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 514  sub update_request_queue { Line 512  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 907  sub update_request_queue { Line 896  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 990  sub build_batchcreatehash { Line 955  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 = &escape($owneremail);
         my $owner = $details->{'owner'}.':'.$details->{'domain'};          my $owner = $details->{'owner'}.':'.$details->{'domain'};
         foreach my $item (@items) {          foreach my $item (@items) {
             $batchhash{$item} = $details->{$item};              $batchhash{$item} = $details->{$item};
Line 1081  sub can_clone_course { Line 1043  sub can_clone_course {
     return $canclone;      return $canclone;
 }  }
   
   sub get_processtype {
       my ($uname,$udom,$isadv,$dom,$crstype,$inststatuses,$domconfig) = @_;
       return unless ((ref($inststatuses) eq 'ARRAY') && (ref($domconfig) eq 'HASH'));
       if ($uname eq '' || $udom eq '') {
           $uname = $env{'user.name'};
           $udom = $env{'user.domain'};
           $isadv = $env{'user.adv'};
       }
       my (%userenv,%settings,$val);
       my @options = ('autolimit','validate','approval');
       if ($dom eq $udom) {
           %userenv =
               &Apache::lonnet::userenvironment($udom,$uname,'requestcourses.'.$crstype,'inststatus');
           if ($userenv{'requestcourses.'.$crstype}) {
               $val = $userenv{'requestcourses.'.$crstype};
               @{$inststatuses} = ('_custom_');
           } else {
               my ($task,%alltasks);
               if (ref($domconfig->{'requestcourses'}) eq 'HASH') {
                   %settings = %{$domconfig->{'requestcourses'}};
                   if (ref($settings{$crstype}) eq 'HASH') {
                       if (($isadv) && ($settings{$crstype}{'_LC_adv'} ne '')) {
                           $val = $settings{$crstype}{'_LC_adv'};
                           @{$inststatuses} = ('_LC_adv_');
                       } else {
                           if ($userenv{'inststatus'} ne '') {
                               @{$inststatuses} = split(',',$userenv{'inststatus'});
                           } else {
                               @{$inststatuses} = ('default');
                           }
                           foreach my $status (@{$inststatuses}) {
                               if (exists($settings{$crstype}{$status})) {
                                   my $value = $settings{$crstype}{$status};
                                   next unless ($value);
                                   unless (exists($alltasks{$value})) {
                                       if (ref($alltasks{$value}) eq 'ARRAY') {
                                           unless(grep(/^\Q$status\E$/,@{$alltasks{$value}})) {
                                               push(@{$alltasks{$value}},$status);
                                           }
                                       } else {
                                           @{$alltasks{$value}} = ($status);
                                       }
                                   }
                               }
                           }
                           my $maxlimit = 0;
   
                           foreach my $key (sort(keys(%alltasks))) {
                               if ($key =~ /^autolimit=(\d*)$/) {
                                   if ($1 eq '') {
                                       $val ='autolimit=';
                                       last;
                                   } elsif ($1 > $maxlimit) {
                                       $maxlimit = $1;
                                   }
                               }
                           }
                           if ($maxlimit) {
                               $val = 'autolimit='.$maxlimit;
                           } else {
                               foreach my $option (@options) {
                                   if ($alltasks{$option}) {
                                       $val = $option;
                                       last;
                                   }
                               }
                           }
                       }
                   }
               }
           }
       } else {
           %userenv = &Apache::lonnet::userenvironment($udom,$uname,'reqcrsotherdom.'.$crstype);
           if ($userenv{'reqcrsotherdom.'.$crstype}) {
               my @doms = split(',',$userenv{'reqcrsotherdom.'.$crstype});
               my $optregex = join('|',@options);
               foreach my $item (@doms) {
                   my ($extdom,$extopt) = split(':',$item);
                   if ($extdom eq $dom) {
                       if ($extopt =~ /^($optregex)(=?\d*)$/) {
                           $val = $1.$2;
                       }
                       last;
                   }
               }
               @{$inststatuses} = ('_external_');
           }
       }
       return $val;
   }
   
 sub queued_selfenrollment {  sub queued_selfenrollment {
     my ($notitle) = @_;      my ($notitle) = @_;
     my $output;      my $output;
Line 1096  sub queued_selfenrollment { Line 1149  sub queued_selfenrollment {
         }          }
     }      }
     if (keys(%reqs_by_date)) {      if (keys(%reqs_by_date)) {
         my $rolename = &Apache::lonnet::plaintext('st');  
         unless ($notitle) {          unless ($notitle) {
             $output .= '<b>'.&mt('Enrollment requests pending Course Coordinator approval').'</b><br />';              $output .= '<b>'.&mt('Enrollment requests pending Course Coordinator approval').'</b><br />';
         }          }
Line 1111  sub queued_selfenrollment { Line 1163  sub queued_selfenrollment {
                 foreach my $crs (@{$reqs_by_date{$item}}) {                  foreach my $crs (@{$reqs_by_date{$item}}) {
                     my %courseinfo = &Apache::lonnet::coursedescription($crs);                      my %courseinfo = &Apache::lonnet::coursedescription($crs);
                     my $usec = $selfenrollrequests{$crs}{'section'};                      my $usec = $selfenrollrequests{$crs}{'section'};
                       my $rolename = &Apache::lonnet::plaintext('st',$courseinfo{'type'},$crs);
                     if ($usec eq '') {                      if ($usec eq '') {
                         $usec = &mt('No section');                          $usec = &mt('No section');
                     }                      }

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


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