version 1.25, 2010/12/08 03:38:46
|
version 1.26, 2011/03/06 21:17:15
|
Line 90 sub send_selfserve_notification {
|
Line 90 sub send_selfserve_notification {
|
# FIXME locallocaltime needs to be able to take $sender_lh as an argument |
# FIXME locallocaltime needs to be able to take $sender_lh as an argument |
# so this can be localized to the recipients date display format/time zone |
# so this can be localized to the recipients date display format/time zone |
$timestamp =&Apache::lonlocal::locallocaltime($timestamp); |
$timestamp =&Apache::lonlocal::locallocaltime($timestamp); |
my $msgcc; |
my ($msgcc,$rawsubj,@rawmsg,$subject,$message,$reviewer,$msgtxt); |
my ($rawsubj,@rawmsg,$subject,$message,$reviewer,$msgtxt); |
my ($senderuname,$senderudom) = split(':',$sender); |
if ($context eq 'coursemanagers') { |
if ($context eq 'coursemanagers') { |
$rawsubj = 'Self-enrollment requests processed'; |
$rawsubj = 'Self-enrollment requests processed'; |
push(@rawmsg,{ |
push(@rawmsg,{ |
Line 138 sub send_selfserve_notification {
|
Line 138 sub send_selfserve_notification {
|
if (ref($textstr) eq 'ARRAY') { |
if (ref($textstr) eq 'ARRAY') { |
push(@rawmsg,@{$textstr}); |
push(@rawmsg,@{$textstr}); |
} |
} |
|
} elsif ($context eq 'pendingrequestor') { |
|
if ($crstype eq 'Community') { |
|
$rawsubj = 'Community request'; |
|
} else { |
|
$rawsubj = 'Processed course request'; |
|
} |
|
if (ref($textstr) eq 'ARRAY') { |
|
push(@rawmsg,@{$textstr}); |
|
} |
} elsif ($context eq 'coursereq') { |
} elsif ($context eq 'coursereq') { |
if ($crstype eq 'community') { |
if ($crstype eq 'community') { |
$rawsubj = 'Community request to review'; |
$rawsubj = 'Community request to review'; |
Line 213 sub send_selfserve_notification {
|
Line 222 sub send_selfserve_notification {
|
$message .= &Apache::lonlocal::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,\@recusers,\@recudoms); |
&Apache::lonmsg::process_sent_mail($subject,'',$numsent,$stamp,$uname,$udom,$msgcount,$cid,$$,$message,\@recusers,\@recudoms,undef,undef,undef,undef,$senderuname,$senderudom); |
my ($recipid,$recipstatus) = &Apache::lonmsg::store_recipients($subject,$uname,$udom,\%reciphash); |
my ($recipid,$recipstatus) = &Apache::lonmsg::store_recipients($subject,$uname,$udom,\%reciphash); |
my $status; |
my $status; |
foreach my $recip (sort(keys(%{$msgcc}))) { |
foreach my $recip (sort(keys(%{$msgcc}))) { |
Line 446 sub build_queue_display {
|
Line 455 sub build_queue_display {
|
sub update_request_queue { |
sub update_request_queue { |
my ($context,$cdom,$cnum,$coursedesc) = @_; |
my ($context,$cdom,$cnum,$coursedesc) = @_; |
my ($output,$access_start,$access_end,$limit,$cap,$notifylist,$namespace, |
my ($output,$access_start,$access_end,$limit,$cap,$notifylist,$namespace, |
$stucounts,$idx,$classlist,%requesthash,$cid,$hostname,$protocol, |
$stucounts,$idx,$classlist,%requesthash,$cid,$domdesc,$now, |
$domdesc,$now,$sender,$approvedmsg,$rejectedmsg,$beneficiary, |
$sender,$approvedmsg,$rejectedmsg,$beneficiary, |
@existing,@missingreq,@invalidusers,@limitexceeded,@completed, |
@existing,@missingreq,@invalidusers,@limitexceeded,@completed, |
@processing_errors,@warn_approves,@warn_rejects,@approvals,@warn_dels, |
@processing_errors,@warn_approves,@warn_rejects,@approvals,@warn_dels, |
@rejections,@rejectionerrors,@nopermissions,%courseroles, |
@rejections,@rejectionerrors,@nopermissions,%courseroles, |
Line 461 sub update_request_queue {
|
Line 470 sub update_request_queue {
|
$beneficiary = 'enroller'; |
$beneficiary = 'enroller'; |
$cid = $env{'request.course.id'}; |
$cid = $env{'request.course.id'}; |
$crstype = lc(&Apache::loncommon::course_type()); |
$crstype = lc(&Apache::loncommon::course_type()); |
my $chome = &Apache::lonnet::homeserver($cnum,$cdom); |
$firsturl = &course_portal_url($cnum,$cdom); |
$hostname = &Apache::lonnet::hostname($chome); |
|
$protocol = $Apache::lonnet::protocol{$chome}; |
|
$protocol = 'http' if ($protocol ne 'https'); |
|
my %domdefaults = &Apache::lonnet::get_domain_defaults($cdom); |
|
if ($domdefaults{'portal_def'}) { |
|
$firsturl = $domdefaults{'portal_def'}; |
|
} else { |
|
$firsturl = $protocol.'://'.$hostname; |
|
} |
|
%requesthash = &Apache::lonnet::dump($namespace,$cdom,$cnum); |
%requesthash = &Apache::lonnet::dump($namespace,$cdom,$cnum); |
$access_start = $env{'course.'.$cid.'.internal.selfenroll_start_access'}; |
$access_start = $env{'course.'.$cid.'.internal.selfenroll_start_access'}; |
$access_end = $env{'course.'.$cid.'.internal.selfenroll_end_access'}; |
$access_end = $env{'course.'.$cid.'.internal.selfenroll_end_access'}; |
Line 497 sub update_request_queue {
|
Line 497 sub update_request_queue {
|
$queue = 'pending'; |
$queue = 'pending'; |
} |
} |
%requesthash = &Apache::lonnet::dump_dom($namespace,$cdom,'_'.$queue); |
%requesthash = &Apache::lonnet::dump_dom($namespace,$cdom,'_'.$queue); |
my $chome = &Apache::lonnet::domain($cdom,'primary'); |
$firsturl= &course_portal_url($cnum,$cdom); |
$hostname = &Apache::lonnet::hostname($chome); |
|
$protocol = $Apache::lonnet::protocol{$chome}; |
|
$protocol = 'http' if ($protocol ne 'https'); |
|
my %domdefaults = &Apache::lonnet::get_domain_defaults($cdom); |
|
if ($domdefaults{'portal_def'}) { |
|
$firsturl = $domdefaults{'portal_def'}; |
|
} else { |
|
$firsturl = $protocol.'://'.$hostname; |
|
} |
|
my %domconfig = &Apache::lonnet::get_dom('configuration',['requestcourses'],$cdom); |
my %domconfig = &Apache::lonnet::get_dom('configuration',['requestcourses'],$cdom); |
if (ref($domconfig{'requestcourses'}) eq 'HASH') { |
if (ref($domconfig{'requestcourses'}) eq 'HASH') { |
if (ref($domconfig{'requestcourses'}{'notify'}) eq 'HASH') { |
if (ref($domconfig{'requestcourses'}{'notify'}) eq 'HASH') { |
Line 588 sub update_request_queue {
|
Line 579 sub update_request_queue {
|
$stucounts->{'allstudents'} ++; |
$stucounts->{'allstudents'} ++; |
$stucounts->{'selfenrolled'} ++; |
$stucounts->{'selfenrolled'} ++; |
&send_selfserve_notification($uname.':'.$udom,$approvedmsg, |
&send_selfserve_notification($uname.':'.$udom,$approvedmsg, |
$cid,$coursedesc,$now,$beneficiary,$sender,undef,undef,$crstype); |
$cid,$coursedesc,$now,$beneficiary,$sender, |
|
undef,undef,$crstype); |
my %userrequest = ( |
my %userrequest = ( |
$cdom.'_'.$cnum => { |
$cdom.'_'.$cnum => { |
timestamp => $now, |
timestamp => $now, |
Line 658 sub update_request_queue {
|
Line 650 sub update_request_queue {
|
unless (&Apache::lonnet::del_dom($namespace,[$cnum.'_'.$queue],$cdom) eq 'ok') { |
unless (&Apache::lonnet::del_dom($namespace,[$cnum.'_'.$queue],$cdom) eq 'ok') { |
push(@warn_dels,$cnum); |
push(@warn_dels,$cnum); |
} |
} |
&send_selfserve_notification($ownername.':'.$ownerdom,$approvedmsg, |
&send_selfserve_notification($ownername.':'.$ownerdom, |
$cid,$coursedesc,$now,$beneficiary,$sender,undef,undef,$crstype); |
$approvedmsg,$cid,$coursedesc,$now, |
|
$beneficiary,$sender,undef,undef,$crstype); |
my %reqhash = ( |
my %reqhash = ( |
reqtime => $history{'reqtime'}, |
reqtime => $history{'reqtime'}, |
crstype => $history{'crstype'}, |
crstype => $history{'crstype'}, |
Line 712 sub update_request_queue {
|
Line 705 sub update_request_queue {
|
if ($context eq 'course') { |
if ($context eq 'course') { |
my $user = $item; |
my $user = $item; |
&send_selfserve_notification($user,$rejectedmsg,$cid,$coursedesc, |
&send_selfserve_notification($user,$rejectedmsg,$cid,$coursedesc, |
$now,$beneficiary,$sender,undef,undef,$crstype); |
$now,$beneficiary,$sender,undef,undef, |
|
$crstype); |
my ($uname,$udom) = split(/:/,$user); |
my ($uname,$udom) = split(/:/,$user); |
my %userrequest = ( |
my %userrequest = ( |
$cdom.'_'.$cnum => { |
$cdom.'_'.$cnum => { |
Line 1008 sub update_request_queue {
|
Line 1002 sub update_request_queue {
|
return $output; |
return $output; |
} |
} |
|
|
|
sub course_portal_url { |
|
my ($cnum,$cdom) = @_; |
|
my $chome = &Apache::lonnet::homeserver($cnum,$cdom); |
|
my $hostname = &Apache::lonnet::hostname($chome); |
|
my $protocol = $Apache::lonnet::protocol{$chome}; |
|
$protocol = 'http' if ($protocol ne 'https'); |
|
my %domdefaults = &Apache::lonnet::get_domain_defaults($cdom); |
|
my $firsturl; |
|
if ($domdefaults{'portal_def'}) { |
|
$firsturl = $domdefaults{'portal_def'}; |
|
} else { |
|
$firsturl = $protocol.'://'.$hostname; |
|
} |
|
return $firsturl; |
|
} |
|
|
sub get_student_counts { |
sub get_student_counts { |
my ($cdom,$cnum) = @_; |
my ($cdom,$cnum) = @_; |
my (%idx,%stucounts); |
my (%idx,%stucounts); |
Line 1295 sub queued_selfenrollment {
|
Line 1305 sub queued_selfenrollment {
|
} |
} |
|
|
sub update_coursereq_status { |
sub update_coursereq_status { |
my ($reqhash,$dom,$cnum,$reqstatus,$context) = @_; |
my ($reqhash,$dom,$cnum,$reqstatus,$context,$udom,$uname) = @_; |
my ($storeresult,$statusresult,$output); |
my ($storeresult,$statusresult,$output); |
my $requestkey = $dom.'_'.$cnum; |
my $requestkey = $dom.'_'.$cnum; |
if ($requestkey =~ /^($match_domain)_($match_courseid)$/) { |
if ($requestkey =~ /^($match_domain)_($match_courseid)$/) { |
$storeresult = &Apache::lonnet::store_userdata($reqhash,$requestkey, |
$storeresult = &Apache::lonnet::store_userdata($reqhash,$requestkey, |
'courserequests'); |
'courserequests',$udom,$uname); |
if ($storeresult eq 'ok') { |
if ($storeresult eq 'ok') { |
my %status = ( |
my %status = ( |
'status:'.$dom.':'.$cnum => $reqstatus, |
'status:'.$dom.':'.$cnum => $reqstatus, |
); |
); |
$statusresult = &Apache::lonnet::put('courserequests',\%status); |
$statusresult = &Apache::lonnet::put('courserequests',\%status,$udom,$uname); |
} |
} |
} else { |
} else { |
$storeresult = 'error: invalid requestkey format'; |
$storeresult = 'error: invalid requestkey format'; |
Line 1317 sub update_coursereq_status {
|
Line 1327 sub update_coursereq_status {
|
} else { |
} else { |
$output = '<span class="LC_warning">'.$output.'</span><br />'; |
$output = '<span class="LC_warning">'.$output.'</span><br />'; |
} |
} |
&Apache::lonnet::logthis("Error saving course request - $requestkey for $env{'user.name'}:$env{'user.domain'} - $storeresult"); |
&Apache::lonnet::logthis("Error saving course request - $requestkey for $uname:$udom - $storeresult"); |
} elsif ($statusresult ne 'ok') { |
} elsif ($statusresult ne 'ok') { |
$output = &mt('An error occurred saving a record of the status of your request: [_1].',$statusresult); |
$output = &mt('An error occurred saving a record of the status of your request: [_1].',$statusresult); |
if ($context eq 'domain') { |
if ($context eq 'domain') { |
Line 1325 sub update_coursereq_status {
|
Line 1335 sub update_coursereq_status {
|
} else { |
} else { |
$output = '<span class="LC_warning">'.$output.'</span><br />'; |
$output = '<span class="LC_warning">'.$output.'</span><br />'; |
} |
} |
&Apache::lonnet::logthis("Error saving course request status for $requestkey (for $env{'user.name'}:$env{'user.domain'}) - $statusresult"); |
&Apache::lonnet::logthis("Error saving course request status for $requestkey (for $uname:$udom) - $statusresult"); |
} |
} |
return ($storeresult,$output); |
return ($storeresult,$output); |
} |
} |
|
|
sub process_official_reqs { |
sub process_official_reqs { |
my ($context,$dom) = @_; |
my ($context,$dom,$dcname,$dcdom) = @_; |
my $reqsnamespace = 'courserequestqueue'; |
my $reqsnamespace = 'courserequestqueue'; |
my %requesthash = |
my %requesthash = |
&Apache::lonnet::dump_dom($reqsnamespace,$dom,'_pending'); |
&Apache::lonnet::dump_dom($reqsnamespace,$dom,'_pending'); |
Line 1409 sub process_official_reqs {
|
Line 1419 sub process_official_reqs {
|
if ($result eq 'created') { |
if ($result eq 'created') { |
$disposition = 'created'; |
$disposition = 'created'; |
$reqstatus = 'created'; |
$reqstatus = 'created'; |
push(@{$newcids{$instcode}},$dom.'_'.$cnum); |
my $cid = $dom.'_'.$cnum; |
|
push(@{$newcids{$instcode}},$cid); |
|
if ($dcname && $dcdom) { |
|
my $firsturl = &course_portal_url($cnum,$dom); |
|
my $beneficiary = 'pendingrequestor'; |
|
my $now = time; |
|
my $owner = $ownername.':'.$ownerdom; |
|
my $approvedmsg = |
|
[{ |
|
mt => 'Your request course, queued pending validation has now been created.', |
|
}, |
|
{ |
|
mt => 'Visit [_1], to log-in and access the course.', |
|
args => [$firsturl], |
|
}]; |
|
my $sender = $dcname.':'.$dcdom; |
|
&send_selfserve_notification($owner,$approvedmsg, |
|
$cid,$cdescr,$now, |
|
$beneficiary,$sender, |
|
undef,undef,$crstype); |
|
} |
} |
} |
} elsif ($disposition eq 'rejected') { |
} elsif ($disposition eq 'rejected') { |
$output .= &mt('Queued course request for [_1] submitted by [_2] with status [_3] rejected when validating.',$instcode,$ownername.':'.$ownerdom,$inststatus).$linefeed; |
$output .= &mt('Queued course request for [_1] submitted by [_2] with status [_3] rejected when validating.',$instcode,$ownername.':'.$ownerdom,$inststatus).$linefeed; |
Line 1445 sub process_official_reqs {
|
Line 1475 sub process_official_reqs {
|
unless ($disposition eq 'pending') { |
unless ($disposition eq 'pending') { |
my ($statusresult,$output) = |
my ($statusresult,$output) = |
&update_coursereq_status(\%requesthash,$dom,$cnum, |
&update_coursereq_status(\%requesthash,$dom,$cnum, |
$reqstatus,'domain'); |
$reqstatus,'domain',$ownerdom, |
|
$ownername); |
unless (&Apache::lonnet::del_dom($reqsnamespace,[$cnum.'_pending'],$dom) eq 'ok') { |
unless (&Apache::lonnet::del_dom($reqsnamespace,[$cnum.'_pending'],$dom) eq 'ok') { |
$output .= &mt('An error occurred when removing the request for [_1] submitted by [_2] from the pending queue.',$instcode,$ownername.':'.$ownerdom).$linefeed; |
$output .= &mt('An error occurred when removing the request for [_1] submitted by [_2] from the pending queue.',$instcode,$ownername.':'.$ownerdom).$linefeed; |
} |
} |