Diff for /loncom/interface/loncoursequeueadmin.pm between versions 1.52.2.2.6.1 and 1.52.2.5.2.3

version 1.52.2.2.6.1, 2020/04/06 22:32:32 version 1.52.2.5.2.3, 2023/09/04 17:10:13
Line 105  sub send_selfserve_notification { Line 105  sub send_selfserve_notification {
         $rawsubj = 'Self-enrollment requests processed';          $rawsubj = 'Self-enrollment requests processed';
         push(@rawmsg,{          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"],                        args => ["\n$contextdesc\n"],
                      });                       });
     } elsif ($context eq 'domainmanagers') {      } elsif ($context eq 'domainmanagers') {
         $rawsubj = 'Course/Community requests reviewed';          $rawsubj = 'Course/Community requests reviewed';
         push(@rawmsg,{          push(@rawmsg,{
                       mt  => 'Course/Community creation requests in the following domain: "[_1]" have been reviewed.',                        mt  => 'Course/Community creation requests in the following domain: [_1] have been reviewed.',
                       args => ["\n$contextdesc"],                        args => ["\n$contextdesc\n"],
                      });                       });
         if (ref($textstr) eq 'ARRAY') {          if (ref($textstr) eq 'ARRAY') {
             push(@rawmsg,@{$textstr});              push(@rawmsg,@{$textstr});
Line 119  sub send_selfserve_notification { Line 119  sub send_selfserve_notification {
     } elsif ($context eq 'authormanagers') {      } elsif ($context eq 'authormanagers') {
         $rawsubj = 'Authoring Space requests reviewed';          $rawsubj = 'Authoring Space requests reviewed';
         push(@rawmsg,{          push(@rawmsg,{
                       mt  => 'Authoring requests in the following domain: "[_1]" have been reviewed.',                        mt  => 'Authoring requests in the following domain: [_1] have been reviewed.',
                       args => ["\n$contextdesc"],                        args => ["\n$contextdesc\n"],
                      });                       });
         if (ref($textstr) eq 'ARRAY') {          if (ref($textstr) eq 'ARRAY') {
             push(@rawmsg,@{$textstr});              push(@rawmsg,@{$textstr});
Line 128  sub send_selfserve_notification { Line 128  sub send_selfserve_notification {
     } elsif ($context eq 'usernamemanagers') {      } elsif ($context eq 'usernamemanagers') {
         $rawsubj = 'LON-CAPA account requests reviewed';          $rawsubj = 'LON-CAPA account requests reviewed';
         push(@rawmsg,{          push(@rawmsg,{
                       mt  => 'Account requests in the following domain: "[_1]" have been reviewed.',                        mt  => 'Account requests in the following domain: [_1] have been reviewed.',
                       args => ["\n$contextdesc"],                        args => ["\n$contextdesc\n"],
                      });                       });
         if (ref($textstr) eq 'ARRAY') {          if (ref($textstr) eq 'ARRAY') {
             push(@rawmsg,@{$textstr});              push(@rawmsg,@{$textstr});
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 879  sub update_request_queue { Line 879  sub update_request_queue {
             my $dbname = 'nohist_requestedusernames';              my $dbname = 'nohist_requestedusernames';
             my $domconfiguser = &Apache::lonnet::get_domainconfiguser($cdom);              my $domconfiguser = &Apache::lonnet::get_domainconfiguser($cdom);
             my %curr = &Apache::lonnet::get($dbname,[$uname],$cdom,$domconfiguser);              my %curr = &Apache::lonnet::get($dbname,[$uname],$cdom,$domconfiguser);
               
             if (ref($curr{$uname}) eq 'HASH') {              if (ref($curr{$uname}) eq 'HASH') {
                 my ($username,$logtoken,$serverid,$encpass,$courseid,$id,$firstname,                  my ($logtoken,$serverid,$encpass,$courseid,$id,$firstname,
                     $middlename,$lastname,$generation,$inststatus);                      $middlename,$lastname,$generation,$inststatus,$email);
                 $curr{$uname}{'timestamp'} = $now;                  $curr{$uname}{'timestamp'} = $now;
                 $curr{$uname}{'adjudicator'} = $env{'user.name'}.':'.$env{'user.domain'};                  $curr{$uname}{'adjudicator'} = $env{'user.name'}.':'.$env{'user.domain'};
                 $courseid   = $curr{$uname}{'courseid'};                  $courseid   = $curr{$uname}{'courseid'};
Line 893  sub update_request_queue { Line 893  sub update_request_queue {
                 $generation = $curr{$uname}{'generation'};                  $generation = $curr{$uname}{'generation'};
                 $inststatus = $curr{$uname}{'inststatus'};                  $inststatus = $curr{$uname}{'inststatus'};
   
                 my ($key,$caller)=split(/&/,$curr{$uname}{'tmpinfo'});                  if ($curr{$uname}{'email'} ne '') {
                 if ($caller eq 'createaccount') {                      $email = $curr{$uname}{'email'};
                     my $upass = &Apache::loncommon::des_decrypt($key,$curr{$uname}{'upass'});                  } 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 {
                     undef($curr{$uname}{'upass'});                      undef($curr{$uname}{'upass'});
                     my $result =                      my $result =
                         &Apache::lonnet::modifyuser($cdom,$uname,$id,'internal',$upass,                          &Apache::lonnet::modifyuser($cdom,$uname,$id,'internal',$upass,
                                                     $firstname,$middlename,$lastname,                                                      $firstname,$middlename,$lastname,
                                                     $generation,undef,undef,$uname);                                                      $generation,undef,undef,$email);
                     if ($result eq 'ok') {                      if ($result eq 'ok') {
                         $curr{$uname}{'status'} = 'created';                          $curr{$uname}{'status'} = 'created';
                         push(@completed,$uname);                           push(@completed,$uname); 
Line 921  sub update_request_queue { Line 942  sub update_request_queue {
                     } else {                      } else {
                         push(@processing_errors,$uname);                          push(@processing_errors,$uname);
                     }                      }
                 } else {  
                     push(@processing_errors,$uname);  
                 }                  }
             } else {              } else {
                 push(@invalidusers,$uname);                  push(@invalidusers,$uname);
Line 962  sub update_request_queue { Line 981  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 976  sub update_request_queue { Line 997  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 990  sub update_request_queue { Line 1011  sub update_request_queue {
                                     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 get_student_counts { Line 1612  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);      my ($result,$ownername,$ownerdom,$autocoowner);
     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'],$dom);      my %domconfig = &Apache::lonnet::get_dom('configuration',['requestcourses','autoenroll'],$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 1607  sub course_creation { Line 1632  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 1621  sub course_creation { Line 1649  sub course_creation {
         $owneremail = $emails{$email};          $owneremail = $emails{$email};
         last if ($owneremail ne '');          last if ($owneremail ne '');
     }      }
     my %reqdetails = &build_batchcreatehash($dom,$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 1635  sub course_creation { Line 1664  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 1642  sub course_creation { Line 1731  sub course_creation {
 }  }
   
 sub build_batchcreatehash {  sub build_batchcreatehash {
     my ($dom,$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 crosslists 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'};
         foreach my $item (@items) {          foreach my $item (@items) {
             $batchhash{$item} = $details->{$item};              $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{'title'} = $details->{'cdescr'};
         $batchhash{'coursecode'} = $details->{'instcode'};          $batchhash{'coursecode'} = $details->{'instcode'};
         if ($domdefs->{'officialcredits'} || $domdefs->{'unofficialcredits'}) {          if ($domdefs->{'officialcredits'} || $domdefs->{'unofficialcredits'}) {
Line 1669  sub build_batchcreatehash { Line 1773  sub build_batchcreatehash {
                     my %clonedfrom = &Apache::lonnet::coursedescription($details->{'clonedom'}.'_'.$details->{'clonecrs'});                      my %clonedfrom = &Apache::lonnet::coursedescription($details->{'clonedom'}.'_'.$details->{'clonecrs'});
                     $batchhash{'textbook'} = $clonedfrom{'description'};                      $batchhash{'textbook'} = $clonedfrom{'description'};
                 }                  }
               } elsif ($details->{'crstype'} eq 'lti') {
                   $batchhash{'lti'} = 1;
             }              }
             $batchhash{'crstype'} = 'Course';              $batchhash{'crstype'} = 'Course';
         }          }
Line 1995  sub process_official_reqs { Line 2101  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 2059  sub process_official_reqs { Line 2166  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 2074  sub process_official_reqs { Line 2182  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';
Line 2090  sub process_official_reqs { Line 2199  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 2203  sub postprocess_crsenv { Line 2318  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.2.6.1  
changed lines
  Added in v.1.52.2.5.2.3


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