Diff for /loncom/interface/lonrequestcourse.pm between versions 1.53 and 1.60

version 1.53, 2010/06/20 01:39:08 version 1.60, 2011/01/05 18:47:46
Line 856  END Line 856  END
     }      }
     if ($action eq 'new') {      if ($action eq 'new') {
         my $jsextra;          my $jsextra;
         if ($state eq 'courseinfo') {          if (($state eq 'courseinfo') || ($state eq 'codepick')) {
             $jsextra = "\n".&Apache::loncommon::coursebrowser_javascript($dom);              $jsextra = "\n".&Apache::loncommon::coursebrowser_javascript($dom);
         } elsif ($state eq 'enrollment') {          } elsif ($state eq 'enrollment') {
             if (($env{'form.crstype'} eq 'official') &&               if (($env{'form.crstype'} eq 'official') && 
Line 1322  sub print_request_form { Line 1322  sub print_request_form {
                             }                              }
                             if ($skipuser) {                              if ($skipuser) {
                                 push(@disallowed,$i);                                  push(@disallowed,$i);
                                 $disallowmsg{$i} = &mt('[_1] was excluded because new users need be from the course domain','<tt>'.$personname.':'.$persondom.'</tt>');                                  $disallowmsg{$i} = &mt('[_1] was excluded because new users need to be from the course domain','<tt>'.$personname.':'.$persondom.'</tt>');
                                 next;                                  next;
                             }                              }
                         }                          }
                         if (&get_cancreate_status($persondom,$personname,$dom)) {                          my $usertype = &get_usertype($persondom,$personname,\%curr_rules,\%got_rules);
                             my ($allowed,$msg) =                           if (&Apache::lonuserutils::can_create_user($dom,'requestcrs',$usertype)) {
                               my ($allowed,$msg,$authtype,$authparam) = 
                                 &check_newuser_rules($persondom,$personname,                                  &check_newuser_rules($persondom,$personname,
                                     \%alerts,\%rulematch,\%inst_results,                                      \%alerts,\%rulematch,\%inst_results,
                                     \%curr_rules,\%got_rules);                                      \%curr_rules,\%got_rules);
                             if ($allowed) {                              if ($allowed) {
                                   my %domdefaults = &Apache::lonnet::get_domain_defaults($persondom);
                                   if ($usertype eq 'official') {
                                       if ($authtype eq '') {
                                           $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'};
                                   }
                                   if (($authtype eq '') ||
                                       (($authtype =~/^krb/) && ($authparam eq ''))) {
                                       push(@disallowed,$i);
                                       $disallowmsg{$i} = &mt('[_1] was excluded because institutional information is incomplete for this new user.','<tt>'.$personname.':'.$persondom.'</tt>');
                                       next;
                                   }
                                 if (ref($inst_results{$personname.':'.$persondom}) eq 'HASH') {                                  if (ref($inst_results{$personname.':'.$persondom}) eq 'HASH') {
                                     if ($inst_results{$personname.':'.$persondom}{'lastname'} ne '') {                                      if ($inst_results{$personname.':'.$persondom}{'lastname'} ne '') {
                                         $env{'form.person_'.$i.'_lastname'} = $inst_results{$personname.':'.$persondom}{'lastname'};                                          $env{'form.person_'.$i.'_lastname'} = $inst_results{$personname.':'.$persondom}{'lastname'};
Line 1454  sub print_request_form { Line 1476  sub print_request_form {
     return;      return;
 }  }
   
 sub get_cancreate_status {  sub get_usertype {
     my ($persondom,$personname,$dom) = @_;      my ($persondom,$personname,$curr_rules,$got_rules) = @_;
     my ($rules,$ruleorder) =      my ($rules,$ruleorder) =
         &Apache::lonnet::inst_userrules($persondom,'username');          &Apache::lonnet::inst_userrules($persondom,'username');
     my $usertype = &Apache::lonuserutils::check_usertype($persondom,$personname,      my $usertype = &Apache::lonuserutils::check_usertype($persondom,$personname,
                                                          $rules);                                                           $rules,$curr_rules,$got_rules);
     return &Apache::lonuserutils::can_create_user($dom,'requestcrs',$usertype);      return $usertype;
 }  }
   
 sub check_newuser_rules {  sub check_newuser_rules {
Line 1468  sub check_newuser_rules { Line 1490  sub check_newuser_rules {
         $got_rules) = @_;          $got_rules) = @_;
     my $allowed = 1;      my $allowed = 1;
     my $newuser = 1;      my $newuser = 1;
     my ($checkhash,$userchkmsg);      my ($checkhash,$userchkmsg,$authtype,$authparam);
     my $checks = { 'username' => 1 };      my $checks = { 'username' => 1 };
     $checkhash->{$personname.':'.$persondom} = { 'newuser' => $newuser };      $checkhash->{$personname.':'.$persondom} = { 'newuser' => $newuser };
     &Apache::loncommon::user_rule_check($checkhash,$checks,$alerts,$rulematch,      &Apache::loncommon::user_rule_check($checkhash,$checks,$alerts,$rulematch,
Line 1490  sub check_newuser_rules { Line 1512  sub check_newuser_rules {
             }              }
         }          }
     }      }
     return ($allowed,$userchkmsg);      if ($allowed) {
           if (ref($rulematch) eq 'HASH') {
               if (ref($rulematch->{$personname.':'.$persondom}) eq 'HASH') {
                   my $matchedrule = $rulematch->{$personname.':'.$persondom}{'username'};
                   my ($rules,$ruleorder) =
                       &Apache::lonnet::inst_userrules($persondom,'username');
                   if (ref($rules) eq 'HASH') {
                       if (ref($rules->{$matchedrule}) eq 'HASH') {
                           $authtype = $rules->{$matchedrule}{'authtype'};
                           $authparam = $rules->{$matchedrule}{'authparm'};
                       }
                   }
               }
           }
       }
       return ($allowed,$userchkmsg,$authtype,$authparam);
 }  }
   
 sub get_excluded_elements {  sub get_excluded_elements {
Line 2534  sub print_review { Line 2571  sub print_review {
     if (($env{'form.cloning'}) &&      if (($env{'form.cloning'}) &&
         ($env{'form.clonecrs'} =~ /^$match_name$/) &&           ($env{'form.clonecrs'} =~ /^$match_name$/) && 
         ($env{'form.clonedom'} =~ /^$match_domain$/)) {          ($env{'form.clonedom'} =~ /^$match_domain$/)) {
         my $canclone = &Apache::loncoursequeueadmin::can_clone_course($env{'user.name'},          my $canclone = &Apache::loncoursequeueadmin::can_clone_course($uname,
                            $env{'user.domain'},$env{'form.clonecrs'},$env{'form.clonedom'},                             $udom,$env{'form.clonecrs'},$env{'form.clonedom'},
                            $env{'form.crstype'});                             $env{'form.crstype'});
         if ($canclone) {          if ($canclone) {
             my %courseenv = &Apache::lonnet::userenvironment($env{'form.clonedom'},              my %courseenv = &Apache::lonnet::userenvironment($env{'form.clonedom'},
Line 3036  sub print_request_outcome { Line 3073  sub print_request_outcome {
                         push(@instsections,$sec);                          push(@instsections,$sec);
                     }                      }
                     $sections{$i}{'loncapa'} = $env{'form.loncapasec_'.$i};                      $sections{$i}{'loncapa'} = $env{'form.loncapasec_'.$i};
                       $sections{$i}{'loncapa'} =~ s/\W//g;
                       if ($sections{$i}{'loncapa'} eq 'none') {
                           $sections{$i}{'loncapa'} = '';
                       }
                 }                  }
             }              }
         }          }
Line 3061  sub print_request_outcome { Line 3102  sub print_request_outcome {
         $enrollstart = '';          $enrollstart = '';
         $enrollend = '';          $enrollend = '';
     }      }
       my (%alerts,%rulematch,%inst_results,%curr_rules,%got_rules,%disallowmsg);
     for (my $i=0; $i<$env{'form.persontotal'}; $i++) {      for (my $i=0; $i<$env{'form.persontotal'}; $i++) {
         my $uname = $env{'form.person_'.$i.'_uname'};          my $uname = $env{'form.person_'.$i.'_uname'};
         my $udom = $env{'form.person_'.$i.'_dom'};          my $udom = $env{'form.person_'.$i.'_dom'};
Line 3072  sub print_request_outcome { Line 3114  sub print_request_outcome {
                              lastname     => $env{'form.person_'.$i.'_lastname'},                               lastname     => $env{'form.person_'.$i.'_lastname'},
                              emailaddr    => $env{'form.person_'.$i.'_emailaddr'},                               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)$/) {
                                           $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'};
                               }
                               if (($authtype eq '') ||
                                   (($authtype =~/^krb(4|5)$/) && ($authparam eq '')) ||
                                   ($authtype !~ /^(krb4|krb5|internal|localauth)$/)) {
                                   next;
                               } else {
                                   $personnel{$uname.':'.$udom}{'authtype'} = $authtype;
                                   $personnel{$uname.':'.$udom}{'autharg'} = $authparam;
                               }
                           } else {
                               next;
                           }
                       } else {
                           next;
                       }
                 }                  }
                 my $role = $env{'form.person_'.$i.'_role'};                  my $role = $env{'form.person_'.$i.'_role'};
                 unless ($role eq '') {                  unless ($role eq '') {
Line 3124  sub print_request_outcome { Line 3211  sub print_request_outcome {
     }      }
     my $autoadds = 0;      my $autoadds = 0;
     if ($env{'form.autoadds'}) {      if ($env{'form.autoadds'}) {
         $autodrops = $env{'form.autoadds'};          $autoadds = $env{'form.autoadds'};
     }  
     if ($env{'form.autoadds'}) {  
         $autodrops = $env{'form.autoadds'};  
     }      }
     my $instcode = '';      my $instcode = '';
     if (exists($env{'form.instcode'})) {      if (exists($env{'form.instcode'})) {
Line 3589  sub retrieve_settings { Line 3673  sub retrieve_settings {
             }              }
             $env{'form.clonecrs'} = $reqinfo{'clonecrs'};              $env{'form.clonecrs'} = $reqinfo{'clonecrs'};
             $env{'form.clonedom'} = $reqinfo{'clonedom'};              $env{'form.clonedom'} = $reqinfo{'clonedom'};
               if (($reqinfo{'clonecrs'} ne '') && ($reqinfo{'clonedom'} ne '')) {
                   $env{'form.cloning'} = 1;
               }
             $env{'form.datemode'} = $reqinfo{'datemode'};              $env{'form.datemode'} = $reqinfo{'datemode'};
             $env{'form.dateshift'} = $reqinfo{'dateshift'};              $env{'form.dateshift'} = $reqinfo{'dateshift'};
             if (($reqinfo{'crstype'} eq 'official') && ($reqinfo{'instcode'} ne '')) {               if ($reqinfo{'crstype'} eq 'official') {
                  $env{'form.sectotal'} = $reqinfo{'sectotal'};                  $env{'form.autoadds'} = $reqinfo{'autoadds'};
                  $env{'form.crosslisttotal'} = $reqinfo{'crosslisttotal'};                  $env{'form.autodrops'} = $reqinfo{'autodrops'};
                  $env{'form.autoadds'} = $reqinfo{'autoadds'};                  if ($reqinfo{'instcode'} ne '') { 
                  $env{'form.autdrops'} = $reqinfo{'autodrops'};                      $env{'form.sectotal'} = $reqinfo{'sectotal'};
                  $env{'form.instcode'} = $reqinfo{'instcode'};                      $env{'form.crosslisttotal'} = $reqinfo{'crosslisttotal'};
                  my $crscode = {                       $env{'form.instcode'} = $reqinfo{'instcode'};
                                  $cnum => $reqinfo{'instcode'},                      my $crscode = { 
                                };                                      $cnum => $reqinfo{'instcode'},
                  &extract_instcode($dom,'instcode',$crscode,$cnum);                                    };
                       &extract_instcode($dom,'instcode',$crscode,$cnum);
                   }
             }              }
             my @currsec;              my @currsec;
             if (ref($reqinfo{'sections'}) eq 'HASH') {              if (ref($reqinfo{'sections'}) eq 'HASH') {

Removed from v.1.53  
changed lines
  Added in v.1.60


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