--- loncom/interface/loncreatecourse.pm	2003/08/30 14:36:24	1.28
+++ loncom/interface/loncreatecourse.pm	2003/09/02 18:00:14	1.31
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Create a course
 #
-# $Id: loncreatecourse.pm,v 1.28 2003/08/30 14:36:24 www Exp $
+# $Id: loncreatecourse.pm,v 1.31 2003/09/02 18:00:14 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -78,6 +78,76 @@ sub crsdirlist {
     return @output;
 }
 
+# ============================================================= Read a userfile
+
+sub readfile {
+    my ($courseid,$which)=@_;
+    my %crsdata=&Apache::lonnet::coursedescription($courseid);
+    return &Apache::lonnet::getfile('/uploaded/'.$crsdata{'domain'}.'/'.
+				    $crsdata{'num'}.'/'.$which);
+}
+
+# ============================================================ Write a userfile
+
+sub writefile {
+    (my $courseid, my $which,$ENV{'form.output'})=@_;
+    my %crsdata=&Apache::lonnet::coursedescription($courseid);
+    return &Apache::lonnet::finishuserfileupload(
+					  $crsdata{'num'},$crsdata{'domain'},
+					  $crsdata{'home'},
+					  'output',$which);
+}
+
+# ============================================================= Copy a userfile
+
+sub copyfile {
+    my ($origcrsid,$newcrsid,$which)=@_;
+    return &writefile($newcrsid,$which,&readfile($origcrsid,$which));
+}
+
+# =============================================================== Copy a dbfile
+
+sub copydb {
+    my ($origcrsid,$newcrsid,$which)=@_;
+    $which=~s/\.db$//;
+    my %origcrsdata=&Apache::lonnet::coursedescription($origcrsid);
+    my %newcrsdata= &Apache::lonnet::coursedescription($newcrsid);
+    my %data=&Apache::lonnet::dump
+	($which,$origcrsdata{'domain'},$origcrsdata{'num'});
+    return &Apache::lonnet::put
+	($which,\%data,$newcrsdata{'domain'},$newcrsdata{'num'});
+}
+
+# ========================================================== Copy all userfiles
+
+sub copyuserfiles {
+    my ($origcrsid,$newcrsid)=@_;
+    foreach (&crsdirlist($origcrsid,'userfiles')) {
+	&copyfile($origcrsid,$newcrsid,$_);
+    }
+}
+# ========================================================== Copy all userfiles
+
+sub copydbfiles {
+    my ($origcrsid,$newcrsid)=@_;
+    foreach (&crsdirlist($origcrsid)) {
+	if ($_=~/\.db$/) {
+	    unless 
+             ($_=~/^(nohist\_|discussiontimes|classlist|versionupdate)/) {
+		 &copydb($origcrsid,$newcrsid,$_);
+	     }
+	}
+    }
+}
+
+# ======================================================= Copy all course files
+
+sub copycoursefiles {
+    my ($origcrsid,$newcrsid)=@_;
+    &copyuserfiles($origcrsid,$newcrsid);
+    &copydbfiles($origcrsid,$newcrsid);
+}
+
 # ===================================================== Phase one: fill-in form
 
 sub print_course_creation_page {