--- loncom/interface/lonrequestcourse.pm 2011/01/11 04:28:52 1.61 +++ loncom/interface/lonrequestcourse.pm 2012/08/14 15:45:06 1.64 @@ -1,7 +1,7 @@ # The LearningOnline Network # Request a course # -# $Id: lonrequestcourse.pm,v 1.61 2011/01/11 04:28:52 raeburn Exp $ +# $Id: lonrequestcourse.pm,v 1.64 2012/08/14 15:45:06 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -3163,7 +3163,7 @@ sub print_request_outcome { $enrollstart = ''; $enrollend = ''; } - my (%alerts,%rulematch,%inst_results,%curr_rules,%got_rules,%disallowmsg); + my (%alerts,%rulematch,%inst_results,%curr_rules,%got_rules,%disallowmsg,%skipped); for (my $i=0; $i<$env{'form.persontotal'}; $i++) { my $uname = $env{'form.person_'.$i.'_uname'}; my $udom = $env{'form.person_'.$i.'_dom'}; @@ -3175,50 +3175,55 @@ sub print_request_outcome { lastname => $env{'form.person_'.$i.'_lastname'}, emailaddr => $env{'form.person_'.$i.'_emailaddr'}, }; - my $usertype = &get_usertype($udom,$uname,\%curr_rules,\%got_rules); - if (&Apache::lonuserutils::can_create_user($udom,'requestcrs',$usertype)) { - my ($allowed,$msg,$authtype,$authparam) = - &check_newuser_rules($udom,$uname,\%alerts,\%rulematch, - \%inst_results,\%curr_rules,\%got_rules); - if ($allowed) { - my %domdefaults = &Apache::lonnet::get_domain_defaults($udom); - if ($usertype eq 'official') { - if ($authtype eq '') { - $authtype = $domdefaults{'auth_def'}; - $authparam = $domdefaults{'auth_arg_def'}; - } else { - if ($authtype eq 'loc') { - $authtype = 'localauth'; - } elsif ($authtype eq 'int') { - $authtype = 'internal'; - } - if ($authtype !~ /^(krb4|krb5|internal|localauth)$/) { + if (&Apache::lonnet::homeserver($uname,$udom) eq 'no_host') { + my $usertype = &get_usertype($udom,$uname,\%curr_rules,\%got_rules); + if (&Apache::lonuserutils::can_create_user($udom,'requestcrs',$usertype)) { + my ($allowed,$msg,$authtype,$authparam) = + &check_newuser_rules($udom,$uname,\%alerts,\%rulematch, + \%inst_results,\%curr_rules,\%got_rules); + if ($allowed) { + my %domdefaults = &Apache::lonnet::get_domain_defaults($udom); + if ($usertype eq 'official') { + if ($authtype eq '') { $authtype = $domdefaults{'auth_def'}; $authparam = $domdefaults{'auth_arg_def'}; + } else { + if ($authtype eq 'loc') { + $authtype = 'localauth'; + } elsif ($authtype eq 'int') { + $authtype = 'internal'; + } + if ($authtype !~ /^(krb4|krb5|internal|localauth)$/) { + $authtype = $domdefaults{'auth_def'}; + $authparam = $domdefaults{'auth_arg_def'}; + } + } + } elsif ($usertype eq 'unofficial') { + if ($authtype eq '') { + $authtype = 'internal'; + $authparam = ''; } + } else { + $authtype = $domdefaults{'auth_def'}; + $authparam = $domdefaults{'auth_arg_def'}; } - } elsif ($usertype eq 'unofficial') { - if ($authtype eq '') { - $authtype = 'internal'; - $authparam = ''; + if (($authtype eq '') || + (($authtype =~/^krb(4|5)$/) && ($authparam eq '')) || + ($authtype !~ /^(krb4|krb5|internal|localauth)$/)) { + $skipped{$uname.':'.$udom} = 1; + next; + } else { + $personnel{$uname.':'.$udom}{'authtype'} = $authtype; + $personnel{$uname.':'.$udom}{'autharg'} = $authparam; } } else { - $authtype = $domdefaults{'auth_def'}; - $authparam = $domdefaults{'auth_arg_def'}; - } - if (($authtype eq '') || - (($authtype =~/^krb(4|5)$/) && ($authparam eq '')) || - ($authtype !~ /^(krb4|krb5|internal|localauth)$/)) { + $skipped{$uname.':'.$udom} = 1; next; - } else { - $personnel{$uname.':'.$udom}{'authtype'} = $authtype; - $personnel{$uname.':'.$udom}{'autharg'} = $authparam; } } else { + $skipped{$uname.':'.$udom} = 1; next; } - } else { - next; } } my $role = $env{'form.person_'.$i.'_role'}; @@ -3265,6 +3270,11 @@ sub print_request_outcome { push(@baduname,$uname.':'.$udom); } } + if (keys(%skipped)) { + foreach my $key (keys(%skipped)) { + delete($personnel{$key}); + } + } my ($accessstart,$accessend) = &dates_from_form('accessstart','accessend'); my $autodrops = 0; if ($env{'form.autodrops'}) { @@ -3323,8 +3333,9 @@ sub print_request_outcome { }; my (@inststatuses,$storeresult,$creationresult); my $val = - &Apache::loncoursequeueadmin::get_processtype($env{'user.name'},$env{'user.domain'}, - $env{'user.adv'},$dom,$crstype,\@inststatuses,\%domconfig); + &Apache::loncoursequeueadmin::get_processtype('course',$env{'user.name'}, + $env{'user.domain'},$env{'user.adv'}, + $dom,$crstype,\@inststatuses,\%domconfig); if ($val eq '') { if ($crstype eq 'official') { $output = &mt('You are not permitted to request creation of official courses.'); @@ -3479,7 +3490,7 @@ sub print_request_outcome { } ($storeresult,my $updateresult) = &Apache::loncoursequeueadmin::update_coursereq_status(\%reqhash,$dom, - $cnum,$reqstatus,'request'); + $cnum,$reqstatus,'request',$env{'user.domain'},$env{'user.name'}); if ($modified && $queued && $storeresult eq 'ok') { if ($crstype eq 'community') { $output .= '

'.&mt('Your community request has been updated').'

';