Diff for /loncom/interface/loncoursequeueadmin.pm between versions 1.52.2.6 and 1.61

version 1.52.2.6, 2024/07/02 13:55:53 version 1.61, 2021/06/15 20:52:26
Line 304  sub send_selfserve_notification { Line 304  sub send_selfserve_notification {
     my $stamp = time;      my $stamp = time;
     my $msgcount = &Apache::lonmsg::get_uniq();      my $msgcount = &Apache::lonmsg::get_uniq();
     my $sender_lh = &Apache::loncommon::user_lang($uname,$udom,$cid);      my $sender_lh = &Apache::loncommon::user_lang($uname,$udom,$cid);
     $subject = &Apache::lonlocal::mt_user($sender_lh,$rawsubj);      $subject = &mt_user($sender_lh,$rawsubj);
     $message = '';      $message = '';
     foreach my $item (@rawmsg) {      foreach my $item (@rawmsg) {
         if (ref($item) eq 'HASH') {          if (ref($item) eq 'HASH') {
             $message .= &Apache::lonlocal::mt_user($sender_lh,$item->{mt},@{$item->{args}})."\n";              $message .= &mt_user($sender_lh,$item->{mt},@{$item->{args}})."\n";
         }          }
     }      }
     &Apache::lonmsg::process_sent_mail($subject,'',$numsent,$stamp,$uname,$udom,$msgcount,$cid,$$,$message,      &Apache::lonmsg::process_sent_mail($subject,'',$numsent,$stamp,$uname,$udom,$msgcount,$cid,$$,$message,
Line 322  sub send_selfserve_notification { Line 322  sub send_selfserve_notification {
     foreach my $recip (sort(keys(%{$msgcc}))) {      foreach my $recip (sort(keys(%{$msgcc}))) {
         my ($ccname,$ccdom) = split(/:/,$recip);          my ($ccname,$ccdom) = split(/:/,$recip);
         my $recip_lh = &Apache::loncommon::user_lang($ccname,$ccdom,$cid);          my $recip_lh = &Apache::loncommon::user_lang($ccname,$ccdom,$cid);
         my $subject = &Apache::lonlocal::mt_user($sender_lh,$rawsubj);          my $subject = &mt_user($sender_lh,$rawsubj);
         my $message = '';          my $message = '';
         foreach my $item (@rawmsg) {          foreach my $item (@rawmsg) {
             if (ref($item) eq 'HASH') {              if (ref($item) eq 'HASH') {
                 $message .= &Apache::lonlocal::mt_user($sender_lh,$item->{mt},                  $message .= &mt_user($sender_lh,$item->{mt},
                                                        @{$item->{args}})."\n";                                       @{$item->{args}})."\n";
             }              }
         }          }
         if ($context eq 'coursemanagers') {          if ($context eq 'coursemanagers') {
             if ($approvedlist) {              if ($approvedlist) {
                 $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Approved enrollments:')."\n".$approvedlist;                  $message .= "\n\n".&mt_user($sender_lh,'Approved enrollments:')."\n".$approvedlist;
             }              }
             if ($rejectedlist) {              if ($rejectedlist) {
                 $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Rejected enrollments:')."\n".$rejectedlist;                  $message .= "\n\n".&mt_user($sender_lh,'Rejected enrollments:')."\n".$rejectedlist;
             }              }
         } elsif ($context eq 'domainmanagers') {          } elsif ($context eq 'domainmanagers') {
             if ($approvedlist) {              if ($approvedlist) {
                 $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Approved course requests:')."\n".$approvedlist;                  $message .= "\n\n".&mt_user($sender_lh,'Approved course requests:')."\n".$approvedlist;
             }              }
             if ($rejectedlist) {              if ($rejectedlist) {
                 $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Rejected course requests:')."\n".$rejectedlist;                  $message .= "\n\n".&mt_user($sender_lh,'Rejected course requests:')."\n".$rejectedlist;
             }              }
         } elsif ($context eq 'authormanagers') {          } elsif ($context eq 'authormanagers') {
             if ($approvedlist) {              if ($approvedlist) {
                 $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Approved author role requests:')."\n".$approvedlist;                  $message .= "\n\n".&mt_user($sender_lh,'Approved author role requests:')."\n".$approvedlist;
             }              }
             if ($rejectedlist) {              if ($rejectedlist) {
                 $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Rejected author role requests:')."\n".$rejectedlist;                  $message .= "\n\n".&mt_user($sender_lh,'Rejected author role requests:')."\n".$rejectedlist;
             }              }
         } elsif ($context eq 'usernamemanagers') {          } elsif ($context eq 'usernamemanagers') {
             if ($approvedlist) {              if ($approvedlist) {
                 $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Approved LON-CAPA account requests:')."\n".$approvedlist;                  $message .= "\n\n".&mt_user($sender_lh,'Approved LON-CAPA account requests:')."\n".$approvedlist;
             }              }
             if ($rejectedlist) {              if ($rejectedlist) {
                 $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Rejected LON-CAPA account requests:')."\n".$rejectedlist;                  $message .= "\n\n".&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,          $status .= &Apache::lonmsg::user_normal_msg($ccname,$ccdom,$subject,$message,undef,undef,undef,1,
Line 506  sub build_queue_display { Line 506  sub build_queue_display {
     my %crstypes;      my %crstypes;
     my $output =  &Apache::loncommon::start_data_table().      my $output =  &Apache::loncommon::start_data_table().
                   &Apache::loncommon::start_data_table_header_row();                    &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 .= '<th>'.&mt('Action').'</th>';          $output .= '<th>'.&mt('Action').'</th>';
     }      }
     $output .= '<th>'.&mt('Requestor').'</th>';      $output .= '<th>'.&mt('Requestor').'</th>';
Line 528  sub build_queue_display { Line 528  sub build_queue_display {
                         unofficial => 'Unofficial course',                          unofficial => 'Unofficial course',
                         community  => 'Community',                          community  => 'Community',
                         textbook   => 'Textbook course',                          textbook   => 'Textbook course',
                           placement  => 'Placement test',
                     );                      );
         $output .= '<th>'.&mt('Type').'</th>'.          $output .= '<th>'.&mt('Type').'</th>'.
                    '<th>'.&mt('Date requested').'</th>'.                     '<th>'.&mt('Date requested').'</th>'.
Line 609  sub build_queue_display { Line 610  sub build_queue_display {
                 } elsif ($context eq 'requestusername') {                  } elsif ($context eq 'requestusername') {
                     $row .= '<td>'.$showtime.'</td>'."\n".                      $row .= '<td>'.$showtime.'</td>'."\n".
                             '<td>'.$detailslink.'</td>'."\n";                              '<td>'.$detailslink.'</td>'."\n";
                 } else {                  } else { 
                     if ($context eq 'pending' || $context eq 'displaypending' || $context eq 'stillpending') {                      if ($context eq 'pending' || $context eq 'displaypending' || $context eq 'stillpending') {
                         $row .= '<td>'.$instcode.'</td>'."\n";                          $row .= '<td>'.$instcode.'</td>'."\n";
                     } else {                      } else {
Line 656  sub update_request_queue { Line 657  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());
         $firsturl = &course_portal_url($cnum,$cdom);          $firsturl = &Apache::lonnet::course_portal_url($cnum,$cdom);
         %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 685  sub update_request_queue { Line 686  sub update_request_queue {
             }              }
         }          }
         my $domconfiguser = &Apache::lonnet::get_domainconfiguser($cdom);          my $domconfiguser = &Apache::lonnet::get_domainconfiguser($cdom);
         $firsturl = &course_portal_url($domconfiguser,$cdom);          $firsturl = &Apache::lonnet::course_portal_url($domconfiguser,$cdom);
         $approvedmsg = [{          $approvedmsg = [{
                             mt => 'Your request for Authoring Space has been approved.',                              mt => 'Your request for Authoring Space has been approved.',
                         },                          },
Line 710  sub update_request_queue { Line 711  sub update_request_queue {
             }              }
         }          }
         my $domconfiguser = &Apache::lonnet::get_domainconfiguser($cdom);          my $domconfiguser = &Apache::lonnet::get_domainconfiguser($cdom);
         $firsturl = &course_portal_url($domconfiguser,$cdom);          $firsturl = &Apache::lonnet::course_portal_url($domconfiguser,$cdom);
         $approvedmsg = [{          $approvedmsg = [{
                             mt => 'Your request for a LON-CAPA account has been approved.',                              mt => 'Your request for a LON-CAPA account has been approved.',
                         },                          },
Line 981  sub update_request_queue { Line 982  sub update_request_queue {
                                                      $ownerdom,$ownername);                                                       $ownerdom,$ownername);
                         if ((ref($history{'details'}) eq 'HASH') &&                           if ((ref($history{'details'}) eq 'HASH') && 
                             ($history{'disposition'} eq $queue)) {                              ($history{'disposition'} eq $queue)) {
                             my ($logmsg,$newusermsg,$addresult,$enrollcount,$response,$keysmsg,$code,%customitems);                              my ($logmsg,$newusermsg,$addresult,$enrollcount,$response,
                                   $keysmsg,$code,%customitems);
                               my $clonemsg = [];
                             my $fullname = '';                              my $fullname = '';
                             my $inprocess = &Apache::lonnet::auto_crsreq_update($cdom,$cnum,$crstype,'process',$ownername,                              my $inprocess = &Apache::lonnet::auto_crsreq_update($cdom,$cnum,$crstype,'process',$ownername,
                                                                                 $ownerdom,$fullname,$coursedesc);                                                                                  $ownerdom,$fullname,$coursedesc);
Line 995  sub update_request_queue { Line 998  sub update_request_queue {
                             if ($history{'details'}{'clonecrs'}) {                              if ($history{'details'}{'clonecrs'}) {
                                 $customitems{'_LC_clonefrom'} = $history{'details'}{'clonedom'}.'_'.$history{'details'}{'clonecrs'};                                  $customitems{'_LC_clonefrom'} = $history{'details'}{'clonedom'}.'_'.$history{'details'}{'clonecrs'};
                             }                              }
                             my ($result,$postprocess) = &course_creation($cdom,$cnum,$context,$history{'details'},\$logmsg,                              my ($result,$postprocess) = &course_creation($cdom,$cnum,$context,$history{'details'},
                                                         \$newusermsg,\$addresult,\$enrollcount,                                                          \$logmsg,$clonemsg,\$newusermsg,\$addresult,\$enrollcount,
                                                         \$response,\$keysmsg,\%domdefs,$longroles,\$code,\%customitems);                                                          \$response,\$keysmsg,\%domdefs,$longroles,\$code,\%customitems);
                             if ($result eq 'created') {                              if ($result eq 'created') {
                                 if ($crstype eq 'community') {                                  if ($crstype eq 'community') {
Line 1004  sub update_request_queue { Line 1007  sub update_request_queue {
                                 } else {                                  } else {
                                     $approvedmsg = $approvalmsg{'course'};                                      $approvedmsg = $approvalmsg{'course'};
                                 }                                  }
                                 my $firsturl = &course_portal_url($cnum,$cdom);                                  my $firsturl = &Apache::lonnet::course_portal_url($cnum,$cdom);
                                 if (ref($approvedmsg) eq 'ARRAY') {                                  if (ref($approvedmsg) eq 'ARRAY') {
                                     if (ref($approvedmsg->[1]) eq 'HASH') {                                      if (ref($approvedmsg->[1]) eq 'HASH') {
                                         $approvedmsg->[1]->{'args'} = [$firsturl];                                          $approvedmsg->[1]->{'args'} = [$firsturl];
                                     }                                      }
                                       if ((ref($clonemsg) eq 'ARRAY') && (@{$clonemsg})) {
                                           push(@{$approvedmsg},@{$clonemsg});
                                       }
                                     if ($code) {                                      if ($code) {
                                         push(@{$approvedmsg},                                          push(@{$approvedmsg},
                                             {                                              {
Line 1588  sub update_request_queue { Line 1594  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 1623  sub get_student_counts { Line 1613  sub get_student_counts {
 }  }
   
 sub course_creation {  sub course_creation {
     my ($dom,$cnum,$context,$details,$logmsg,$newusermsg,$addresult,$enrollcount,$output,      my ($dom,$cnum,$context,$details,$logmsg,$clonemsg,$newusermsg,$addresult,
         $keysmsg,$domdefs,$longroles,$coderef,$customhash) =  @_;          $enrollcount,$output,$keysmsg,$domdefs,$longroles,$coderef,$customhash,
           $callercontext,$user_lh) = @_;
     unless ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH') &&       unless ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH') && 
             (ref($longroles) eq 'HASH')) {              (ref($longroles) eq 'HASH')) {
         return ('error: Invalid request');          return ('error: Invalid request');
     }      }
     my ($result,$ownername,$ownerdom,$autocoowner);      my ($result,$ownername,$ownerdom);
     my $crstype = $details->{'crstype'};      my $crstype = $details->{'crstype'};
     my $coursedesc = $details->{'cdescr'};      my $coursedesc = $details->{'cdescr'};
     my $accessstart = $details->{'accessstart'};      my $accessstart = $details->{'accessstart'};
     my $accessend = $details->{'accessend'};      my $accessend = $details->{'accessend'};
     my %domconfig = &Apache::lonnet::get_dom('configuration',['requestcourses','autoenroll'],$dom);      my %domconfig = &Apache::lonnet::get_dom('configuration',['requestcourses'],$dom);
     if (ref($domconfig{'requestcourses'}) eq 'HASH') {      if (ref($domconfig{'requestcourses'}) eq 'HASH') {
         if (ref($domconfig{'requestcourses'}{'uniquecode'}) eq 'HASH') {          if (ref($domconfig{'requestcourses'}{'uniquecode'}) eq 'HASH') {
             if ($domconfig{'requestcourses'}{'uniquecode'}{$crstype}) {              if ($domconfig{'requestcourses'}{'uniquecode'}{$crstype}) {
Line 1642  sub course_creation { Line 1633  sub course_creation {
             }              }
         }          }
     }      }
     if (ref($domconfig{'autoenroll'}) eq 'HASH') {  
         $autocoowner = $domconfig{'autoenroll'}{'co-owners'};  
     }  
     if ($context eq 'domain') {      if ($context eq 'domain') {
         $ownername = $details->{'owner'};          $ownername = $details->{'owner'};
         $ownerdom  = $details->{'domain'};          $ownerdom  = $details->{'domain'};
Line 1661  sub course_creation { Line 1649  sub course_creation {
     }      }
     my %reqdetails = &build_batchcreatehash($dom,$cnum,$context,$details,$owneremail,$domdefs);      my %reqdetails = &build_batchcreatehash($dom,$cnum,$context,$details,$owneremail,$domdefs);
     my $cid = &LONCAPA::batchcreatecourse::build_course($dom,$cnum,'requestcourses',      my $cid = &LONCAPA::batchcreatecourse::build_course($dom,$cnum,'requestcourses',
                   \%reqdetails,$longroles,$logmsg,$newusermsg,$addresult,                    \%reqdetails,$longroles,$logmsg,$clonemsg,$newusermsg,$addresult,
                   $enrollcount,$output,$keysmsg,$ownerdom,$ownername,$cnum,$crstype,$coderef);                    $enrollcount,$output,$keysmsg,$ownerdom,$ownername,$cnum,$crstype,
                     $coderef,$callercontext,$user_lh);
     my $postprocess;      my $postprocess;
     if ($cid eq "/$dom/$cnum") {      if ($cid eq "/$dom/$cnum") {
         $result = 'created';          $result = 'created';
Line 1673  sub course_creation { Line 1662  sub course_creation {
         $postprocess = &Apache::lonnet::auto_crsreq_update($dom,$cnum,$crstype,$result,$ownername,          $postprocess = &Apache::lonnet::auto_crsreq_update($dom,$cnum,$crstype,$result,$ownername,
                                                            $ownerdom,$fullname,$coursedesc,$code,                                                             $ownerdom,$fullname,$coursedesc,$code,
                                                            $accessstart,$accessend,$customhash);                                                             $accessstart,$accessend,$customhash);
         if ($autocoowner) {  
             my $instcode = $details->{'instcode'};  
             if (($instcode ne '') && (ref($reqdetails{'users'}) eq 'HASH')) {  
                 my @posscoowners;  
                 my $now = time;  
                 foreach my $person (keys(%{$reqdetails{'users'}})) {  
                     my ($uname,$udom) = split(/:/,$person);  
                     next if (($udom ne $dom) || (($uname eq $ownername) && ($udom eq $ownerdom)));  
                     if ((&Apache::lonnet::homeserver($uname,$udom,1) ne 'no_host') &&  
                         (ref($reqdetails{'users'}{$person}) eq 'HASH')) {  
                         if ((grep(/^cc$/,keys(%{$reqdetails{'users'}{$person}}))) &&  
                             (ref($reqdetails{'users'}{$person}{'cc'}) eq 'HASH')) {  
                             my $start = $reqdetails{'users'}{$person}{'cc'}{'start'};  
                             my $end = $reqdetails{'users'}{$person}{'cc'}{'end'};  
                             if ((($start eq '') || ($start <= $now)) &&  
                                 (($end eq '') || ($end >= $now))) {  
                                 push(@posscoowners,$person);  
                             }  
                         }  
                     }  
                 }  
                 my @coowners;  
                 if (@posscoowners) {  
                     foreach my $user (@posscoowners) {  
                         my ($checkcc,$desc) =  
                             &Apache::lonnet::auto_validate_instcode($cnum,$dom,$instcode,$user);  
                         unless ($checkcc eq 'valid') {  
                             if (ref($reqdetails{'crosslists'}) eq 'HASH') {  
                                 foreach my $key (keys(%{$reqdetails{'crosslists'}})) {  
                                     if (ref($reqdetails{'crosslists'}{$key}) eq 'HASH') {  
                                         my $inst_crosslist = $reqdetails{'crosslists'}{$key}{'inst'};  
                                         if ($inst_crosslist ne '') {  
                                             $checkcc =  
                                                 &Apache::lonnet::auto_validate_inst_crosslist($cnum,$dom,$instcode,  
                                                                                               $inst_crosslist,$user);  
                                             last if ($checkcc eq 'valid');  
                                         }  
                                     }  
                                 }  
                             }  
                         }  
                         if ($checkcc eq 'valid') {  
                             if (@coowners > 0) {  
                                 unless (grep(/^\Q$user\E$/,@coowners)) {  
                                     push(@coowners,$user);  
                                 }  
                             } else {  
                                 push(@coowners,$user);  
                             }  
                         }  
                     }  
                 }  
                 if (@coowners > 0) {  
                     my $chome = &Apache::lonnet::homeserver($cnum,$dom);  
                     unless ($chome eq 'no_host') {  
                         &Apache::lonnet::store_coowners($dom,$cnum,$chome,'',@coowners);  
                     }  
                 }  
             }  
         }  
     } else {      } else {
         $result = 'error: '.$cid;          $result = 'error: '.$cid;
     }      }
Line 1742  sub course_creation { Line 1671  sub course_creation {
 sub build_batchcreatehash {  sub build_batchcreatehash {
     my ($dom,$cnum,$context,$details,$owneremail,$domdefs) = @_;      my ($dom,$cnum,$context,$details,$owneremail,$domdefs) = @_;
     my %batchhash;      my %batchhash;
     my @items = qw{owner domain coursehome clonecrs clonedom datemode dateshift enrollstart enrollend accessstart accessend sections users uniquecode};      my @items = qw{owner domain coursehome clonecrs clonedom datemode dateshift tinyurls enrollstart enrollend accessstart accessend sections users uniquecode};
     if ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH')) {      if ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH')) {
         my $emailenc = &escape($owneremail);          my $emailenc = &escape($owneremail);
         my $owner = $details->{'owner'}.':'.$details->{'domain'};          my $owner = $details->{'owner'}.':'.$details->{'domain'};
Line 1776  sub build_batchcreatehash { Line 1705  sub build_batchcreatehash {
         $batchhash{'authparam'} = $domdefs->{'auth_arg_def'};          $batchhash{'authparam'} = $domdefs->{'auth_arg_def'};
         if ($details->{'crstype'} eq 'community') {          if ($details->{'crstype'} eq 'community') {
             $batchhash{'crstype'} = 'Community';              $batchhash{'crstype'} = 'Community';
           } elsif ($details->{'crstype'} eq 'placement') {
               $batchhash{'crstype'} = 'Placement';
         } else {          } else {
             if ($details->{'crstype'} eq 'textbook') {              if ($details->{'crstype'} eq 'textbook') {
                 if ($details->{'clonecrs'} && $details->{'clonedom'}) {                  if ($details->{'clonecrs'} && $details->{'clonedom'}) {
Line 2108  sub process_official_reqs { Line 2039  sub process_official_reqs {
         $longroles{$role}=&Apache::lonnet::plaintext($role);          $longroles{$role}=&Apache::lonnet::plaintext($role);
     }      }
     my %domdefs = &Apache::lonnet::get_domain_defaults($dom);      my %domdefs = &Apache::lonnet::get_domain_defaults($dom);
     my ($output,$linefeed);      my ($output,$linefeed,$user_lh);
     if ($context eq 'auto') {      if ($context eq 'auto') {
         $linefeed = "\n";          $linefeed = "\n";
           $user_lh = &Apache::loncommon::user_lang($dcname,$dcdom);
     } else {      } else {
         $linefeed = '<br />'."\n";          $linefeed = '<br />'."\n";
     }      }
Line 2172  sub process_official_reqs { Line 2104  sub process_official_reqs {
                 $reqstatus = $disposition;                  $reqstatus = $disposition;
                 if ($disposition eq 'process') {                  if ($disposition eq 'process') {
                     my ($logmsg,$newusermsg,$addresult,$enrollcount,$response,$keysmsg,$code);                      my ($logmsg,$newusermsg,$addresult,$enrollcount,$response,$keysmsg,$code);
                       my $clonemsg = [];
                     my %customitems;                      my %customitems;
                     my $fullname = &Apache::loncommon::plainname($ownername,$ownerdom);                      my $fullname = &Apache::loncommon::plainname($ownername,$ownerdom);
                     my $inprocess = &Apache::lonnet::auto_crsreq_update($dom,$cnum,$crstype,'process',$ownername,                      my $inprocess = &Apache::lonnet::auto_crsreq_update($dom,$cnum,$crstype,'process',$ownername,
Line 2187  sub process_official_reqs { Line 2120  sub process_official_reqs {
                         $customitems{'_LC_clonefrom'} = $history{'details'}{'clonedom'}.'_'.$history{'details'}{'clonecrs'};                          $customitems{'_LC_clonefrom'} = $history{'details'}{'clonedom'}.'_'.$history{'details'}{'clonecrs'};
                     }                      }
                     my ($result,$postprocess) =                       my ($result,$postprocess) = 
                         &course_creation($dom,$cnum,'domain',$history{'details'},\$logmsg,\$newusermsg,\$addresult,                          &course_creation($dom,$cnum,'domain',$history{'details'},\$logmsg,$clonemsg,\$newusermsg,
                                          \$enrollcount,\$response,\$keysmsg,\%domdefs,\%longroles,\$code,\%customitems);                                           \$addresult,\$enrollcount,\$response,\$keysmsg,\%domdefs,\%longroles,
                                            \$code,\%customitems,$context,$user_lh);
                     if ($result eq 'created') {                      if ($result eq 'created') {
                         $disposition = 'created';                          $disposition = 'created';
                         $reqstatus = 'created';                          $reqstatus = 'created';
                         my $cid = $dom.'_'.$cnum;                          my $cid = $dom.'_'.$cnum;
                         push(@{$newcids{$instcode}},$cid);                          push(@{$newcids{$instcode}},$cid);
                         if ($dcname && $dcdom) {                          if ($dcname && $dcdom) {
                             my $firsturl = &course_portal_url($cnum,$dom);                              my $firsturl = &Apache::lonnet::course_portal_url($cnum,$dom);
                             my $beneficiary = 'pendingrequestor';                              my $beneficiary = 'pendingrequestor';
                             my $now = time;                              my $now = time;
                             my $owner = $ownername.':'.$ownerdom;                              my $owner = $ownername.':'.$ownerdom;
Line 2203  sub process_official_reqs { Line 2137  sub process_official_reqs {
                                 [{                                  [{
                                     mt => 'Your requested course: [_1], (queued pending validation) has now been created.',                                      mt => 'Your requested course: [_1], (queued pending validation) has now been created.',
                                     args => [$cdescr],                                      args => [$cdescr],
                                  },                                   }];
                               if ((ref($clonemsg) eq 'ARRAY') && (@{$clonemsg})) {
                                   push(@{$approvedmsg},@{$clonemsg});
                               }
                               push(@{$approvedmsg},
                                  {                                   {
                                     mt   => 'Visit [_1] to log-in and access the course.',                                      mt   => 'Visit [_1] to log-in and access the course.',
                                     args => [$firsturl],                                      args => [$firsturl],
                                  },                                   },
                                  {                                   {
                                     mt => 'If currently logged-in to LON-CAPA, log-out and log-in again to select your new course role.'                                      mt => 'If currently logged-in to LON-CAPA, log-out and log-in again to select your new course role.',
                                  }];                                      args => [],
                                    }
                               );
                             my $sender = $dcname.':'.$dcdom;                              my $sender = $dcname.':'.$dcdom;
                             if (ref($postprocess) eq 'HASH') {                              if (ref($postprocess) eq 'HASH') {
                                 if (ref($postprocess->{'createdmsg'}) eq 'ARRAY') {                                  if (ref($postprocess->{'createdmsg'}) eq 'ARRAY') {
Line 2316  sub postprocess_crsenv { Line 2256  sub postprocess_crsenv {
         my %needcrsidput = (          my %needcrsidput = (
                               'internal.selfenroll_types'      => 1,                                'internal.selfenroll_types'      => 1,
                               'internal.selfenroll_start_date' => 1,                                'internal.selfenroll_start_date' => 1,
                               'internal.selfenroll_end_date'   => 1,                                'internal. selfenroll_end_date'  => 1,
                            );                             );
         my (@needupdate,%newcrsenv);          my (@needupdate,%newcrsenv);
         foreach my $key (keys(%{$postprocessenv})) {           foreach my $key (keys(%{$postprocessenv})) { 

Removed from v.1.52.2.6  
changed lines
  Added in v.1.61


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