--- loncom/automation/batchcreatecourse.pm 2006/05/26 15:37:14 1.12 +++ loncom/automation/batchcreatecourse.pm 2007/05/11 01:48:26 1.21 @@ -1,5 +1,5 @@ # -# $Id: batchcreatecourse.pm,v 1.12 2006/05/26 15:37:14 albertel Exp $ +# $Id: batchcreatecourse.pm,v 1.21 2007/05/11 01:48:26 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -29,12 +29,10 @@ use LONCAPA::Configuration; use LONCAPA::Enrollment; use HTML::Parser; use Time::Local; -use Apache::Constants; use Apache::lonnet; use Apache::loncommon; -use Apache::loncreatecourse; -use Apache::loncreateuser; use Apache::lonlocal; +use LONCAPA qw(:match); use strict; @@ -56,6 +54,7 @@ use strict; # # # Underwater Basket Weaving +# Course # ss05ubw101 # msul1 # msu @@ -74,13 +73,14 @@ use strict; # # # nav +# 20 # 466011437c34194msul1 # msu # # 1 # 1 # 0 -# keyadmin@msu +# keyadmin:msu # 1 # 1 # @@ -154,8 +154,14 @@ use strict; # A value of 0 or blank is equivalent to an unchecked box or 'No' # response. Dates are in format YYYY:MM:DD:HH:MM:SS (:separators required) # -# firstres can be nav, syl , or blank for "Navigate Contents", Syllabus, or +# firstres can be nav, syl, or blank for "Navigate Contents", Syllabus, or # no entry respectively. +# +# crstype can be Course or Group +# +# crsquota is the total disk space permitted for course group portfolio files +# in all course groups. +# # For format of other parameters, refer to the interactive CCRS page # and view how the equivalent parameter is displayed in the web form. # @@ -166,7 +172,7 @@ use strict; # # Directory for retrieval of files listed in @$requests is: # /home/httpd/perl/tmp/addcourse/$dom/auto/pending if $context = auto -# /home/httpd/perl/tmp/addcourse/$dom/web/$udom_$uname if $context = web +# /home/httpd/perl/tmp/addcourse/$dom/web/$uname_$udom/pending if $context = web # # inputs (five) - requests - ref to array of filename(s) containing course requests # courseids - ref to hash to store LON-CAPA course ids of new courses @@ -201,7 +207,7 @@ sub create_courses { $newcoursedir .= '/pending'; } else { if ($uname && $udom) { - $newcoursedir .= '/'.$udom.'_'.$uname; + $newcoursedir .= '/'.$uname.'_'.$udom.'/pending'; } else { $logmsg = "batchcreatecourse::create_courses() called without username and/or domain of requesting Domain Coordinator"; } @@ -213,7 +219,9 @@ sub create_courses { &parse_coursereqs($newcoursedir.'/'.$request, \%details); foreach my $num (sort keys %details) { my $courseid = &build_course($dom,$num,$context,\%details,\%longroles,\$logmsg,\$newusermsg,\$addresult,\%enrollcount,\$output,\$keysmsg); - $$courseids{$courseid} = $details{$num}{'class'}; + if ($courseid =~ /^$match_courseid$/) { + $$courseids{$courseid} = $details{$num}{'class'}; + } } } } @@ -241,7 +249,7 @@ sub parse_coursereqs { my $xlist = 0; my $userkey = ''; my $role = ''; - my @items = ('title','optional_id','coursecode','coursehome','reshome','nonstandard','adds','drops','topmap','firstres','clonecrs','clonedom','showphotos','setpolicy','setcontent','setkeys','keyauth','disresdis','disablechat','openall','notify_owner','notify_dc'); + my @items = ('title','optional_id','coursecode','coursehome','reshome','nonstandard','adds','drops','topmap','firstres','clonecrs','clonedom','showphotos','setpolicy','setcontent','setkeys','keyauth','disresdis','disablechat','openall','notify_owner','notify_dc','crstype','crsquota'); my @dateitems = ('enrollstart','enrollend','accessstart','accessend'); my @useritems = ('autharg','authtype','firstname','generation','lastname','middlename','studentID'); my $p = HTML::Parser->new @@ -448,11 +456,13 @@ sub build_course { ccuname => $$details{$num}{'owner'}, ccdomain => $$details{$num}{'domain'}, cdescr => $$details{$num}{'title'}, + crstype => $$details{$num}{'crstype'}, curl => $$details{$num}{'topmap'}, course_domain => $cdom, course_home => $$details{$num}{'coursehome'}, nonstandard => $$details{$num}{'nonstandard'}, crscode => $$details{$num}{'coursecode'}, + crsquota => $$details{$num}{'crsquota'}, clonecourse => $$details{$num}{'clonecrs'}, clonedomain => $$details{$num}{'clonedom'}, crsid => $$details{$num}{'optional_id'}, @@ -482,13 +492,13 @@ sub build_course { firstres => $firstres }; - my %host_servers = &Apache::loncommon::get_library_servers($cdom); + my %host_servers = &Apache::lonnet::get_servers($cdom,'library'); if (! exists($host_servers{$$details{$num}{'coursehome'}})) { $$logmsg .= &mt('Invalid home server for course').': '.$$details{$num}{'coursehome'}; return; } - &Apache::loncreatecourse::construct_course($courseargs,$logmsg,\$courseid,\$crsudom,\$crsunum,$udom,$uname); + &Apache::loncommon::construct_course($courseargs,$logmsg,\$courseid,\$crsudom,\$crsunum,$udom,$uname); } else { return; } @@ -546,7 +556,7 @@ sub build_course { if ($usec ne '') { $url .= '/'.$usec; } - $$output .= &Apache::loncreateuser::commit_standardrole($userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec); + $$output .= &Apache::loncommon::commit_standardrole($userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec); } } if (@{$$details{$num}{'users'}{$userkey}{'roles'}} > 1) { @@ -560,14 +570,14 @@ sub build_course { if ($usec ne '') { $url .= '/'.$usec; } - $$output .= &Apache::loncreateuser::commit_studentrole(\$stulogmsg,$userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec); + $$output .= &Apache::loncommon::commit_studentrole(\$stulogmsg,$userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec); } else { foreach my $usec (@{$$details{$num}{'users'}{$userkey}{$curr_role}{'usec'}}) { $url = '/'.$crsudom.'/'.$crsunum; if ($usec ne '') { $url .= '/'.$usec; } - $$output .= &Apache::loncreateuser::commit_standardrole($userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec); + $$output .= &Apache::loncommon::commit_standardrole($userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec); } } } @@ -583,7 +593,7 @@ sub build_course { if ($usec ne '') { $url .= '/'.$usec; } - $$output .= &Apache::loncreateuser::commit_studentrole(\$stulogmsg,$userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec); + $$output .= &Apache::loncommon::commit_studentrole(\$stulogmsg,$userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec); } else { if (@{$$details{$num}{'users'}{$userkey}{$curr_role}{'usec'}} > 0) { foreach my $usec (@{$$details{$num}{'users'}{$userkey}{$curr_role}{'usec'}}) { @@ -591,12 +601,12 @@ sub build_course { if ($usec ne '') { $url .= '/'.$usec; } - my $stdresult = &Apache::loncreateuser::commit_standardrole($userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec); + my $stdresult = &Apache::loncommon::commit_standardrole($userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec); $$output .= $stdresult; } } else { $url = '/'.$crsudom.'/'.$crsunum; - $$output .= &Apache::loncreateuser::commit_standardrole($userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,''); + $$output .= &Apache::loncommon::commit_standardrole($userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,''); } } } @@ -669,10 +679,10 @@ sub process_date { } if ($entries[2] == 29) { if ($entries[0]%4 != 0) { - $entries[2] == 28; + $entries[2] = 28; } elsif ( $entries[0]%100 == 0 && $entries[0]%400 != 0) { - $entries[2] == 28; + $entries[2] = 28; } } }