Diff for /loncom/automation/batchcreatecourse.pm between versions 1.29 and 1.38

version 1.29, 2009/08/15 00:05:54 version 1.38, 2013/03/01 04:49:15
Line 56  use strict; Line 56  use strict;
 # <title>Underwater Basket Weaving</title>  # <title>Underwater Basket Weaving</title>
 # <crstype>Course</crstype>  # <crstype>Course</crstype>
 # <coursecode>ss05ubw101</coursecode>  # <coursecode>ss05ubw101</coursecode>
   # <defaultcredits>3</defaultcredits>
 # <coursehome>msul1</coursehome>  # <coursehome>msul1</coursehome>
 # <coursedomain>msu</coursedomain>  # <coursedomain>msu</coursedomain>
 # <reshome>/res/msu/</reshome>  # <reshome>/res/msu/</reshome>
Line 122  use strict; Line 123  use strict;
 #   <lastname>Spartan</lastname>x  #   <lastname>Spartan</lastname>x
 #   <middlename></middlename>  #   <middlename></middlename>
 #   <studentID></studentID>  #   <studentID></studentID>
   #   <credits></credits>
 #   <roles></roles>  #   <roles></roles>
 #  </user>  #  </user>
 #  <user>  #  <user>
Line 159  use strict; Line 161  use strict;
 # firstres can be nav, syl, or blank for "Navigate Contents", Syllabus, or  # firstres can be nav, syl, or blank for "Navigate Contents", Syllabus, or
 # no entry respectively.  # no entry respectively.
 #   # 
 # crstype can be Course or Group  # crstype can be Course or Community
 #  #
 # crsquota is the total disk space permitted for course group portfolio files  # crsquota is the total disk space permitted for course group portfolio files
 # in all course groups.  # in all course groups.
