Diff for /loncom/interface/selfenroll.pm between versions 1.20 and 1.24

version 1.20, 2009/05/24 00:05:04 version 1.24, 2010/01/15 03:37:13
Line 34  use Apache::lonnet; Line 34  use Apache::lonnet;
 use Apache::loncommon;  use Apache::loncommon;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::createaccount;  use Apache::createaccount;
   use Apache::loncoursequeueadmin;
 use LONCAPA qw(:DEFAULT :match);  use LONCAPA qw(:DEFAULT :match);
   
 sub handler {  sub handler {
Line 475  sub process_self_enroll { Line 476  sub process_self_enroll {
                 }                  }
                 &Apache::lonnet::standard_roleprivs(\%newrole,$role,$cdom,$spec,$cnum,                  &Apache::lonnet::standard_roleprivs(\%newrole,$role,$cdom,$spec,$cnum,
                                                     $area);                                                      $area);
                 &Apache::lonnet::set_userprivs(\%userroles,\%newrole,%newgroups);                  &Apache::lonnet::set_userprivs(\%userroles,\%newrole,\%newgroups);
                 $userroles{'user.role.'.$spec} = $selfenroll_access_start.'.'.$selfenroll_access_end;                  $userroles{'user.role.'.$spec} = $selfenroll_access_start.'.'.$selfenroll_access_end;
                 &Apache::lonnet::appenv(\%userroles,[$role,'cm']);                  &Apache::lonnet::appenv(\%userroles,[$role,'cm']);
                 $r->print('<h3>'.&mt('Enrollment process complete').'</h3>');                  $r->print('<h3>'.&mt('Enrollment process complete').'</h3>');
Line 542  sub store_selfenroll_request { Line 543  sub store_selfenroll_request {
     my %existing =       my %existing = 
         &Apache::lonnet::get($namespace,[$uname.':'.$udom],$cdom,$cnum);          &Apache::lonnet::get($namespace,[$uname.':'.$udom],$cdom,$cnum);
     if ($existing{$uname.':'.$udom}) {      if ($existing{$uname.':'.$udom}) {
         my ($timestamp,$sec) = split(/:/,$existing{$uname.':'.$udom});          $output = &mt('A self-enrollment request already exists for you for this course.').'<br />'.&mt('Your earlier request is in a queue awaiting action by a Course Coordinator.').
         $output = &mt('A self-enrollment request already exists for you for this course.').'<br />'.&mt('Your earlier request was submitted: [_1] and remains in a queue awaiting action by a Course Coordinator.',&Apache::lonlocal::locallocaltime($timestamp));                    '<br /><br />'.&Apache::loncoursequeueadmin::queued_selfenrollment();
     } else {      } else {
         my %selfenroll = (          my %selfenroll = (
                             $uname.':'.$udom => $now.':'.$usec,                              $uname.':'.$udom => $now.':'.$usec,
Line 575  sub store_selfenroll_request { Line 576  sub store_selfenroll_request {
             if ($warning) {               if ($warning) { 
                 $output .= '<span class="LC_warning">'.$warning.'</span><br />';                  $output .= '<span class="LC_warning">'.$warning.'</span><br />';
             }              }
     
               $output .= &Apache::loncommon::queued_selfenrollment();
   
             if ($selfenroll_notifylist) {              if ($selfenroll_notifylist) {
                 my $fullname = &Apache::loncommon::plainname($uname,$udom);                  my $fullname = &Apache::loncommon::plainname($uname,$udom);
                 my %courseinfo = &Apache::lonnet::coursedescription($cdom.'_'.$cnum);                  my %courseinfo = &Apache::lonnet::coursedescription($cdom.'_'.$cnum);
                 my $coursedesc = $courseinfo{'description'};                  my $coursedesc = $courseinfo{'description'};
                 &send_notification($selfenroll_notifylist,$fullname,$cdom.                  &Apache::loncoursequeueadmin::send_selfserve_notification(
                                    '_'.$cnum,$coursedesc,$now,'request',$owner);                      $selfenroll_notifylist,$fullname,$cdom.'_'.$cnum,
                       $coursedesc,$now,'selfenrollreq',$owner);
             }              }
         } else {          } else {
             $output = '<span class="LC_error">'.&mt('An error occurred when recording your request.').'</span>';              $output = '<span class="LC_error">'.&mt('An error occurred when recording your request.').'</span>';
Line 591  sub store_selfenroll_request { Line 595  sub store_selfenroll_request {
     return $output;      return $output;
 }  }
   
 sub send_notification {  
     my ($notifylist,$textstr,$cid,$coursedesc,$timestamp,$context,$sender,  
         $approvedlist,$rejectedlist) = @_;  
 # 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   
     $timestamp =&Apache::lonlocal::locallocaltime($timestamp);  
     my $msgcc;  
     my ($rawsubj,@rawmsg,$subject,$message,$namelink);  
     $namelink = &Apache::loncommon::aboutmewrapper(  
                 &Apache::loncommon::plainname($env{'user.name'},$env{'user.domain'}));  
     if ($context eq 'managers') {  
         $rawsubj = 'Self-enrollment requests processed';  
         push(@rawmsg,{  
                       mt => 'Enrollment requests in the following course: [_1] have been processed.',  
                       args => ["\n$coursedesc\n"],  
                      });  
     } elsif ($context eq 'enroller') {  
         $rawsubj = 'Enrollment request';  
         push(@rawmsg,{  
                       mt  => 'Your request for enrollment in the following course: [_1], requested on [_2], has been reviewed by a Course Coordinator.',  
                       args => ["\n$coursedesc\n","$timestamp\n"],  
   
                      });  
         if (ref($textstr) eq 'ARRAY') {  
             push(@rawmsg,@{$textstr});  
         }  
     } else {  
         $rawsubj = 'Self-enrollment request';  
         push(@rawmsg,{  
                       mt  => 'Enrollment in the following course: [_1] was requested by [_2] on [_3].',  
                       args => ["\n$coursedesc\n",$textstr,$timestamp],  
                      },  
                      {  
                       mt =>'As Course Coordinator, use: [_1]Main Menu -> Manage Course Users -> Enrollment Requests[_1] to display a list of pending enrollment requests,[_1] which you can either approve or reject.',  
                       args => ["\n"],  
                      });  
     }  
     my @to_notify = split(/,/,$notifylist);  
     my $numsent = 0;  
     my @recusers;  
     my @recudoms;  
     foreach my $cc (@to_notify) {  
         my ($ccname,$ccdom) = split(/:/,$cc);  
         if (!exists($msgcc->{$ccname.':'.$ccdom})) {  
             push(@recusers,$ccname);  
             push(@recudoms,$ccdom);  
             $msgcc->{$ccname.':'.$ccdom}='';  
             $numsent ++;  
         }  
     }  
     my %reciphash = (  
                      cc => $msgcc,  
     );  
     my ($uname,$udom);  
     if ($sender =~ /:/) {  
         ($uname,$udom) = split(/:/,$sender);  
     } else {  
         $uname = $sender;  
         my %courseinfo = &Apache::lonnet::coursedescription($cid);  
         $udom = $courseinfo{'num'};  
     }  
     my %sentmessage;  
     my $stamp = time;  
     my $msgcount = &Apache::lonmsg::get_uniq();  
     my $sender_lh = &Apache::loncommon::user_lang($uname,$udom,$cid);  
     $subject = &Apache::lonlocal::mt_user($sender_lh,$rawsubj);  
     $message = '';  
     foreach my $item (@rawmsg) {  
         if (ref($item) eq 'HASH') {  
             $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);  
     my ($recipid,$recipstatus) =  
         &Apache::lonmsg::store_recipients($subject,$uname,$udom,\%reciphash);  
     foreach my $recip (sort(keys(%{$msgcc}))) {  
         my ($ccname,$ccdom) = split(/:/,$recip);  
         my $recip_lh = &Apache::loncommon::user_lang($ccname,$ccdom,$cid);  
         my $subject = &Apache::lonlocal::mt_user($sender_lh,$rawsubj);  
         my $message = '';  
         foreach my $item (@rawmsg) {  
             if (ref($item) eq 'HASH') {  
                 $message .= &Apache::lonlocal::mt_user($sender_lh,$item->{mt},  
                                                        @{$item->{args}})."\n";  
             }  
         }  
         if ($context eq 'managers') {  
             if ($approvedlist) {  
                 $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Approved enrollments:')."\n".$approvedlist;  
             }  
             if ($rejectedlist) {  
                 $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Rejected enrollments:')."\n".$rejectedlist;  
             }  
         }  
         my $status = &Apache::lonmsg::user_normal_msg($ccname,$ccdom,$subject,$message,undef,undef,undef,1,\%sentmessage,undef,undef,undef,1,$recipid);  
     }  
 }  
   
 sub jump_to_role {  sub jump_to_role {
     my ($role) = @_;      my ($role) = @_;
     my $output = <<"END";      my $output = <<"END";

Removed from v.1.20  
changed lines
  Added in v.1.24


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>