--- loncom/automation/batchcreatecourse.pm 2005/03/04 14:07:15 1.3 +++ loncom/automation/batchcreatecourse.pm 2005/08/31 06:31:22 1.8 @@ -1,3 +1,29 @@ +# +# $Id: batchcreatecourse.pm,v 1.8 2005/08/31 06:31:22 raeburn Exp $ +# +# Copyright Michigan State University Board of Trustees +# +# This file is part of the LearningOnline Network with CAPA (LON-CAPA). +# +# LON-CAPA is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# LON-CAPA is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LON-CAPA; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# /home/httpd/html/adm/gpl.txt +# +# http://www.lon-capa.org/ +# + package LONCAPA::batchcreatecourse; use LONCAPA::Configuration; use LONCAPA::Enrollment; @@ -185,7 +211,7 @@ 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} = $enrollcount; + $$courseids{$courseid} = $details{$num}{'class'}; } } } @@ -266,7 +292,7 @@ sub parse_coursereqs { } elsif ("@state" eq "class owner authtype") { $$details{$num}{'ownerauthtype'} = $text; } elsif ("@state" eq "class owner autharg") { - $$details{$num}{'ownerautharg'} = $text; + $$details{$num}{'ownerauthparam'} = $text; } elsif ("@state" eq "class authentication method") { $$details{$num}{'authtype'} = $text; } elsif ("@state" eq "class authentication param") { @@ -324,9 +350,6 @@ sub parse_coursereqs { $p->parse_file($coursefile); $p->eof; - if (-e "$coursefile") { -# unlink $coursefile; - } return; } @@ -380,22 +403,24 @@ sub build_course { $firstres = 'syl'; } foreach my $secid (sort keys %{$$details{$num}{'sections'}}) { - $sectionstr .= $$details{$num}{'sections'}{$secid}{'inst'}.':'.$$details{$num}{'sections'}{$secid}{'loncapa'}; + $sectionstr .= $$details{$num}{'sections'}{$secid}{'inst'}.':'.$$details{$num}{'sections'}{$secid}{'loncapa'}.','; } + $sectionstr =~ s/,$//; foreach my $xlist (sort keys %{$$details{$num}{'crosslists'}}) { - $xliststr .= $$details{$num}{'crosslists'}{$xlist}{'inst'}.':'.$$details{$num}{'crosslists'}{$xlist}{'loncapa'}; + $xliststr .= $$details{$num}{'crosslists'}{$xlist}{'inst'}.':'.$$details{$num}{'crosslists'}{$xlist}{'loncapa'}.','; } + $xliststr =~ s/,$//; my %courseinfo = ( inst_code => $$details{$num}{'coursecode'}, description => $$details{$num}{'title'} ); if (&Apache::lonnet::homeserver($$details{$num}{'owner'},$$details{$num}{'domain'}) eq 'no_host') { # Add user if no account - my $ownerargs = ('auth' => $$details{$num}{'ownerauthtype'}, + my $ownerargs = {'auth' => $$details{$num}{'ownerauthtype'}, 'authparam' => $$details{$num}{'ownerauthparam'}, 'emailenc' => $$details{$num}{'emailenc'}, - 'dom' => $$details{$num}{'domain'}, + 'udom' => $$details{$num}{'domain'}, 'uname' => $$details{$num}{'owner'}, 'pid' => '', 'first' => $$details{$num}{'users'}{$owner}{'first'}, @@ -409,14 +434,15 @@ sub build_course { 'cid' => '', 'context' => 'createowner', 'linefeed' => $linefeed, - 'role' => 'cc' - ); - $outcome = &LONCAPA::Enrollment::create_newuser($ownerargs,$logmsg,$newusermsg,$enrollcount,$addresult,$longroles,$courseinfo); + 'role' => 'cc', + }; + $outcome = &LONCAPA::Enrollment::create_newuser($ownerargs,$logmsg,$newusermsg,$enrollcount,$addresult,$longroles,\%courseinfo); } else { $outcome = 'ok'; } - my $courseargs = { + if ($outcome eq 'ok') { + my $courseargs = { ccuname => $$details{$num}{'owner'}, ccdomain => $$details{$num}{'domain'}, cdescr => $$details{$num}{'title'}, @@ -454,7 +480,6 @@ sub build_course { firstres => $firstres }; - if ($outcome eq 'ok') { my %host_servers = &Apache::loncommon::get_library_servers($cdom); if (! exists($host_servers{$$details{$num}{'coursehome'}})) { $$logmsg .= &mt('Invalid home server for course').': '.$$details{$num}{'coursehome'}; @@ -483,27 +508,30 @@ sub build_course { my ($username,$userdom) = split/:/,$userkey; if (&Apache::lonnet::homeserver($username,$userdom) eq 'no_host') { # Add user if no account my $firstrole = $$details{$num}{'users'}{$userkey}{'roles'}[0]; - my $firssec = $$details{$num}{'users'}{$userkey}{$firstrole}{'usec'}[0]; - my $userargs = ('auth' => $$details{$num}{'users'}{$userkey}{'authtype'}, - 'authparam' => $$details{$num}{'users'}{$userkey}{'authparam'}, + my $firstsec = $$details{$num}{'users'}{$userkey}{$firstrole}{'usec'}[0]; + my $userargs = { + 'auth' => $$details{$num}{'users'}{$userkey}{'authtype'}, + 'authparam' => $$details{$num}{'users'}{$userkey}{'autharg'}, 'emailenc' => $$details{$num}{'users'}{$userkey}{'emailenc'}, - 'dom' => $userdom, + 'udom' => $userdom, 'uname' => $username, 'pid' => $$details{$num}{'users'}{$userkey}{'studentID'}, - 'first' => $$details{$num}{'users'}{$userkey}{'first'}, - 'middle' => $$details{$num}{'users'}{$userkey}{'middle'}, - 'last' => $$details{$num}{'users'}{$userkey}{'last'}, - 'gene' => $$details{$num}{'users'}{$userkey}{'gene'}, + 'first' => $$details{$num}{'users'}{$userkey}{'firstname'}, + 'middle' => $$details{$num}{'users'}{$userkey}{'middlename'}, + 'last' => $$details{$num}{'users'}{$userkey}{'lastname'}, + 'gene' => $$details{$num}{'users'}{$userkey}{'generation'}, 'usec' => $firstsec, 'end' => $$details{$num}{'users'}{$userkey}{'end'}, 'start' => $$details{$num}{'users'}{$userkey}{'start'}, - 'emailaddr' => $$details{$num}{'users'}{$userkey}{'email'}, + 'emailaddr' => $$details{$num}{'users'}{$userkey}{'emailaddr'}, 'cid' => $courseid, + 'crs' => $crsunum, + 'cdom' => $crsudom, 'context' => 'createcourse', 'linefeed' => $linefeed, 'role' => $$details{$num}{'users'}{$userkey}{'roles'}[0], - ); - $outcome = &LONCAPA::Enrollment::create_newuser($userargs,$logmsg,$newusermsg,$enrollcount,$addresult,$longroles,$courseinfo); + }; + $outcome = &LONCAPA::Enrollment::create_newuser($userargs,$logmsg,$newusermsg,$enrollcount,$addresult,$longroles,\%courseinfo); # now add other roles and other sections. if ($outcome eq 'ok') { if (($firstrole ne 'st') && (@{$$details{$num}{'users'}{$userkey}{$firstrole}{'usec'}} > 1)) { @@ -561,13 +589,11 @@ sub build_course { if ($usec ne '') { $url .= '/'.$usec; } - $$output .= &Apache::loncreateuser::commit_standardrole($userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec); - $url = '/'.$crsudom.'/'.$crsunum; - if ($usec ne '') { - $url .= '/'.$usec; - } + my $stdresult = &Apache::loncreateuser::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,''); } } @@ -598,7 +624,7 @@ sub build_course { sub process_date { my $timestr = shift; my $timestamp = ''; - if ($timestr eq "No end date") { + if ($timestr !~ /:/) { $timestamp = ''; } else { my @entries = split/:/,$timestr; @@ -607,7 +633,9 @@ sub process_date { $entries[$j] =~ s/^0//; } } - $entries[1] = $entries[1] - 1; + if ($entries[1] > 0) { + $entries[1] = $entries[1] - 1; + } $timestamp = timelocal($entries[5],$entries[4],$entries[3],$entries[2],$entries[1],$entries[0]); } return $timestamp;