Diff for /loncom/interface/lonclonecourse.pm between versions 1.7 and 1.7.12.2

version 1.7, 2008/09/11 13:19:28 version 1.7.12.2, 2010/03/01 20:11:03
Line 30 Line 30
 package Apache::lonclonecourse;  package Apache::lonclonecourse;
 use LONCAPA;  use LONCAPA;
 use Apache::lonnet;  use Apache::lonnet;
   use Apache::loncoursedata;
   
 # ================================================ Get course directory listing  # ================================================ Get course directory listing
   
Line 241  sub copycoursefiles { Line 242  sub copycoursefiles {
     &copyresourcedb($origcrsid,$newcrsid,$date_mode,$date_shift);      &copyresourcedb($origcrsid,$newcrsid,$date_mode,$date_shift);
 }  }
   
   sub copyroster {
       my ($origcrsid,$newcrsid,$accessstart,$accessend) = @_;
       my %origcrsdata=&Apache::lonnet::coursedescription($origcrsid);
       my %newcrsdata=&Apache::lonnet::coursedescription($newcrsid);
       my $classlist = 
           &Apache::loncoursedata::get_classlist($origcrsdata{'domain'},$origcrsdata{'num'});
       my %origdate = &Apache::lonnet::get('environment',
                         ['default_enrollment_end_date'],
                         $origcrsdata{'domain'},$origcrsdata{'num'});
   
       my $enddate = $origdate{'default_enrollment_end_date'};
   
       my $end_idx = &Apache::loncoursedata::CL_END();
       my $start_idx = &Apache::loncoursedata::CL_START();
       my $id_idx = &Apache::loncoursedata::CL_ID();
       my $sec_idx  = &Apache::loncoursedata::CL_SECTION();
       my $name_idx = &Apache::loncoursedata::CL_FULLNAME();
       my $status_idx   = &Apache::loncoursedata::CL_STATUS();
       my $type_idx = &Apache::loncoursedata::CL_TYPE();
       my $locktype_idx = &Apache::loncoursedata::CL_LOCKEDTYPE();
   
       my (%newstudents,%rolesadded,$numadded);
       my $numadded = 0;
       if (ref($classlist) eq 'HASH') {
           foreach my $student (sort(keys(%{$classlist}))) {
               my ($sname,$sdom) = split(/:/,$student);
               next if ($classlist->{$student}->[$end_idx] eq '-1'
                      || ($classlist->{$student}->[$start_idx] eq '-1'));
               if (($classlist->{$student}->[$status_idx] eq 'Active') ||
                   ($classlist->{$student}->[$end_idx] >= $enddate)) {
                   if (ref($classlist->{$student}) eq 'ARRAY') {
                       my $sec = $classlist->{$student}->[$sec_idx];
                       $newstudents{$student}{'section'} = $sec;
                       $newstudents{$student}{'info'} =
                           $accessend.':'.
                           $accessstart.':'.
                           $classlist->{$student}->[$id_idx].':'.
                           $sec.':'.
                           $classlist->{$student}->[$name_idx].':'.
                           $classlist->{$student}->[$type_idx].':'.
                           $classlist->{$student}->[$locktype_idx];
                   }
               }
           }
       }
       if (keys(%newstudents)) {
           my $uurl=$newcrsid;
           $uurl=~s/\_/\//g;
           foreach my $student (sort(keys(%newstudents))) {
               my $surl = $uurl;  
               if ($newstudents{$student}{'section'}) {
                   $surl.='/'.$newstudents{$student}{'section'};
               }
               my ($sname,$sdom) = split(/:/,$student);
               if (&Apache::lonnet::assignrole($sdom,$sname,$uurl,'st',$accessend,$accessstart,undef,undef,'requestcourses') eq 'ok') {
                   $rolesadded{$student} = $newstudents{$student}{'info'};
                   $numadded ++ ;
               }
           }
       }
       my $clisterror;
       if (keys(%rolesadded) > 0) {
           my $reply = &Apache::lonnet::cput('classlist',\%rolesadded,$newcrsdata{'domain'},$newcrsdata{'num'});
           unless (($reply eq 'ok') || ($reply eq 'delayed')) {
               $clisterror = 'error: '.$reply;
           }
       }
       return ($numadded,$clisterror);
   }
   
 1;  1;

Removed from v.1.7  
changed lines
  Added in v.1.7.12.2


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