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

version 1.7.12.2, 2010/03/01 20:11:03 version 1.8, 2011/10/17 12:41:30
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 49  sub innercrsdirlist { Line 48  sub innercrsdirlist {
     unless ($path)  { $path=''; } else { $path.='/'; }      unless ($path)  { $path=''; } else { $path.='/'; }
     my %crsdata=&Apache::lonnet::coursedescription($courseid);      my %crsdata=&Apache::lonnet::coursedescription($courseid);
     my $getpropath = 1;      my $getpropath = 1;
     my @listing=&Apache::lonnet::dirlist      my ($dirlistref,$listerror) = 
  ($which,$crsdata{'domain'},$crsdata{'num'},$getpropath);          &Apache::lonnet::dirlist($which,$crsdata{'domain'},
     foreach (@listing) {                                   $crsdata{'num'},$getpropath);
  unless ($_=~/^\./) {      if (ref($dirlistref) eq 'ARRAY') {
     my @unpackline = split (/\&/,$_);          foreach (@{$dirlistref}) {
     if ($unpackline[3]&$dirptr) {      unless ($_=~/^\./) {
           my @unpackline = split (/\&/,$_);
           if ($unpackline[3]&$dirptr) {
 # is a directory, recurse  # is a directory, recurse
  &innercrsdirlist($courseid,$which.$unpackline[0],      &innercrsdirlist($courseid,$which.$unpackline[0],
             $path.$unpackline[0]);       $path.$unpackline[0]);
     } else {           } else { 
 # is a file, put into output  # is a file, put into output
  push (@output,$path.$unpackline[0]);      push (@output,$path.$unpackline[0]);
           }
     }      }
  }          }
     }      }
     return @output;      return @output;
 }  }
Line 242  sub copycoursefiles { Line 244  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.12.2  
changed lines
  Added in v.1.8


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