version 1.33, 2003/09/03 21:24:32
|
version 1.36, 2003/09/08 21:55:46
|
Line 98 sub writefile {
|
Line 98 sub writefile {
|
'output',$which); |
'output',$which); |
} |
} |
|
|
|
# ===================================================================== Rewrite |
|
|
|
sub rewritefile { |
|
my ($contents,%rewritehash)=@_; |
|
foreach (keys %rewritehash) { |
|
my $pattern=$_; |
|
$pattern=~s/(\W)/\\$1/gs; |
|
my $new=$rewritehash{$_}; |
|
$contents=~s/$pattern/$new/gs; |
|
} |
|
return $contents; |
|
} |
|
|
# ============================================================= Copy a userfile |
# ============================================================= Copy a userfile |
|
|
sub copyfile { |
sub copyfile { |
my ($origcrsid,$newcrsid,$which)=@_; |
my ($origcrsid,$newcrsid,$which)=@_; |
return &writefile($newcrsid,$which,&readfile($origcrsid,$which)); |
unless ($which=~/\.sequence$/) { |
|
return &writefile($newcrsid,$which, |
|
&readfile($origcrsid,$which)); |
|
} else { |
|
my %origcrsdata=&Apache::lonnet::coursedescription($origcrsid); |
|
my %newcrsdata= &Apache::lonnet::coursedescription($newcrsid); |
|
return &writefile($newcrsid,$which, |
|
&rewritefile( |
|
&readfile($origcrsid,$which), |
|
( |
|
'/uploaded/'.$origcrsdata{'domain'}.'/'.$origcrsdata{'num'}.'/' |
|
=> '/uploaded/'. $newcrsdata{'domain'}.'/'. $newcrsdata{'num'}.'/' |
|
))); |
|
} |
} |
} |
|
|
# =============================================================== Copy a dbfile |
# =============================================================== Copy a dbfile |
Line 118 sub copydb {
|
Line 144 sub copydb {
|
($which,\%data,$newcrsdata{'domain'},$newcrsdata{'num'}); |
($which,\%data,$newcrsdata{'domain'},$newcrsdata{'num'}); |
} |
} |
|
|
|
# ========================================================== Copy resourcesdata |
|
|
|
sub copyresourcedb { |
|
my ($origcrsid,$newcrsid)=@_; |
|
my %origcrsdata=&Apache::lonnet::coursedescription($origcrsid); |
|
my %newcrsdata= &Apache::lonnet::coursedescription($newcrsid); |
|
my %data=&Apache::lonnet::dump |
|
('resourcedata',$origcrsdata{'domain'},$origcrsdata{'num'}); |
|
$origcrsid=~s/^\///; |
|
$origcrsid=~s/\//\_/; |
|
$newcrsid=~s/^\///; |
|
$newcrsid=~s/\//\_/; |
|
my %newdata=(); |
|
undef %newdata; |
|
my $startdate=$data{$origcrsid.'.0.opendate'}; |
|
my $today=time; |
|
my $delta=0; |
|
if ($startdate) { |
|
my $oneday=60*60*24; |
|
$delta=$today-$startdate; |
|
$delta=int($delta/$oneday)*$oneday; |
|
} |
|
# ugly retro fix for broken version of types |
|
foreach (keys %data) { |
|
if ($_=~/\wtype$/) { |
|
my $newkey=$_; |
|
$newkey=~s/type$/\.type/; |
|
$data{$newkey}=$data{$_}; |
|
delete $data{$_}; |
|
} |
|
} |
|
# adjust dates |
|
foreach (keys %data) { |
|
my $thiskey=$_; |
|
$thiskey=~s/^$origcrsid/$newcrsid/; |
|
$newdata{$thiskey}=$data{$_}; |
|
if ($data{$_.'.type'}=~/^date/) { |
|
$newdata{$thiskey}=$newdata{$thiskey}+$delta; |
|
} |
|
} |
|
return &Apache::lonnet::put |
|
('resourcedata',\%newdata,$newcrsdata{'domain'},$newcrsdata{'num'}); |
|
} |
|
|
# ========================================================== Copy all userfiles |
# ========================================================== Copy all userfiles |
|
|
sub copyuserfiles { |
sub copyuserfiles { |
Line 133 sub copydbfiles {
|
Line 203 sub copydbfiles {
|
foreach (&crsdirlist($origcrsid)) { |
foreach (&crsdirlist($origcrsid)) { |
if ($_=~/\.db$/) { |
if ($_=~/\.db$/) { |
unless |
unless |
($_=~/^(nohist\_|discussiontimes|classlist|versionupdate)/) { |
($_=~/^(nohist\_|discussiontimes|classlist|versionupdate|resourcedata)/) { |
©db($origcrsid,$newcrsid,$_); |
©db($origcrsid,$newcrsid,$_); |
} |
} |
} |
} |
Line 146 sub copycoursefiles {
|
Line 216 sub copycoursefiles {
|
my ($origcrsid,$newcrsid)=@_; |
my ($origcrsid,$newcrsid)=@_; |
©userfiles($origcrsid,$newcrsid); |
©userfiles($origcrsid,$newcrsid); |
©dbfiles($origcrsid,$newcrsid); |
©dbfiles($origcrsid,$newcrsid); |
|
©resourcedb($origcrsid,$newcrsid); |
} |
} |
|
|
# ===================================================== Phase one: fill-in form |
# ===================================================== Phase one: fill-in form |
Line 354 ENDENHEAD
|
Line 425 ENDENHEAD
|
©coursefiles($cloneid,$courseid); |
©coursefiles($cloneid,$courseid); |
# Restore title |
# Restore title |
$cenv{'description'}=$cdescr; |
$cenv{'description'}=$cdescr; |
|
$cenv{'clonedfrom'}=$cloneid; |
} |
} |
} |
} |
# |
# |