Diff for /loncom/interface/lonrequestcourse.pm between versions 1.42 and 1.44

version 1.42, 2010/01/01 23:17:31 version 1.44, 2010/02/21 23:38:51
Line 94  described at http://www.lon-capa.org. Line 94  described at http://www.lon-capa.org.
   
 =item print_request_outcome()  =item print_request_outcome()
   
 =item get_processtype()  
   
 =item check_autolimit()  =item check_autolimit()
   
 =item retrieve_settings()  =item retrieve_settings()
Line 178  sub handler { Line 176  sub handler {
         &get_breadcrumbs($dom,$action,\$state,\%states,\%trail);          &get_breadcrumbs($dom,$action,\$state,\%states,\%trail);
     if ($action eq 'display') {      if ($action eq 'display') {
         if (($dom eq $env{'request.role.domain'}) && (&Apache::lonnet::allowed('ccc',$dom))) {          if (($dom eq $env{'request.role.domain'}) && (&Apache::lonnet::allowed('ccc',$dom))) {
             my $namespace = 'courserequestqueue';  
             if ($env{'form.cnum'} ne '') {              if ($env{'form.cnum'} ne '') {
                 my $cnum = $env{'form.cnum'};                  my $cnum = $env{'form.cnum'};
                 my $reqkey = $cnum.'_approval';                  my $reqkey = $cnum.'_approval';
Line 2784  sub print_request_outcome { Line 2781  sub print_request_outcome {
                     personnel      => \%personnel,                      personnel      => \%personnel,
                   };                    };
     my (@inststatuses,$storeresult,$creationresult);      my (@inststatuses,$storeresult,$creationresult);
     my $val = &get_processtype($dom,$crstype,\@inststatuses,\%domconfig);      my $val = 
           &Apache::loncoursequeueadmin::get_processtype($env{'user.name'},$env{'user.domain'},
               $env{'user.adv'},$dom,$crstype,\@inststatuses,\%domconfig);
     if ($val eq '') {      if ($val eq '') {
         if ($crstype eq 'official') {          if ($crstype eq 'official') {
             $output = &mt('You are not permitted to request creation of official courses.');              $output = &mt('You are not permitted to request creation of official courses.');
Line 2934  sub print_request_outcome { Line 2933  sub print_request_outcome {
                 }                  }
             }              }
         }          }
         my ($statusresult);          ($storeresult,my $updateresult) = 
         if ($requestkey =~ /^($match_domain)_($match_courseid)$/) {              &Apache::loncoursequeueadmin::update_coursereq_status(\%reqhash,$dom,
             $storeresult = &Apache::lonnet::store_userdata(\%reqhash,$requestkey,                  $cnum,$reqstatus,'request');
                                                            'courserequests');  
             if ($storeresult eq 'ok') {  
                 my %status = (  
                                  'status:'.$dom.':'.$cnum => $reqstatus,  
                              );  
                 $statusresult = &Apache::lonnet::put('courserequests',\%status);  
             }  
         } else {  
             $storeresult = 'error: invalid requestkey format';   
         }  
         if ($storeresult ne 'ok') {  
             $output .=  '<span class="LC_warning">'.&mt('An error occurred saving a record of the details of your request: [_1].',$storeresult).'</span><br />';  
             &Apache::lonnet::logthis("Error saving course request - $requestkey for $env{'user.name'}:$env{'user.domain'} - $storeresult");  
         } elsif ($statusresult ne 'ok') {  
             $output .= '<span class="LC_warning">'.&mt('An error occurred saving a record of the status of your request: [_1].',$statusresult).'</span><br />';  
             &Apache::lonnet::logthis("Error saving course request status for  $requestkey (for $env{'user.name'}:$env{'user.domain'}) - $statusresult");  
         }  
         if ($modified && $queued && $storeresult eq 'ok') {          if ($modified && $queued && $storeresult eq 'ok') {
             if ($crstype eq 'community') {              if ($crstype eq 'community') {
                 $output .= '<p>'.&mt('Your community request has been updated').'</p>';                  $output .= '<p>'.&mt('Your community request has been updated').'</p>';
Line 2963  sub print_request_outcome { Line 2945  sub print_request_outcome {
             $output .= &notification_information($disposition,$req_notifylist,$cnum,$now);              $output .= &notification_information($disposition,$req_notifylist,$cnum,$now);
         }          }
         if ($validationerror ne '') {          if ($validationerror ne '') {
             $output .= '<span class="LC_warning">'.&mt('An error occurred validating your request with institutional data sources: [_1].',$validationerror).'</p>';              $output .= '<p class="LC_warning">'.&mt('An error occurred validating your request with institutional data sources: [_1].',$validationerror).'</p>';
           }
           if ($updateresult) {
               $output .= $updateresult;
         }          }
     }      }
     if ($creationresult ne '') {      if ($creationresult ne '') {
Line 3139  sub notification_information { Line 3124  sub notification_information {
                    '</div>';                     '</div>';
     } else {      } else {
         $output .= '<div class="LC_warning">'.          $output .= '<div class="LC_warning">'.
                    &mt('Your request status is: [_1].',$disposition).                      &mt('Your request status is: [_1].',$disposition).
                    '</div>'                     '</div>';
     }      }
     return $output;      return $output;
 }  }
   
 sub get_processtype {  
     my ($dom,$crstype,$inststatuses,$domconfig) = @_;  
     return unless ((ref($inststatuses) eq 'ARRAY') && (ref($domconfig) eq 'HASH'));  
     my (%userenv,%settings,$val);  
     my @options = ('autolimit','validate','approval');  
     if ($dom eq $env{'user.domain'}) {  
         %userenv =   
             &Apache::lonnet::userenvironment($env{'user.domain'},$env{'user.name'},  
                 '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 (($env{'user.adv'}) && ($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($env{'user.domain'},  
                       $env{'user.name'},'reqcrsotherdom.'.$env{'form.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 check_autolimit {  sub check_autolimit {
     my ($uname,$udom,$dom,$crstype,$limit,$message) = @_;      my ($uname,$udom,$dom,$crstype,$limit,$message) = @_;
     my %crsroles = &Apache::lonnet::get_my_roles($env{'user.name'},$env{'user.domain'},      my %crsroles = &Apache::lonnet::get_my_roles($env{'user.name'},$env{'user.domain'},

Removed from v.1.42  
changed lines
  Added in v.1.44


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