--- loncom/interface/loncoursequeueadmin.pm 2021/06/20 18:37:35 1.52.2.3.2.4 +++ loncom/interface/loncoursequeueadmin.pm 2016/10/06 16:20:05 1.56 @@ -1,7 +1,7 @@ # The LearningOnline Network # Utilities to administer domain course requests and course self-enroll requests # -# $Id: loncoursequeueadmin.pm,v 1.52.2.3.2.4 2021/06/20 18:37:35 raeburn Exp $ +# $Id: loncoursequeueadmin.pm,v 1.56 2016/10/06 16:20:05 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -105,13 +105,13 @@ sub send_selfserve_notification { $rawsubj = 'Self-enrollment requests processed'; push(@rawmsg,{ mt => 'Enrollment requests in the following course: [_1] have been processed.', - args => ["\n$contextdesc\n"], + args => ["\n$contextdesc"], }); } elsif ($context eq 'domainmanagers') { $rawsubj = 'Course/Community requests reviewed'; push(@rawmsg,{ - mt => 'Course/Community creation requests in the following domain: [_1] have been reviewed.', - args => ["\n$contextdesc\n"], + mt => 'Course/Community creation requests in the following domain: "[_1]" have been reviewed.', + args => ["\n$contextdesc"], }); if (ref($textstr) eq 'ARRAY') { push(@rawmsg,@{$textstr}); @@ -119,8 +119,8 @@ sub send_selfserve_notification { } elsif ($context eq 'authormanagers') { $rawsubj = 'Authoring Space requests reviewed'; push(@rawmsg,{ - mt => 'Authoring requests in the following domain: [_1] have been reviewed.', - args => ["\n$contextdesc\n"], + mt => 'Authoring requests in the following domain: "[_1]" have been reviewed.', + args => ["\n$contextdesc"], }); if (ref($textstr) eq 'ARRAY') { push(@rawmsg,@{$textstr}); @@ -128,8 +128,8 @@ sub send_selfserve_notification { } elsif ($context eq 'usernamemanagers') { $rawsubj = 'LON-CAPA account requests reviewed'; push(@rawmsg,{ - mt => 'Account requests in the following domain: [_1] have been reviewed.', - args => ["\n$contextdesc\n"], + mt => 'Account requests in the following domain: "[_1]" have been reviewed.', + args => ["\n$contextdesc"], }); if (ref($textstr) eq 'ARRAY') { push(@rawmsg,@{$textstr}); @@ -304,11 +304,11 @@ sub send_selfserve_notification { my $stamp = time; my $msgcount = &Apache::lonmsg::get_uniq(); my $sender_lh = &Apache::loncommon::user_lang($uname,$udom,$cid); - $subject = &mt_user($sender_lh,$rawsubj); + $subject = &Apache::lonlocal::mt_user($sender_lh,$rawsubj); $message = ''; foreach my $item (@rawmsg) { if (ref($item) eq 'HASH') { - $message .= &mt_user($sender_lh,$item->{mt},@{$item->{args}})."\n"; + $message .= &Apache::lonlocal::mt_user($sender_lh,$item->{mt},@{$item->{args}})."\n"; } } &Apache::lonmsg::process_sent_mail($subject,'',$numsent,$stamp,$uname,$udom,$msgcount,$cid,$$,$message, @@ -322,41 +322,41 @@ sub send_selfserve_notification { foreach my $recip (sort(keys(%{$msgcc}))) { my ($ccname,$ccdom) = split(/:/,$recip); my $recip_lh = &Apache::loncommon::user_lang($ccname,$ccdom,$cid); - my $subject = &mt_user($sender_lh,$rawsubj); + my $subject = &Apache::lonlocal::mt_user($sender_lh,$rawsubj); my $message = ''; foreach my $item (@rawmsg) { if (ref($item) eq 'HASH') { - $message .= &mt_user($sender_lh,$item->{mt}, - @{$item->{args}})."\n"; + $message .= &Apache::lonlocal::mt_user($sender_lh,$item->{mt}, + @{$item->{args}})."\n"; } } if ($context eq 'coursemanagers') { if ($approvedlist) { - $message .= "\n\n".&mt_user($sender_lh,'Approved enrollments:')."\n".$approvedlist; + $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Approved enrollments:')."\n".$approvedlist; } if ($rejectedlist) { - $message .= "\n\n".&mt_user($sender_lh,'Rejected enrollments:')."\n".$rejectedlist; + $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Rejected enrollments:')."\n".$rejectedlist; } } elsif ($context eq 'domainmanagers') { if ($approvedlist) { - $message .= "\n\n".&mt_user($sender_lh,'Approved course requests:')."\n".$approvedlist; + $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Approved course requests:')."\n".$approvedlist; } if ($rejectedlist) { - $message .= "\n\n".&mt_user($sender_lh,'Rejected course requests:')."\n".$rejectedlist; + $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Rejected course requests:')."\n".$rejectedlist; } } elsif ($context eq 'authormanagers') { if ($approvedlist) { - $message .= "\n\n".&mt_user($sender_lh,'Approved author role requests:')."\n".$approvedlist; + $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Approved author role requests:')."\n".$approvedlist; } if ($rejectedlist) { - $message .= "\n\n".&mt_user($sender_lh,'Rejected author role requests:')."\n".$rejectedlist; + $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Rejected author role requests:')."\n".$rejectedlist; } } elsif ($context eq 'usernamemanagers') { if ($approvedlist) { - $message .= "\n\n".&mt_user($sender_lh,'Approved LON-CAPA account requests:')."\n".$approvedlist; + $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Approved LON-CAPA account requests:')."\n".$approvedlist; } if ($rejectedlist) { - $message .= "\n\n".&mt_user($sender_lh,'Rejected LON-CAPA account requests:')."\n".$rejectedlist; + $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Rejected LON-CAPA account requests:')."\n".$rejectedlist; } } $status .= &Apache::lonmsg::user_normal_msg($ccname,$ccdom,$subject,$message,undef,undef,undef,1, @@ -506,7 +506,7 @@ sub build_queue_display { my %crstypes; my $output = &Apache::loncommon::start_data_table(). &Apache::loncommon::start_data_table_header_row(); - unless (($context eq 'pending') || ($context eq 'displaypending') || ($context eq 'helpdesk')) { + unless (($context eq 'pending') || ($context eq 'displaypending') || ($context eq 'helpdesk')) { $output .= ''.&mt('Action').''; } $output .= ''.&mt('Requestor').''; @@ -528,6 +528,7 @@ sub build_queue_display { unofficial => 'Unofficial course', community => 'Community', textbook => 'Textbook course', + placement => 'Placement test', ); $output .= ''.&mt('Type').''. ''.&mt('Date requested').''. @@ -609,7 +610,7 @@ sub build_queue_display { } elsif ($context eq 'requestusername') { $row .= ''.$showtime.''."\n". ''.$detailslink.''."\n"; - } else { + } else { if ($context eq 'pending' || $context eq 'displaypending' || $context eq 'stillpending') { $row .= ''.$instcode.''."\n"; } else { @@ -879,10 +880,10 @@ sub update_request_queue { my $dbname = 'nohist_requestedusernames'; my $domconfiguser = &Apache::lonnet::get_domainconfiguser($cdom); my %curr = &Apache::lonnet::get($dbname,[$uname],$cdom,$domconfiguser); - + if (ref($curr{$uname}) eq 'HASH') { - my ($logtoken,$serverid,$encpass,$courseid,$id,$firstname, - $middlename,$lastname,$generation,$inststatus,$email); + my ($username,$logtoken,$serverid,$encpass,$courseid,$id,$firstname, + $middlename,$lastname,$generation,$inststatus); $curr{$uname}{'timestamp'} = $now; $curr{$uname}{'adjudicator'} = $env{'user.name'}.':'.$env{'user.domain'}; $courseid = $curr{$uname}{'courseid'}; @@ -893,35 +894,14 @@ sub update_request_queue { $generation = $curr{$uname}{'generation'}; $inststatus = $curr{$uname}{'inststatus'}; - if ($curr{$uname}{'email'} ne '') { - $email = $curr{$uname}{'email'}; - } elsif ($uname =~ /^[^\@]+\@[^\@]+$/) { - $email = $uname; - } - - my $upass; - if ($curr{$uname}{'tmpinfo'}) { - my ($key,$caller)=split(/&/,$curr{$uname}{'tmpinfo'}); - if ($caller eq 'createaccount') { - if ($curr{$uname}{'upass'} eq '') { - $upass = $curr{$uname}{'upass'}; - } else { - $upass = &Apache::loncommon::des_decrypt($key,$curr{$uname}{'upass'}); - } - } else { - push(@processing_errors,$uname); - } - } else { - $upass = $curr{$uname}{'upass'}; - } - if ($upass eq '') { - push(@processing_errors,$uname); - } else { + my ($key,$caller)=split(/&/,$curr{$uname}{'tmpinfo'}); + if ($caller eq 'createaccount') { + my $upass = &Apache::loncommon::des_decrypt($key,$curr{$uname}{'upass'}); undef($curr{$uname}{'upass'}); my $result = &Apache::lonnet::modifyuser($cdom,$uname,$id,'internal',$upass, $firstname,$middlename,$lastname, - $generation,undef,undef,$email); + $generation,undef,undef,$uname); if ($result eq 'ok') { $curr{$uname}{'status'} = 'created'; push(@completed,$uname); @@ -942,6 +922,8 @@ sub update_request_queue { } else { push(@processing_errors,$uname); } + } else { + push(@processing_errors,$uname); } } else { push(@invalidusers,$uname); @@ -981,9 +963,7 @@ sub update_request_queue { $ownerdom,$ownername); if ((ref($history{'details'}) eq 'HASH') && ($history{'disposition'} eq $queue)) { - my ($logmsg,$newusermsg,$addresult,$enrollcount,$response, - $keysmsg,$code,%customitems); - my $clonemsg = []; + my ($logmsg,$newusermsg,$addresult,$enrollcount,$response,$keysmsg,$code,%customitems); my $fullname = ''; my $inprocess = &Apache::lonnet::auto_crsreq_update($cdom,$cnum,$crstype,'process',$ownername, $ownerdom,$fullname,$coursedesc); @@ -997,8 +977,8 @@ sub update_request_queue { if ($history{'details'}{'clonecrs'}) { $customitems{'_LC_clonefrom'} = $history{'details'}{'clonedom'}.'_'.$history{'details'}{'clonecrs'}; } - my ($result,$postprocess) = &course_creation($cdom,$cnum,$context,$history{'details'}, - \$logmsg,$clonemsg,\$newusermsg,\$addresult,\$enrollcount, + my ($result,$postprocess) = &course_creation($cdom,$cnum,$context,$history{'details'},\$logmsg, + \$newusermsg,\$addresult,\$enrollcount, \$response,\$keysmsg,\%domdefs,$longroles,\$code,\%customitems); if ($result eq 'created') { if ($crstype eq 'community') { @@ -1011,9 +991,6 @@ sub update_request_queue { if (ref($approvedmsg->[1]) eq 'HASH') { $approvedmsg->[1]->{'args'} = [$firsturl]; } - if ((ref($clonemsg) eq 'ARRAY') && (@{$clonemsg})) { - push(@{$approvedmsg},@{$clonemsg}); - } if ($code) { push(@{$approvedmsg}, { @@ -1612,9 +1589,8 @@ sub get_student_counts { } sub course_creation { - my ($dom,$cnum,$context,$details,$logmsg,$clonemsg,$newusermsg,$addresult, - $enrollcount,$output,$keysmsg,$domdefs,$longroles,$coderef,$customhash, - $callercontext,$user_lh) = @_; + my ($dom,$cnum,$context,$details,$logmsg,$newusermsg,$addresult,$enrollcount,$output, + $keysmsg,$domdefs,$longroles,$coderef,$customhash) = @_; unless ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH') && (ref($longroles) eq 'HASH')) { return ('error: Invalid request'); @@ -1646,11 +1622,10 @@ sub course_creation { $owneremail = $emails{$email}; last if ($owneremail ne ''); } - my %reqdetails = &build_batchcreatehash($dom,$cnum,$context,$details,$owneremail,$domdefs); + my %reqdetails = &build_batchcreatehash($dom,$context,$details,$owneremail,$domdefs); my $cid = &LONCAPA::batchcreatecourse::build_course($dom,$cnum,'requestcourses', - \%reqdetails,$longroles,$logmsg,$clonemsg,$newusermsg,$addresult, - $enrollcount,$output,$keysmsg,$ownerdom,$ownername,$cnum,$crstype, - $coderef,$callercontext,$user_lh); + \%reqdetails,$longroles,$logmsg,$newusermsg,$addresult, + $enrollcount,$output,$keysmsg,$ownerdom,$ownername,$cnum,$crstype,$coderef); my $postprocess; if ($cid eq "/$dom/$cnum") { $result = 'created'; @@ -1668,30 +1643,15 @@ sub course_creation { } sub build_batchcreatehash { - my ($dom,$cnum,$context,$details,$owneremail,$domdefs) = @_; + my ($dom,$context,$details,$owneremail,$domdefs) = @_; my %batchhash; - my @items = qw{owner domain coursehome clonecrs clonedom datemode dateshift tinyurls enrollstart enrollend accessstart accessend sections users uniquecode}; + my @items = qw{owner domain coursehome clonecrs clonedom datemode dateshift enrollstart enrollend accessstart accessend sections crosslists users uniquecode}; if ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH')) { my $emailenc = &escape($owneremail); my $owner = $details->{'owner'}.':'.$details->{'domain'}; foreach my $item (@items) { $batchhash{$item} = $details->{$item}; } - if (ref($details->{'crosslists'}) eq 'HASH') { - foreach my $key (keys(%{$details->{'crosslists'}})) { - if (ref($details->{'crosslists'}->{$key}) eq 'HASH') { - my $instsec = $details->{crosslists}->{$key}->{instsec}; - $batchhash{'crosslists'}{$key}{'inst'} = $details->{crosslists}->{$key}->{instcode}; - my $crskey = $cnum.':'.$batchhash{'crosslists'}{$key}{'inst'}; - my %formatted = &Apache::lonnet::auto_instsec_reformat($dom,'clutter', - {$crskey => [$instsec]}); - if (ref($formatted{$crskey}) eq 'ARRAY') { - $batchhash{'crosslists'}{$key}{'inst'} .= $formatted{$crskey}->[0]; - } - $batchhash{'crosslists'}{$key}{'loncapa'} = $details->{crosslists}->{$key}->{loncapa}; - } - } - } $batchhash{'title'} = $details->{'cdescr'}; $batchhash{'coursecode'} = $details->{'instcode'}; if ($domdefs->{'officialcredits'} || $domdefs->{'unofficialcredits'}) { @@ -1704,6 +1664,8 @@ sub build_batchcreatehash { $batchhash{'authparam'} = $domdefs->{'auth_arg_def'}; if ($details->{'crstype'} eq 'community') { $batchhash{'crstype'} = 'Community'; + } elsif ($details->{'crstype'} eq 'placement') { + $batchhash{'crstype'} = 'Placement'; } else { if ($details->{'crstype'} eq 'textbook') { if ($details->{'clonecrs'} && $details->{'clonedom'}) { @@ -2036,10 +1998,9 @@ sub process_official_reqs { $longroles{$role}=&Apache::lonnet::plaintext($role); } my %domdefs = &Apache::lonnet::get_domain_defaults($dom); - my ($output,$linefeed,$user_lh); + my ($output,$linefeed); if ($context eq 'auto') { $linefeed = "\n"; - $user_lh = &Apache::loncommon::user_lang($dcname,$dcdom); } else { $linefeed = '
'."\n"; } @@ -2101,7 +2062,6 @@ sub process_official_reqs { $reqstatus = $disposition; if ($disposition eq 'process') { my ($logmsg,$newusermsg,$addresult,$enrollcount,$response,$keysmsg,$code); - my $clonemsg = []; my %customitems; my $fullname = &Apache::loncommon::plainname($ownername,$ownerdom); my $inprocess = &Apache::lonnet::auto_crsreq_update($dom,$cnum,$crstype,'process',$ownername, @@ -2117,9 +2077,8 @@ sub process_official_reqs { $customitems{'_LC_clonefrom'} = $history{'details'}{'clonedom'}.'_'.$history{'details'}{'clonecrs'}; } my ($result,$postprocess) = - &course_creation($dom,$cnum,'domain',$history{'details'},\$logmsg,$clonemsg,\$newusermsg, - \$addresult,\$enrollcount,\$response,\$keysmsg,\%domdefs,\%longroles, - \$code,\%customitems,$context,$user_lh); + &course_creation($dom,$cnum,'domain',$history{'details'},\$logmsg,\$newusermsg,\$addresult, + \$enrollcount,\$response,\$keysmsg,\%domdefs,\%longroles,\$code,\%customitems); if ($result eq 'created') { $disposition = 'created'; $reqstatus = 'created'; @@ -2134,20 +2093,14 @@ sub process_official_reqs { [{ mt => 'Your requested course: [_1], (queued pending validation) has now been created.', args => [$cdescr], - }]; - if ((ref($clonemsg) eq 'ARRAY') && (@{$clonemsg})) { - push(@{$approvedmsg},@{$clonemsg}); - } - push(@{$approvedmsg}, + }, { mt => 'Visit [_1] to log-in and access the course.', args => [$firsturl], }, { - mt => 'If currently logged-in to LON-CAPA, log-out and log-in again to select your new course role.', - args => [], - } - ); + mt => 'If currently logged-in to LON-CAPA, log-out and log-in again to select your new course role.' + }]; my $sender = $dcname.':'.$dcdom; if (ref($postprocess) eq 'HASH') { if (ref($postprocess->{'createdmsg'}) eq 'ARRAY') {