Diff for /loncom/interface/lonclonecourse.pm between versions 1.11 and 1.13.2.1

version 1.11, 2015/06/23 17:49:06 version 1.13.2.1, 2020/07/24 18:06:24
Line 30 Line 30
 package Apache::lonclonecourse;  package Apache::lonclonecourse;
 use LONCAPA;  use LONCAPA;
 use Apache::lonnet;  use Apache::lonnet;
   use DateTime();
   use DateTime::TimeZone;
   
 # ================================================ Get course directory listing  # ================================================ Get course directory listing
   
Line 105  sub rewritefile { Line 107  sub rewritefile {
   
 sub copyfile {  sub copyfile {
     my ($origcrsid,$newcrsid,$which)=@_;      my ($origcrsid,$newcrsid,$which)=@_;
     unless ($which=~/\.sequence$/) {      unless ($which=~/\.(page|sequence)$/) {
  return &writefile($newcrsid,$which,   return &writefile($newcrsid,$which,
       &readfile($origcrsid,$which));        &readfile($origcrsid,$which));
     } else {      } else {
Line 148  sub copyresourcedb { Line 150  sub copyresourcedb {
     my $delta=$date_shift*60*60*24;      my $delta=$date_shift*60*60*24;
     my %origcrsdata=&Apache::lonnet::coursedescription($origcrsid);      my %origcrsdata=&Apache::lonnet::coursedescription($origcrsid);
     my %newcrsdata= &Apache::lonnet::coursedescription($newcrsid);      my %newcrsdata= &Apache::lonnet::coursedescription($newcrsid);
       my $origtz;
       if (($date_mode) && ($date_mode ne 'preserve') && ($date_shift) && 
           (int($date_shift) == $date_shift)) {
           $origtz = $origcrsdata{'timezone'};
           if ($origtz eq '') {
               my %domdefaults = &Apache::lonnet::get_domain_defaults($origcrsdata{'domain'});
               if ($domdefaults{'timezone_def'} ne '') {
                   $origtz = $domdefaults{'timezone_def'};
               }
           }
           if ($origtz eq '') {
               $origtz = 'local';
           } elsif (!DateTime::TimeZone->is_valid_name($origtz)) {
               $origtz = 'local';
           }
       }
     my %data=&Apache::lonnet::dump      my %data=&Apache::lonnet::dump
  ('resourcedata',$origcrsdata{'domain'},$origcrsdata{'num'});   ('resourcedata',$origcrsdata{'domain'},$origcrsdata{'num'});
     $origcrsid=~s/^\///;      $origcrsid=~s/^\///;
Line 195  sub copyresourcedb { Line 213  sub copyresourcedb {
 # date_mode other: do not transfer dates  # date_mode other: do not transfer dates
         if (($date_mode) && ($date_mode ne 'preserve')) {          if (($date_mode) && ($date_mode ne 'preserve')) {
     if ($data{$key.'.type'}=~/^date_(start|end)$/) {      if ($data{$key.'.type'}=~/^date_(start|end)$/) {
        if ($date_mode eq 'shift') {          if ($date_mode eq 'shift') {
   $newdata{$thiskey}=$newdata{$thiskey}+$delta;                      if (($date_shift) && ($date_shift == int($date_shift))) { 
        } else {                          my $dt = DateTime->from_epoch(epoch => $newdata{$thiskey})
   delete($newdata{$thiskey});                                                        ->set_time_zone($origtz);
   delete($newdata{$thiskey.'.type'});                          if (($origtz eq 'local') && (!$ENV{TZ})) {
        }                              $ENV{TZ} = $dt->time_zone()->name();
                           }
                           eval {
                               $dt->add(days => int($date_shift));
                           };
                           if ($@) {
                               $newdata{$thiskey} = $newdata{$thiskey}+$delta+(60*60);
                           } else {
                               $newdata{$thiskey} = $dt->epoch();
                           }
                       } else {
                           $newdata{$thiskey} = $newdata{$thiskey}+$delta;
                       }
                   } else {
                       delete($newdata{$thiskey});
                       delete($newdata{$thiskey.'.type'});
                   }
             }              }
  }          }
     }      }
     return &Apache::lonnet::put      return &Apache::lonnet::put
  ('resourcedata',\%newdata,$newcrsdata{'domain'},$newcrsdata{'num'});   ('resourcedata',\%newdata,$newcrsdata{'domain'},$newcrsdata{'num'});

Removed from v.1.11  
changed lines
  Added in v.1.13.2.1


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