Line 197  sub create_courses { Line 199  sub create_courses {
     open(FILE,"<$$perlvarref{'lonTabDir'}.'/rolesplain.tab");      open(FILE,"<$$perlvarref{'lonTabDir'}.'/rolesplain.tab");
     my @rolesplain = <FILE>;      my @rolesplain = <FILE>;
     close(FILE);      close(FILE);
     foreach (@rolesplain) {      foreach my $item (@rolesplain) {
         if ($_ =~ /^(st|ta|ex|ad|in|cc):([\w\s]+)$/) {          if ($item =~ /^(st|ta|ep|ad|in|cc|co):([\w\s]+):?([\w\s]*)/) {
             $longroles{$1} = $2;              $longroles{'Course'}{$1} = $2;
               $longroles{'Community'}{$1} = $3;
         }          }
     }      }
     my ($logmsg,$keysmsg,$newusermsg,$addresult);      my ($logmsg,$keysmsg,$newusermsg,$addresult);
     my %enrollcount = ();      my %enrollcount = ();
     my $newcoursedir = $$perlvarref{'lonDaemons'}.'/tmp/addcourse/'.$dom.'/'.$context;      my $newcoursedir = LONCAPA::tempdir().'/addcourse/'.$dom.'/'.$context;
     if ($context eq 'auto') {      if ($context eq 'auto') {
         $newcoursedir .= '/pending';          $newcoursedir .= '/pending';
     } else {      } else {
Line 252  sub parse_coursereqs { Line 255  sub parse_coursereqs {
     my $xlist = 0;      my $xlist = 0;
     my $userkey = '';      my $userkey = '';
     my $role = '';      my $role = '';
     my @items = ('title','optional_id','coursecode','coursehome','reshome','nonstandard','adds','drops','topmap','firstres','clonecrs','clonedom','datemode','dateshift','showphotos','setpolicy','setcontent','setkeys','keyauth','disresdis','disablechat','openall','notify_owner','notify_dc','crstype','crsquota');      my @items = ('title','optional_id','coursecode','defaultcredits','coursehome','reshome','nonstandard','adds','drops','topmap','firstres','clonecrs','clonedom','datemode','dateshift','showphotos','setpolicy','setcontent','setkeys','keyauth','disresdis','disablechat','openall','notify_owner','notify_dc','crstype','crsquota');
       my @possroles = qw(st ad ep ta in cc co);
     my @dateitems = ('enrollstart','enrollend','accessstart','accessend');      my @dateitems = ('enrollstart','enrollend','accessstart','accessend');
     my @useritems = ('autharg','authtype','firstname','generation','lastname','middlename','studentID');      my @useritems = ('autharg','authtype','firstname','generation','lastname','middlename','studentID');
     my $p = HTML::Parser->new      my $p = HTML::Parser->new
Line 272  sub parse_coursereqs { Line 276  sub parse_coursereqs {
                  }                   }
                  if ("@state" eq "class users user roles role") {                   if ("@state" eq "class users user roles role") {
                      $role = $attr->{id};                       $role = $attr->{id};
                      if ($role =~ /^(st|ad|ep|ta|in|cc)$/) {                       if (grep(/^\Q$role\E$/,@possroles)) {
                          push(@{$$details{$num}{'users'}{$userkey}{'roles'}}, $role);                             push(@{$$details{$num}{'users'}{$userkey}{'roles'}}, $role);  
                          %{$$details{$num}{'users'}{$userkey}{$role}} = ();                           %{$$details{$num}{'users'}{$userkey}{$role}} = ();
                          @{$$details{$num}{'users'}{$userkey}{$role}{'usec'}} = ();                           @{$$details{$num}{'users'}{$userkey}{$role}{'usec'}} = ();
Line 318  sub parse_coursereqs { Line 322  sub parse_coursereqs {
                     @{$$details{$num}{'users'}{$userkey}{'roles'}} = ();                      @{$$details{$num}{'users'}{$userkey}{'roles'}} = ();
                  } elsif ("@state" eq "class users user email") {                   } elsif ("@state" eq "class users user email") {
                     $$details{$num}{'users'}{$userkey}{'emailaddr'} = $text;                      $$details{$num}{'users'}{$userkey}{'emailaddr'} = $text;
                     $$details{$num}{'users'}{$userkey}{'emailenc'} = &Apache::lonnet::escape($text);                       $$details{$num}{'users'}{$userkey}{'emailenc'} = &LONCAPA::escape($text); 
                  } elsif ("@state" eq "class users user roles role start") {                   } elsif ("@state" eq "class users user roles role start") {
                      if ($role =~ /^(st|ad|ep|ta|in|cc)$/) {                       if (grep(/^\Q$role\E$/,@possroles)) {
                          $$details{$num}{'users'}{$userkey}{$role}{'start'} = &process_date($text);                           $$details{$num}{'users'}{$userkey}{$role}{'start'} = &process_date($text);
                      }                       }
                  } elsif ("@state" eq "class users user roles role end") {                   } elsif ("@state" eq "class users user roles role end") {
                      if ($role =~ /^(st|ad|ep|ta|in|cc)$/) {                       if (grep(/^\Q$role\E$/,@possroles)) {
                          $$details{$num}{'users'}{$userkey}{$role}{'end'} = &process_date($text);                           $$details{$num}{'users'}{$userkey}{$role}{'end'} = &process_date($text);
                      }                       }
                  } elsif ("@state" eq "class users user roles role usec") {                   } elsif ("@state" eq "class users user roles role usec") {
                      if ($role =~ /^(st|ad|ep|ta|in|cc)$/) {                       if (grep(/^\Q$role\E$/,@possroles)) {
                          unless ($text eq '') {                           unless ($text eq '') {
                              push(@{$$details{$num}{'users'}{$userkey}{$role}{'usec'}},$text);                               push(@{$$details{$num}{'users'}{$userkey}{$role}{'usec'}},$text);
                          }                           }
Line 403  sub build_course { Line 407  sub build_course {
     my $xliststr = '';      my $xliststr = '';
     my $noenddate = '';      my $noenddate = '';
     my $outcome;      my $outcome;
     my ($courseid,$crsudom,$crsunum);      my ($courseid,$crsudom,$crsunum,$crstype,$ccrole,$rolenames);
       if ($details->{'crstype'} eq 'Community') {
           $crstype = $details->{'crstype'};
           $ccrole ='co';
           if (ref($longroles) eq 'HASH') {
               $rolenames = $longroles->{'Community'};
           }
       } else {
           $crstype = 'Course';
           $ccrole = 'cc';
           if (ref($longroles) eq 'HASH') {
               $rolenames = $longroles->{'Course'};
           }
       }
     my $linefeed;      my $linefeed;
     if ($context eq 'auto') {      if ($context eq 'auto') {
         $linefeed = "\n";          $linefeed = "\n";
Line 419  sub build_course { Line 436  sub build_course {
     }      }
     my $firstres =  $details->{'firstres'};      my $firstres =  $details->{'firstres'};
     if ($firstres eq '') {      if ($firstres eq '') {
         $firstres = 'syl';          if ($crstype eq 'Community') {
               $firstres = 'nav';
           } else {
               $firstres = 'syl';
           }
     }      }
     foreach my $secid (sort(keys(%{$details->{'sections'}}))) {      foreach my $secid (sort(keys(%{$details->{'sections'}}))) {
         $sectionstr .= $details->{'sections'}{$secid}{'inst'}.':'.$details->{'sections'}{$secid}{'loncapa'}.',';          $sectionstr .= $details->{'sections'}{$secid}{'inst'}.':'.$details->{'sections'}{$secid}{'loncapa'}.',';
Line 453  sub build_course { Line 474  sub build_course {
                     'cid' => '',                      'cid' => '',
                     'context' => 'createowner',                      'context' => 'createowner',
                     'linefeed' => $linefeed,                      'linefeed' => $linefeed,
                     'role' => 'cc',                      'role' => $ccrole,
                    };                     };
         $outcome = &LONCAPA::Enrollment::create_newuser($ownerargs,$logmsg,$newusermsg,$enrollcount,$addresult,$longroles,\%courseinfo,$context);          $outcome = &LONCAPA::Enrollment::create_newuser($ownerargs,$logmsg,$newusermsg,$enrollcount,$addresult,$rolenames,\%courseinfo,$context);
     } else {      } else {
         $outcome = 'ok';          $outcome = 'ok';
     }      }
Line 475  sub build_course { Line 496  sub build_course {
                course_home =>  $details->{'coursehome'},                 course_home =>  $details->{'coursehome'},
                nonstandard => $details->{'nonstandard'},                 nonstandard => $details->{'nonstandard'},
                crscode => $details->{'coursecode'},                 crscode => $details->{'coursecode'},
                  defaultcredits => $details->{'defaultcredits'},
                crsquota => $details->{'crsquota'},                 crsquota => $details->{'crsquota'},
                clonecourse => $details->{'clonecrs'},                 clonecourse => $details->{'clonecrs'},
                clonedomain => $details->{'clonedom'},                 clonedomain => $details->{'clonedom'},
Line 511  sub build_course { Line 533  sub build_course {
             $$logmsg .= &mt('Invalid home server for course').': '.$details->{'coursehome'};              $$logmsg .= &mt('Invalid home server for course').': '.$details->{'coursehome'};
             return;              return;
         }          }
         my ($success, $msg) = &Apache::loncommon::construct_course($courseargs,$logmsg,\$courseid,\$crsudom,\$crsunum,$udom,$uname,$context,$cnum);          my ($success, $msg) = &Apache::loncommon::construct_course($courseargs,$logmsg,\$courseid,\$crsudom,\$crsunum,$udom,$uname,$context,$cnum,$category);
  $$logmsg .= $msg;   $$logmsg .= $msg;
         if (!$success) {          if (!$success) {
             return;              return;
Line 521  sub build_course { Line 543  sub build_course {
     }      }
           
 #  #
 # Make owner a course coordinator  # Make owner a coordinator
 #  #
     if (($owner_domain) && ($owner_uname)) {      if (($owner_domain) && ($owner_uname)) {
         &Apache::lonnet::assignrole($owner_domain,$owner_uname,$courseid,'cc','','','','',$context);          &Apache::lonnet::assignrole($owner_domain,$owner_uname,$courseid,$ccrole,'','','','',$context);
     }      }
   
 #  #
 # Process other reqested users  # Process other reqested users
 #  #
   
       my @courseroles = qw(st ep ta in);
       push(@courseroles,$ccrole);
       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 565  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 $ccrole) || ($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 559  sub build_course { Line 614  sub build_course {
                     'cdom' => $crsudom,                      'cdom' => $crsudom,
                     'context' => 'createcourse',                      'context' => 'createcourse',
                     'linefeed' => $linefeed,                      'linefeed' => $linefeed,
                     'role' => $details->{'users'}{$userkey}{'roles'}[0],                       'role' => $details->{'users'}{$userkey}{'roles'}[0],
                    };                     };
                   if ($userargs->{'role'} eq 'st') {
                       if (exists($details->{'users'}{$userkey}{'credits'})) {  
                           $userargs->{'credits'} = $details->{'users'}{$userkey}{'credits'};
                           $userargs->{'credits'} =~ s/[^\d\.]//g;
                       }
                   }
                 $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 $ccrole) && ($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 635  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 588  sub build_course { Line 652  sub build_course {
                                 if ($usec ne '') {                                  if ($usec ne '') {
                                     $url .= '/'.$usec;                                      $url .= '/'.$usec;
                                 }                                  }
                                 $$output .= &Apache::loncommon::commit_studentrole(\$stulogmsg,$userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec,$context);                                  my $credits;
                             } else {                                  if (exists($details->{'users'}{$userkey}{'credits'})) {
                                       $credits = $details->{'users'}{$userkey}{'credits'};
                                       $credits =~ s/[^\d\.]//g;
                                   }
                                   $$output .= &Apache::loncommon::commit_studentrole(\$stulogmsg,$userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec,$context,$credits);
                               } elsif ($curr_role eq $ccrole) {
                                   $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 611  sub build_course { Line 698  sub build_course {
                         if ($usec ne '') {                          if ($usec ne '') {
                             $url .= '/'.$usec;                              $url .= '/'.$usec;
                         }                          }
                         $$output .= &Apache::loncommon::commit_studentrole(\$stulogmsg,$userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec,$context);                          my $credits;
                     } else {                          if (exists($details->{'users'}{$userkey}{'credits'})) {
                               $credits = $details->{'users'}{$userkey}{'credits'};
                               $credits =~ s/[^\d\.]//g;
                           }
                           $$output .= &Apache::loncommon::commit_studentrole(\$stulogmsg,$userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec,$context,$credits);
                       } 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 758  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.29  
changed lines
  Added in v.1.38


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