--- loncom/interface/loncoursequeueadmin.pm 2009/08/20 20:43:08 1.5 +++ loncom/interface/loncoursequeueadmin.pm 2009/11/04 17:42:17 1.11 @@ -1,7 +1,7 @@ # The LearningOnline Network # Utilities to administer domain course requests and course self-enroll requests # -# $Id: loncoursequeueadmin.pm,v 1.5 2009/08/20 20:43:08 raeburn Exp $ +# $Id: loncoursequeueadmin.pm,v 1.11 2009/11/04 17:42:17 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -76,13 +76,13 @@ sub send_selfserve_notification { if ($context eq 'coursemanagers') { $rawsubj = 'Self-enrollment requests processed'; push(@rawmsg,{ - mt => 'Enrollment requests in the following course: [_1]have been processed.', + mt => 'Enrollment requests in the following course: [_1] have been processed.', args => ["\n $contextdesc"], }); } elsif ($context eq 'domainmanagers') { $rawsubj = 'Course requests reviewed'; push(@rawmsg,{ - mt => 'Course creation requests in the following domain: [_1]have been reviewed.', + mt => 'Course creation requests in the following domain: [_1] have been reviewed.', args => ["\n $contextdesc"], }); if (ref($textstr) eq 'ARRAY') { @@ -188,7 +188,7 @@ sub send_selfserve_notification { @{$item->{args}})."\n"; } } - if ($context eq 'managers') { + if ($context eq 'coursemanagers') { if ($approvedlist) { $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Approved enrollments:')."\n".$approvedlist; } @@ -220,7 +220,7 @@ sub display_queued_requests { } else { $formaction = '/adm/createcourse'; $namespace = 'courserequestqueue'; - %requesthash = &Apache::lonnet::dump_dom($namespace,$dom,undef,'_approval'); + %requesthash = &Apache::lonnet::dump_dom($namespace,$dom,'_approval'); $nextelement = ''; } my ($output,%queue_by_date,%crstypes); @@ -293,8 +293,8 @@ sub display_queued_requests { } else { my ($cnum,$ownername,$ownerdom,$type,$cdesc)=split(/:/,$request,5); - $detailslink=''.$cdesc.''; + $detailslink=''.$cdesc.''; $crstype = $type; if (defined($crstypes{$type})) { $crstype = $crstypes{$type}; @@ -380,7 +380,7 @@ sub update_request_queue { $domdesc = &Apache::lonnet::domain($cdom); $namespace = 'courserequestqueue'; $beneficiary = 'courserequestor'; - %requesthash = &Apache::lonnet::dump_dom($namespace,$cdom,undef,'_approval'); + %requesthash = &Apache::lonnet::dump_dom($namespace,$cdom,'_approval'); my $chome = &Apache::lonnet::domain($cdom,'primary'); $hostname = &Apache::lonnet::hostname($chome); $protocol = $Apache::lonnet::protocol{$chome}; @@ -879,7 +879,7 @@ sub course_creation { $owneremail = $emails{$email}; last if ($owneremail ne ''); } - my %reqdetails = &build_batchcreatehash($dom,$details,$owneremail,$domdefs); + my %reqdetails = &build_batchcreatehash($dom,$context,$details,$owneremail,$domdefs); my $cid = &LONCAPA::batchcreatecourse::build_course($dom,$cnum,'requestcourses', \%reqdetails,$longroles,\$logmsg,\$newusermsg,\$addresult, \$enrollcount,\$output,\$keysmsg,$ownerdom,$ownername,$cnum,$crstype); @@ -892,7 +892,7 @@ sub course_creation { } sub build_batchcreatehash { - my ($dom,$details,$owneremail,$domdefs) = @_; + my ($dom,$context,$details,$owneremail,$domdefs) = @_; my %batchhash; my @items = qw{owner domain coursehome clonecrs clonedom datemode dateshift enrollstart enrollend accessstart accessend sections crosslists users}; if ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH')) { @@ -913,22 +913,56 @@ sub build_batchcreatehash { } else { $batchhash{'crstype'} = 'Course'; } - $batchhash{'users'}{$details->{$owner}} = { - firstname => $env{'environment.first'}, - lastname => $env{'environment.last'}, - emailenc => $emailenc, - email => $owneremail, - }; + my ($owner_firstname,$owner_lastname); + if ($context eq 'domain') { + my %userenv = &Apache::lonnet::userenvironment($details->{'domain'}, + $details->{'owner'}, + 'firstname','lastname'); + $owner_firstname = $userenv{'firstname'}; + $owner_lastname = $userenv{'lastname'}; + } else { + $owner_firstname = $env{'environment.firstname'}; + $owner_lastname = $env{'environment.lastname'}; + } + if (ref($details->{'personnel'}) eq 'HASH') { + %{$batchhash{'users'}} = %{$details->{'personnel'}}; + if (ref($batchhash{'users'}) eq 'HASH') { + foreach my $userkey (keys(%{$batchhash{'users'}})) { + if (ref($batchhash{'users'}{$userkey}) eq 'HASH') { + if (ref($batchhash{'users'}{$userkey}{'roles'}) eq 'ARRAY') { + foreach my $role (@{$batchhash{'users'}{$userkey}{'roles'}}) { + my $start = ''; + my $end = ''; + if ($role eq 'st') { + $start = $details->{'accessstart'}; + $end = $details->{'accessend'}; + } + $batchhash{'users'}{$userkey}{$role}{'start'} = $start; + $batchhash{'users'}{$userkey}{$role}{'end'} = $end; + } + } + } + } + } + } + $batchhash{'users'}{$owner}{firstname} = $owner_firstname; + $batchhash{'users'}{$owner}{lastname} = $owner_lastname; + $batchhash{'users'}{$owner}{emailenc} = $emailenc; + $batchhash{'users'}{$owner}{owneremail} = $owneremail; } return %batchhash; } sub can_clone_course { - my ($uname,$udom,$clonecrs,$clonedom) = @_; + my ($uname,$udom,$clonecrs,$clonedom,$crstype) = @_; my $canclone; + my $ccrole = 'cc'; + if ($crstype eq 'Community') { + $ccrole = 'co'; + } my %roleshash = &Apache::lonnet::get_my_roles($uname,$udom,'userroles',['active'], - ['cc'],[$clonedom]); - if (exists($roleshash{$clonedom.':'.$clonecrs.':cc'})) { + [$ccrole],[$clonedom]); + if (exists($roleshash{$clonecrs.':'.$clonedom.':'.$ccrole})) { $canclone = 1; } else { my %courseenv = &Apache::lonnet::userenvironment($clonedom,$clonecrs,('cloners'));