Diff for /loncom/automation/batchcreatecourse.pm between versions 1.30 and 1.31

version 1.30, 2009/08/15 00:25:34 version 1.31, 2009/09/05 20:20:17
Line 530  sub build_course { Line 530  sub build_course {
 #  #
 # Process other reqested users  # Process other reqested users
 #  #
       my @courseroles = qw(st ep ta in cc);
       if (&owner_is_dc($owner_uname,$owner_domain,$crsudom)) {
           push(@courseroles,'ad');
       }
     my $stulogmsg = '';      my $stulogmsg = '';
     foreach my $userkey (sort(keys(%{$details->{'users'}}))) {      foreach my $userkey (sort(keys(%{$details->{'users'}}))) {
         my $url = '/'.$crsudom.'/'.$crsunum;          my $url = '/'.$crsudom.'/'.$crsunum;
Line 537  sub build_course { Line 541  sub build_course {
         if (@{$details->{'users'}{$userkey}{'roles'}} > 0) {          if (@{$details->{'users'}{$userkey}{'roles'}} > 0) {
             my ($username,$userdom) = split/:/,$userkey;              my ($username,$userdom) = split/:/,$userkey;
             if (&Apache::lonnet::homeserver($username,$userdom) eq 'no_host') { # Add user if no account              if (&Apache::lonnet::homeserver($username,$userdom) eq 'no_host') { # Add user if no account
                 my $firstrole = $details->{'users'}{$userkey}{'roles'}[0];                  my @reqroles = @{$details->{'users'}{$userkey}{'roles'}};
                 my $firstsec = $details->{'users'}{$userkey}{$firstrole}{'usec'}[0];                  my @badroles;
                   my $firstrole = shift(@reqroles);
                   while (@reqroles > 0) { 
                       if ($firstrole =~ m{^cr/($match_domain)/($match_username)/([^/]+)$}) {
                           if (($1 eq $owner_domain) && ($2 eq $owner_uname)) {
                               last;
                           } else {
                               push(@badroles,$firstrole);
                               $firstrole = shift(@reqroles);
                           }
                       } elsif (grep(/^\Q$firstrole\E$/,@courseroles)) {
                           last;
                       } else {
                           push(@badroles,$firstrole);
                           $firstrole = shift(@reqroles);
                       }
                   }
                   if (@badroles > 0) {
                       if (@badroles > 1) {
                           $$output .= &mt('The following requested roles are unavailable:').' '.join(', ',@badroles);
                       } else {
                           $$output .= &mt('The following requested role: [_1] is unavailable.',$badroles[0]); 
                       }
                   }
                   my $firstsec;
                   unless (($firstrole eq 'cc') || ($firstrole eq ''))  {
                       $firstsec = $details->{'users'}{$userkey}{$firstrole}{'usec'}[0];
                   }
                 my $userargs = {                  my $userargs = {
                     'auth' => $details->{'users'}{$userkey}{'authtype'},                      'auth' => $details->{'users'}{$userkey}{'authtype'},
                     'authparam' => $details->{'users'}{$userkey}{'autharg'},                      'authparam' => $details->{'users'}{$userkey}{'autharg'},
Line 564  sub build_course { Line 595  sub build_course {
                 $outcome = &LONCAPA::Enrollment::create_newuser($userargs,$logmsg,$newusermsg,$enrollcount,$addresult,$longroles,\%courseinfo,$context);                  $outcome = &LONCAPA::Enrollment::create_newuser($userargs,$logmsg,$newusermsg,$enrollcount,$addresult,$longroles,\%courseinfo,$context);
 # now add other roles and other sections.  # now add other roles and other sections.
                 if ($outcome eq 'ok') {                  if ($outcome eq 'ok') {
                     if (($firstrole ne 'st') && (@{$details->{'users'}{$userkey}{$firstrole}{'usec'}} > 1)) {                      if ((($firstrole ne 'st') && ($firstrole ne 'cc') && ($firstrole ne '')) && (@{$details->{'users'}{$userkey}{$firstrole}{'usec'}} > 1)) {
                         for (my $i=1; $i<@{$details->{'users'}{$userkey}{$firstrole}{'usec'}}; $i++) {                          for (my $i=1; $i<@{$details->{'users'}{$userkey}{$firstrole}{'usec'}}; $i++) {
                             my $curr_role = $firstrole;                              my $curr_role = $firstrole;
                             my $start = $details->{'users'}{$userkey}{$curr_role}{'start'};                              my $start = $details->{'users'}{$userkey}{$curr_role}{'start'};
Line 574  sub build_course { Line 605  sub build_course {
                             if ($usec ne '') {                              if ($usec ne '') {
                                 $url .= '/'.$usec;                                  $url .= '/'.$usec;
                             }                              }
                             $$output .= &Apache::loncommon::commit_standardrole($userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec,$context);                              if ($firstrole =~ m{^cr/($match_domain)/($match_username)/([^/]+)$}) {
                                   $$output .= &Apache::loncommon::commit_customrole($userdom,$username,$url,$1,$2,$3,$start,$end,$context);
                               } else {
                                   $$output .= &Apache::loncommon::commit_standardrole($userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec,$context);
                               }
                         }                          }
                     }                      }
                     if (@{$details->{'users'}{$userkey}{'roles'}} > 1) {                      if (@reqroles > 0) {
                         for (my $j=1; $j<@{$details->{'users'}{$userkey}{'roles'}}; $j++) {                          foreach my $curr_role (@reqroles) {
                             my $curr_role = $details->{'users'}{$userkey}{'roles'}[$j];  
                             my $start = $details->{'users'}{$userkey}{$curr_role}{'start'};                              my $start = $details->{'users'}{$userkey}{$curr_role}{'start'};
                             my $end = $details->{'users'}{$userkey}{$curr_role}{'end'};                              my $end = $details->{'users'}{$userkey}{$curr_role}{'end'};
                             if ($curr_role eq 'st') {                              if ($curr_role eq 'st') {
Line 589  sub build_course { Line 623  sub build_course {
                                     $url .= '/'.$usec;                                      $url .= '/'.$usec;
                                 }                                  }
                                 $$output .= &Apache::loncommon::commit_studentrole(\$stulogmsg,$userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec,$context);                                  $$output .= &Apache::loncommon::commit_studentrole(\$stulogmsg,$userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec,$context);
                             } else {                              } elsif ($curr_role eq 'cc') {
                                   $url = '/'.$crsudom.'/'.$crsunum;
                                   my $usec = '';
                                   $$output .=
                                       &Apache::loncommon::commit_standardrole($userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec,$context);
                               } elsif ((grep(/^\Q$curr_role\E$/,@courseroles)) || 
                                        ($curr_role =~ m{^cr/$match_domain/$match_username/[^/]+$})) {
                                 foreach my $usec (@{$details->{'users'}{$userkey}{$curr_role}{'usec'}}) {                                  foreach my $usec (@{$details->{'users'}{$userkey}{$curr_role}{'usec'}}) {
                                     $url = '/'.$crsudom.'/'.$crsunum;                                      $url = '/'.$crsudom.'/'.$crsunum;
                                     if ($usec ne '') {                                      if ($usec ne '') {
                                         $url .= '/'.$usec;                                          $url .= '/'.$usec;
                                     }                                      }
                                     $$output .= &Apache::loncommon::commit_standardrole($userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec,$context);                                      if ($curr_role =~ m{^cr/($match_domain)/($match_username)/([^/]+)$}) {
                                           if (($1 eq $owner_domain) && ($2 eq $owner_uname)) {
                                               $$output .= 
                                                   &Apache::loncommon::commit_customrole($userdom,$username,$url,$1,$2,$3,$start,$end,$context);
                                           } else {
                                               $$output = &mt('Requested custom role: [_1] unavailable, as it was not defined by the course owner.',$curr_role);
                                           }
                                       } else {
                                           $$output .= 
                                               &Apache::loncommon::commit_standardrole($userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec,$context);
                                       }
                                 }                                  }
                               } else {
                                   $$output .= &mt('Requested role: [_1] is unavailable.',$curr_role);
                             }                              }
                         }                          }
                     }                      }
Line 612  sub build_course { Line 664  sub build_course {
                             $url .= '/'.$usec;                              $url .= '/'.$usec;
                         }                          }
                         $$output .= &Apache::loncommon::commit_studentrole(\$stulogmsg,$userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec,$context);                          $$output .= &Apache::loncommon::commit_studentrole(\$stulogmsg,$userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec,$context);
                     } else {                      } elsif ((grep(/^\Q$curr_role\E$/,@courseroles)) ||
                                        ($curr_role =~ m{^cr/$match_domain/$match_username/[^/]+$})) {
                         if (@{$details->{'users'}{$userkey}{$curr_role}{'usec'}} > 0) {                          if (@{$details->{'users'}{$userkey}{$curr_role}{'usec'}} > 0) {
                             foreach my $usec (@{$details->{'users'}{$userkey}{$curr_role}{'usec'}}) {                              foreach my $usec (@{$details->{'users'}{$userkey}{$curr_role}{'usec'}}) {
                                 $url = '/'.$crsudom.'/'.$crsunum;                                  $url = '/'.$crsudom.'/'.$crsunum;
                                 if ($usec ne '') {                                  if ($usec ne '') {
                                     $url .= '/'.$usec;                                      $url .= '/'.$usec;
                                 }                                  }
                                 my $stdresult = &Apache::loncommon::commit_standardrole($userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec,$context);                                  my $stdresult;
                                   if ($curr_role =~ m{/^cr/($match_domain)/($match_username)/([^/]+)$}) {
                                       if (($1 eq $owner_domain) && ($2 eq $owner_uname)) {
                                           $stdresult = 
                                               &Apache::loncommon::commit_customrole($userdom,$username,$url,$1,$2,$3,$start,$end,$context);
                                       } else {
                                           $stdresult = &mt('Requested custom role: [_1] unavailable, as it was not defined by the course owner.',$curr_role);
                                       }
                                   } else {
                                       $stdresult = 
                                           &Apache::loncommon::commit_standardrole($userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec,$context);
                                   }
                                 $$output .= $stdresult;                                  $$output .= $stdresult;
                             }                              }
                         } else {                          } else {
                             $url = '/'.$crsudom.'/'.$crsunum;                              $url = '/'.$crsudom.'/'.$crsunum;
                             $$output .= &Apache::loncommon::commit_standardrole($userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,'',$context);                              if ($curr_role =~ m{^cr/($match_domain)/($match_username)/([^/]+)$}) {
                                   if (($1 eq $owner_domain) && ($2 eq $owner_uname)) {
                                       $$output .= 
                                           &Apache::loncommon::commit_customrole($userdom,$username,$url,$1,$2,$3,$start,$end,$context);
                                   } else {
                                       $$output .= &mt('Requested custom role: [_1] unavailable, as it was not defined by the course owner.',$curr_role);
                                   }
                               } else {
                                   $$output .= 
                                       &Apache::loncommon::commit_standardrole($userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,'',$context);
                               }
                         }                          }
                       } else {
                           $$output .= &mt('Requested role: [_1] is unavailable.',$curr_role);
                     }                      }
                 }                  }
             }              }
Line 642  sub build_course { Line 718  sub build_course {
     return $courseid;      return $courseid;
 }  }
   
   sub owner_is_dc {
       my ($owner_uname,$owner_dom,$cdom) = @_;
       my $is_dc = 0;
       my %roles = &Apache::lonnet::get_my_roles($owner_uname,$owner_dom,'userroles',
                       ['active'],['dc'],[$cdom]);
       if ($roles{$owner_uname.':'.$owner_dom.':dc'}) {
           $is_dc = 1;
       }
       return $is_dc;
   }
   
 #########################################################  #########################################################
 #  #
 # process_date()  # process_date()

Removed from v.1.30  
changed lines
  Added in v.1.31


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