Diff for /loncom/interface/loncoursequeueadmin.pm between versions 1.7 and 1.12.2.2

version 1.7, 2009/08/27 00:06:18 version 1.12.2.2, 2009/12/07 04:48:04
Line 67  use LONCAPA; Line 67  use LONCAPA;
   
 sub send_selfserve_notification {  sub send_selfserve_notification {
     my ($notifylist,$textstr,$cid,$contextdesc,$timestamp,$context,$sender,      my ($notifylist,$textstr,$cid,$contextdesc,$timestamp,$context,$sender,
         $approvedlist,$rejectedlist) = @_;          $approvedlist,$rejectedlist,$crstype) = @_;
 # 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;
     my ($rawsubj,@rawmsg,$subject,$message,$reviewer);      my ($rawsubj,@rawmsg,$subject,$message,$reviewer,$msgtxt);
     if ($context eq 'coursemanagers') {      if ($context eq 'coursemanagers') {
         $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"],
                      });                       });
     } elsif ($context eq 'domainmanagers') {      } elsif ($context eq 'domainmanagers') {
         $rawsubj = 'Course requests reviewed';          $rawsubj = 'Course/Community requests reviewed';
         push(@rawmsg,{          push(@rawmsg,{
                       mt  => 'Course 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"],
                      });                       });
         if (ref($textstr) eq 'ARRAY') {          if (ref($textstr) eq 'ARRAY') {
Line 90  sub send_selfserve_notification { Line 90  sub send_selfserve_notification {
         }          }
     } elsif ($context eq 'enroller') {      } elsif ($context eq 'enroller') {
         $rawsubj = 'Enrollment request';          $rawsubj = 'Enrollment request';
           if ($crstype eq 'community') {
               $msgtxt = 'Your request for enrollment in the following community: [_1]requested on [_2]has been reviewed by a Coordinator.'
           } else {
               $msgtxt = 'Your request for enrollment in the following course: [_1]requested on [_2]has been reviewed by a Course Coordinator.';
           } 
         push(@rawmsg,{          push(@rawmsg,{
                       mt  => 'Your request for enrollment in the following course: [_1]requested on [_2]has been reviewed by a Course Coordinator.',                        mt  => $msgtxt,
                       args => ["\n  ".$contextdesc.",\n",$timestamp.",\n"],                        args => ["\n  ".$contextdesc.",\n",$timestamp.",\n"],
   
                      });                       });
Line 99  sub send_selfserve_notification { Line 104  sub send_selfserve_notification {
             push(@rawmsg,@{$textstr});              push(@rawmsg,@{$textstr});
         }          }
     } elsif ($context eq 'courserequestor') {      } elsif ($context eq 'courserequestor') {
         $rawsubj = 'Course request';          if ($crstype eq 'Community') {
               $rawsubj = 'Community request';
               $msgtxt = 'Your request for creation of the following community: [_1]requested on [_2]has been reviewed by a Domain Coordinator.';
           } else {
               $rawsubj = 'Course request';
               $msgtxt = 'Your request for creation of the following course: [_1]requested on [_2]has been reviewed by a Domain Coordinator.';
           }
         push(@rawmsg,{          push(@rawmsg,{
                       mt  => 'Your request for creation of the following course: [_1]requested on [_2]has been reviewed by a Domain Coordinator.',                        mt  => $msgtxt,
                       args => ["\n".$contextdesc.",\n",$timestamp.",\n"],                        args => ["\n".$contextdesc.",\n",$timestamp.",\n"],
   
                      });                       });
Line 109  sub send_selfserve_notification { Line 120  sub send_selfserve_notification {
             push(@rawmsg,@{$textstr});              push(@rawmsg,@{$textstr});
         }          }
     } elsif ($context eq 'coursereq') {      } elsif ($context eq 'coursereq') {
         $rawsubj = 'Course request to review',           if ($crstype eq 'community') {
               $rawsubj = 'Community request to review';
               $msgtxt = 'Creation of the following community: [_1]was requested by [_2] on [_3].';
           } else {
               $rawsubj = 'Course request to review';
               $msgtxt = 'Creation of the following course: [_1]was requested by [_2] on [_3].';
           }
         push(@rawmsg,{          push(@rawmsg,{
                       mt  => 'Creation of the following course: [_1]was requested by [_2] on [_3].',                        mt  => $msgtxt,
                       args => ["\n  $contextdesc\n",$textstr,$timestamp],                        args => ["\n  $contextdesc\n",$textstr,$timestamp],
                      },                       },
                      {                       {
                       mt =>'[_1]As Domain Coordinator, use: [_2]Main Menu -> Create a new course -> Approve or reject course requests[_3]to display a list of pending requests, which you can either approve or reject.',                        mt =>'[_1]As Domain Coordinator, use: [_2]Main Menu -> Course and community creation -> Approve or reject requests[_3]to display a list of pending requests, which you can either approve or reject.',
                       args => ["\n","\n\n  ","\n\n"],                        args => ["\n","\n\n  ","\n\n"],
                      });                       });
     } elsif ($context eq 'selfenrollreq') {      } elsif ($context eq 'selfenrollreq') {
         $rawsubj = 'Self-enrollment request';          $rawsubj = 'Self-enrollment request';
           if ($crstype eq 'community') {
               $msgtxt = 'Enrollment in the following community: [_1] was requested by [_2] on [_3].'
           } else {
               $msgtxt = 'Enrollment in the following course: [_1] was requested by [_2] on [_3].'
           }
         push(@rawmsg,{          push(@rawmsg,{
                       mt  => 'Enrollment in the following course: [_1] was requested by [_2] on [_3].',                        mt  => $msgtxt,
                       args => ["\n  $contextdesc\n",$textstr,$timestamp."\n"],                        args => ["\n  $contextdesc\n",$textstr,$timestamp."\n"],
                      });                       });
         if ($env{'course.'.$env{'request.course.id'}.'.type'} eq 'Community') {          my $directions;  
             push(@rawmsg,          if ($crstype eq 'community') {
                      {              $directions = 'As Coordinator, use: [_1]Main Menu -> Manage Community Users -> Enrollment Requests[_2]to display a list of pending enrollment requests, which you can either approve or reject.';
                       mt =>'As Coordinator, use: [_1]Main Menu -> Manage Course Users -> Enrollment Requests[_2]to display a list of pending enrollment requests, which you can either approve or reject.',  
                       args => ["  \n\n","\n"],  
                      });  
         } else {          } else {
             push(@rawmsg,              $directions = 'As Course Coordinator, use: [_1]Main Menu -> Manage Course Users -> Enrollment Requests[_2]to display a list of pending enrollment requests, which you can either approve or reject.';
           }
           push(@rawmsg,
                      {                       {
                       mt =>'As Course Coordinator, use: [_1]Main Menu -> Manage Course Users -> Enrollment Requests[_2]to display a list of pending enrollment requests, which you can either approve or reject.',                        mt   => $directions,
                       args => ["  \n\n","\n"],                        args => ["  \n\n","\n"],
                      });                       });
   
         }  
     }      }
     my @to_notify = split(/,/,$notifylist);      my @to_notify = split(/,/,$notifylist);
     my $numsent = 0;      my $numsent = 0;
Line 188  sub send_selfserve_notification { Line 208  sub send_selfserve_notification {
                                                        @{$item->{args}})."\n";                                                         @{$item->{args}})."\n";
             }              }
         }          }
         if ($context eq 'managers') {          if ($context eq 'coursemanagers') {
             if ($approvedlist) {              if ($approvedlist) {
                 $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Approved enrollments:')."\n".$approvedlist;                  $message .= "\n\n".&Apache::lonlocal::mt_user($sender_lh,'Approved enrollments:')."\n".$approvedlist;
             }              }
Line 235  sub display_queued_requests { Line 255  sub display_queued_requests {
         if ($context eq 'course') {          if ($context eq 'course') {
             $output .= '<th>'.&mt('Section').'</th>'.              $output .= '<th>'.&mt('Section').'</th>'.
                        '<th>'.&mt('Date requested').'</th>';                         '<th>'.&mt('Date requested').'</th>';
           } else {
             %crstypes = &Apache::lonlocal::texthash (              %crstypes = &Apache::lonlocal::texthash (
                             official   => 'Official course',                              official   => 'Official course',
                             unofficial => 'Unofficial course',                              unofficial => 'Unofficial course',
                             community  => 'Community',                              community  => 'Community',
                         );                          );
         } else {  
             $output .= '<th>'.&mt('Type').'</th>'.              $output .= '<th>'.&mt('Type').'</th>'.
                        '<th>'.&mt('Date requested').'</th>'.                         '<th>'.&mt('Date requested').'</th>'.
                        '<th>'.&mt('Details').'</th>';                         '<th>'.&mt('Details').'</th>';
Line 332  sub display_queued_requests { Line 352  sub display_queued_requests {
         if ($context eq 'course') {          if ($context eq 'course') {
             $output .= &mt('There are currently no enrollment requests.');              $output .= &mt('There are currently no enrollment requests.');
         } else {          } else {
             $output .= &mt('There are currently no course requests awaiting approval.');              $output .= &mt('There are currently no course or community requests awaiting approval.');
         }          }
     }      }
     return $output;      return $output;
Line 346  sub update_request_queue { Line 366  sub update_request_queue {
         @existing,@missingreq,@invalidusers,@limitexceeded,@completed,          @existing,@missingreq,@invalidusers,@limitexceeded,@completed,
         @processing_errors,@warn_approves,@warn_rejects,@approvals,          @processing_errors,@warn_approves,@warn_rejects,@approvals,
         @rejections,@rejectionerrors,@nopermissions,%courseroles,          @rejections,@rejectionerrors,@nopermissions,%courseroles,
         %communityroles,%domdefs);          %communityroles,%domdefs,%approvalmsg,%rejectionmsg,$crstype,
           @warn_coursereqs);
     @approvals = &Apache::loncommon::get_env_multiple('form.approvereq');      @approvals = &Apache::loncommon::get_env_multiple('form.approvereq');
     @rejections = &Apache::loncommon::get_env_multiple('form.rejectreq');      @rejections = &Apache::loncommon::get_env_multiple('form.rejectreq');
     $now = time;      $now = time;
Line 355  sub update_request_queue { Line 376  sub update_request_queue {
         $namespace = 'selfenrollrequests';          $namespace = 'selfenrollrequests';
         $beneficiary = 'enroller';          $beneficiary = 'enroller';
         $cid = $env{'request.course.id'};          $cid = $env{'request.course.id'};
           $crstype = lc(&Apache::loncommon::course_type());
         my $chome = &Apache::lonnet::homeserver($cnum,$cdom);          my $chome = &Apache::lonnet::homeserver($cnum,$cdom);
         $hostname = &Apache::lonnet::hostname($chome);          $hostname = &Apache::lonnet::hostname($chome);
         $protocol = $Apache::lonnet::protocol{$chome};          $protocol = $Apache::lonnet::protocol{$chome};
Line 391  sub update_request_queue { Line 413  sub update_request_queue {
                 $notifylist = $domconfig{'requestcourses'}{'notify'}{'approval'};                  $notifylist = $domconfig{'requestcourses'}{'notify'}{'approval'};
             }              }
         }          }
         $approvedmsg = [{          $approvalmsg{'course'} = 
                           [{
                             mt => 'Your course request has been approved.',                              mt => 'Your course request has been approved.',
                         },                          },
                         {                          {
                             mt   => 'Visit [_1], to log-in and access the course',                              mt   => 'Visit [_1], to log-in and access the course',
                             args => [$protocol.'://'.$hostname],                              args => [$protocol.'://'.$hostname],
                         }];                          }];
         $rejectedmsg =  [{          $rejectionmsg{'course'} =
                           [{
                             mt => 'Your course request has not been approved.',                              mt => 'Your course request has not been approved.',
                         }];                          }];
   
           $approvalmsg{'community'} = 
                           [{
                               mt => 'Your community request has been approved.',
                           },
                           {
                               mt   => 'Visit [_1], to log-in and access the community',
                               args => [$protocol.'://'.$hostname],
                           }];
   
           $rejectionmsg{'community'} = 
                           [{
                               mt => 'Your community request has not been approved.',
                           }];
   
         %domdefs = &Apache::lonnet::get_domain_defaults($cdom);          %domdefs = &Apache::lonnet::get_domain_defaults($cdom);
         my @roles = &Apache::lonuserutils::roles_by_context('course');          my @roles = &Apache::lonuserutils::roles_by_context('course');
         foreach my $role (@roles) {          foreach my $role (@roles) {
Line 417  sub update_request_queue { Line 456  sub update_request_queue {
             my $uhome = &Apache::lonnet::homeserver($uname,$udom);              my $uhome = &Apache::lonnet::homeserver($uname,$udom);
             if ($uhome ne 'no_host') {              if ($uhome ne 'no_host') {
                 if (exists($requesthash{$uname.':'.$udom})) {                  if (exists($requesthash{$uname.':'.$udom})) {
                       if ($cdom eq 'gci' && $cnum eq '9615072b469884921gcil1') {
                           my $enresult = &enable_gci_submission($uname,$udom,
                                                      $access_start,$access_end);
                       }
                     if (exists($classlist->{$uname.':'.$udom})) {                      if (exists($classlist->{$uname.':'.$udom})) {
                         if (ref($classlist->{$uname.':'.$udom}) eq 'ARRAY') {                          if (ref($classlist->{$uname.':'.$udom}) eq 'ARRAY') {
                             if (($classlist->{$uname.':'.$udom}->[$idx->{'status'}] eq 'Active') ||                              if (($classlist->{$uname.':'.$udom}->[$idx->{'status'}] eq 'Active') ||
Line 450  sub update_request_queue { Line 492  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);                                         $cid,$coursedesc,$now,$beneficiary,$sender,undef,undef,$crstype);
                         my %userrequest = (                          my %userrequest = (
                             $cdom.'_'.$cnum => {                              $cdom.'_'.$cnum => {
                                 timestamp   => $now,                                  timestamp   => $now,
Line 463  sub update_request_queue { Line 505  sub update_request_queue {
                             &Apache::lonnet::put($namespace,\%userrequest,$udom,$uname);                              &Apache::lonnet::put($namespace,\%userrequest,$udom,$uname);
                         if ($userresult ne 'ok') {                          if ($userresult ne 'ok') {
                             push(@warn_approves,$uname.':'.$udom);                              push(@warn_approves,$uname.':'.$udom);
                           } elsif ($udom eq 'gci') {
                               my %changehash = (
                                   'reqcrsotherdom.unofficial' => 'gcitest:autolimit=',
                               );
                               my $reqresult = &Apache::lonnet::put('environment',\%changehash,
                                                                    $udom,$uname);
                               if ($reqresult ne 'ok') {
                                   push(@warn_coursereqs,$uname.':'.$udom);
                               }
                         }                          }
                     } else {                      } else {
                         push(@processing_errors,$uname.':'.$udom);                          push(@processing_errors,$uname.':'.$udom);
Line 477  sub update_request_queue { Line 528  sub update_request_queue {
                 if (&Apache::lonnet::homeserver($cnum,$cdom) eq 'no_host') {                  if (&Apache::lonnet::homeserver($cnum,$cdom) eq 'no_host') {
                     my $ownername = $requesthash{$cnum.'_approval'}{'ownername'};                      my $ownername = $requesthash{$cnum.'_approval'}{'ownername'};
                     my $ownerdom = $requesthash{$cnum.'_approval'}{'ownerdom'};                      my $ownerdom = $requesthash{$cnum.'_approval'}{'ownerdom'};
                     my $crstype = $requesthash{$cnum.'_approval'}{'crstype'};                      $crstype = $requesthash{$cnum.'_approval'}{'crstype'};
                     my $coursedesc = $requesthash{$cnum.'_approval'}{'description'};                      my $coursedesc = $requesthash{$cnum.'_approval'}{'description'};
                     my $longroles = \%courseroles;                      my $longroles = \%courseroles;
                     if ($crstype eq 'community') {                      if ($crstype eq 'community') {
Line 510  sub update_request_queue { Line 561  sub update_request_queue {
                                                       \$newusermsg,\$addresult,\$enrollcount,                                                        \$newusermsg,\$addresult,\$enrollcount,
                                                       \$response,\$keysmsg,\%domdefs,$longroles);                                                        \$response,\$keysmsg,\%domdefs,$longroles);
                             if ($result eq 'created') {                              if ($result eq 'created') {
                                   if ($crstype eq 'community') {
                                       $approvedmsg = $approvalmsg{'community'};
                                   } else {
                                       $approvedmsg = $approvalmsg{'course'};
                                   }
                                 push(@completed,$cnum);                                  push(@completed,$cnum);
                                 &send_selfserve_notification($ownername.':'.$ownerdom,$approvedmsg,                                  &send_selfserve_notification($ownername.':'.$ownerdom,$approvedmsg,
                                               $cid,$coursedesc,$now,$beneficiary,$sender);                                                $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 565  sub update_request_queue { Line 621  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);                                               $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 587  sub update_request_queue { Line 643  sub update_request_queue {
                         my $ownername = $requesthash{$cnum.'_approval'}{'ownername'};                          my $ownername = $requesthash{$cnum.'_approval'}{'ownername'};
                         my $ownerdom = $requesthash{$cnum.'_approval'}{'ownerdom'};                          my $ownerdom = $requesthash{$cnum.'_approval'}{'ownerdom'};
                         my $coursedesc = $requesthash{$cnum.'_approval'}{'description'};                          my $coursedesc = $requesthash{$cnum.'_approval'}{'description'};
                           $crstype = $requesthash{$cnum.'_approval'}{'crstype'};
                           if ($crstype eq 'community') {
                               $rejectedmsg = $rejectionmsg{'community'};
                           } else {
                               $rejectedmsg = $rejectionmsg{'course'};
                           }
                         &send_selfserve_notification($ownername.':'.$ownerdom,$rejectedmsg,                          &send_selfserve_notification($ownername.':'.$ownerdom,$rejectedmsg,
                                                      $cid,$coursedesc,$now,$beneficiary,                                                       $cid,$coursedesc,$now,$beneficiary,
                                                      $sender);                                                       $sender,undef,undef,$crstype);
                         my %history =                          my %history =
                             &Apache::lonnet::restore($requestkey,'courserequests',                              &Apache::lonnet::restore($requestkey,'courserequests',
                                                      $ownerdom,$ownername);                                                       $ownerdom,$ownername);
Line 646  sub update_request_queue { Line 708  sub update_request_queue {
                 $chgmsg = "'Action was taken on the following enrollment requests by [_1].',$namelink";                  $chgmsg = "'Action was taken on the following enrollment requests by [_1].',$namelink";
                 if (@completed) {                  if (@completed) {
                     $approvedlist = join("\n",@completed);                      $approvedlist = join("\n",@completed);
                     $output .= '<p>'.&mt('The following were enrolled in the course:').'<ul>';                      if ($crstype eq 'community') {
                           $output .= '<p>'.&mt('The following were enrolled in the community:').'<ul>';
                       } else {
                           $output .= '<p>'.&mt('The following were enrolled in the course:').'<ul>';
                       }
                     foreach my $user (@completed) {                      foreach my $user (@completed) {
                         my ($uname,$udom) = split(/:/,$user);                          my ($uname,$udom) = split(/:/,$user);
                         my $userlink =                          my $userlink =
Line 666  sub update_request_queue { Line 732  sub update_request_queue {
                 if ($notifylist ne '') {                  if ($notifylist ne '') {
                     &send_selfserve_notification($notifylist,$chgmsg,$cid,$coursedesc,                      &send_selfserve_notification($notifylist,$chgmsg,$cid,$coursedesc,
                                                  $now,'coursemanagers',$sender,                                                   $now,'coursemanagers',$sender,
                                                  $approvedlist,$rejectedlist);                                                   $approvedlist,$rejectedlist,$crstype);
                 }                  }
             } else {              } else {
                 $chgmsg = "'Action was taken on the following course requests by [_1].',$namelink";                  $chgmsg = "'Action was taken on the following course and community requests by [_1].',$namelink";
                 if (@completed) {                  if (@completed) {
                     $approvedlist = join("\n",@completed);                      $approvedlist = join("\n",@completed);
                     $output .= '<p>'.&mt('The following courses were created:').'<ul>';                      $output .= '<p>'.&mt('The following courses/communities were created:').'<ul>';
                     foreach my $cnum (@completed) {                      foreach my $cnum (@completed) {
                         my $showcourse;                          my $showcourse;
                         if (ref($requesthash{$cnum.'_approval'})) {                          if (ref($requesthash{$cnum.'_approval'})) {
Line 703  sub update_request_queue { Line 769  sub update_request_queue {
                 if ($notifylist ne '') {                  if ($notifylist ne '') {
                     &send_selfserve_notification($notifylist,$chgmsg,$cid,$domdesc,                      &send_selfserve_notification($notifylist,$chgmsg,$cid,$domdesc,
                                                  $now,'domainmanagers',$sender,                                                   $now,'domainmanagers',$sender,
                                                  $approvedlist,$rejectedlist);                                                   $approvedlist,$rejectedlist,$crstype);
                 }                  }
             }              }
         }          }
Line 716  sub update_request_queue { Line 782  sub update_request_queue {
             }              }
             $output .= '</ul></p>';              $output .= '</ul></p>';
         } else {          } else {
             $output .= '<p>'.&mt('The following course creation requests were deleted because the course has already been created:').'<ul>';              $output .= '<p>'.&mt('The following course/community creation requests were deleted because the course or community has already been created:').'<ul>';
             foreach my $cnum (@existing) {              foreach my $cnum (@existing) {
                 my $showcourse;                  my $showcourse;
                 my %coursehash = &Apache::lonnet::coursedescription($cdom.'/'.$cnum);                  my %coursehash = &Apache::lonnet::coursedescription($cdom.'/'.$cnum);
Line 738  sub update_request_queue { Line 804  sub update_request_queue {
             }              }
             $output .= '</ul></p>';              $output .= '</ul></p>';
         } else {          } else {
             $output .= '<p>'.&mt('The following course creation requests were ignored because the request is no longer in the course request queue:').'<ul>';              $output .= '<p>'.&mt('The following course/community creation requests were ignored because the request is no longer in the queue:').'<ul>';
             foreach my $cnum (@missingreq) {              foreach my $cnum (@missingreq) {
                 $output .= '<li>'.$cnum.'</li>';                  $output .= '<li>'.$cnum.'</li>';
             }              }
Line 765  sub update_request_queue { Line 831  sub update_request_queue {
         }          }
     }      }
     if (@nopermissions) {      if (@nopermissions) {
         $output .= '<p>'.&mt('The following course creation requests could not be processed because the course owner does hot have rights to create this type of course:').'<ul>';          $output .= '<p>'.&mt('The following course/community creation requests could not be processed because the owner does not have rights to create this type of course:').'<ul>';
         foreach my $cnum (@nopermissions) {          foreach my $cnum (@nopermissions) {
             my $showcourse;              my $showcourse;
             if (ref($requesthash{$cnum.'_approval'})) {              if (ref($requesthash{$cnum.'_approval'})) {
Line 785  sub update_request_queue { Line 851  sub update_request_queue {
             }              }
             $output .= '</ul></p>';              $output .= '</ul></p>';
         } else {          } else {
             $output .= '<p>'.&mt('The following course creation requests could not be processed because an error occurred:').'<ul>';              $output .= '<p>'.&mt('The following course/community creation requests could not be processed because an error occurred:').'<ul>';
             foreach my $cnum (@processing_errors) {              foreach my $cnum (@processing_errors) {
                 my $showcourse;                  my $showcourse;
                 if (ref($requesthash{$cnum.'_approval'})) {                  if (ref($requesthash{$cnum.'_approval'})) {
Line 799  sub update_request_queue { Line 865  sub update_request_queue {
         }          }
     }      }
     if (@rejectionerrors) {      if (@rejectionerrors) {
         $output .= '<p>'.&mt('The following course creation request rejections could not be fully processed because an error occurred:').'<ul>';          $output .= '<p>'.&mt('The following course/community creation request rejections could not be fully processed because an error occurred:').'<ul>';
         foreach my $cnum (@rejectionerrors) {          foreach my $cnum (@rejectionerrors) {
             my $showcourse;              my $showcourse;
             if (ref($requesthash{$cnum.'_approval'})) {              if (ref($requesthash{$cnum.'_approval'})) {
Line 819  sub update_request_queue { Line 885  sub update_request_queue {
             }              }
             $output .= '</ul></p>';              $output .= '</ul></p>';
         } else {          } else {
             $output .= '<p>'.&mt("For the following course requests an error occurred when updating the requestor's own course requests record:").'<ul>';              $output .= '<p>'.&mt("For the following course/community requests an error occurred when updating the requestor's own requests record:").'<ul>';
             foreach my $cnum (@warn_approves,@warn_rejects) {              foreach my $cnum (@warn_approves,@warn_rejects) {
                 my $showcourse;                  my $showcourse;
                 if (ref($requesthash{$cnum.'_approval'})) {                  if (ref($requesthash{$cnum.'_approval'})) {
Line 832  sub update_request_queue { Line 898  sub update_request_queue {
             $output .= '</ul></p>';              $output .= '</ul></p>';
         }          }
     }      }
       if (@warn_coursereqs) {
           $output .= '<p>'..&mt("For the following users, an error occurred when setting rights to request creation of Concept Test courses:").'<ul>';
               foreach my $user (@warn_coursereqs) {
                   $output .= '<li>'.$user.'</li>';
               }
               $output .= '</ul></p>';
       }
     return $output;      return $output;
 }  }
   
   sub enable_gci_submission {
       my ($udom,$uname,$access_end,$access_start) = @_;
       my $cdom = 'gci';
       my $cnum = '1H96711d710194bfegcil1';
       my ($stucounts,$idx,$classlist) = &get_student_counts($cdom,$cnum);
       if (exists($classlist->{$uname.':'.$udom})) {
           if (ref($classlist->{$uname.':'.$udom}) eq 'ARRAY') {
               if (($classlist->{$uname.':'.$udom}->[$idx->{'status'}] eq 'Active') ||
                   ($classlist->{$uname.':'.$udom}->[$idx->{'status'}] eq 'Future')) {
                   return;
               }
           }
       }
       return
           &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,undef,$access_end,$access_start,'selfenroll',undef,$cdom.'_'.$cnum,1);
   }
   
 sub get_student_counts {  sub get_student_counts {
     my ($cdom,$cnum) = @_;      my ($cdom,$cnum) = @_;
     my (%idx,%stucounts);      my (%idx,%stucounts);
Line 869  sub course_creation { Line 959  sub course_creation {
         $ownername = $env{'user.name'};          $ownername = $env{'user.name'};
         $ownerdom  = $env{'user.domain'};          $ownerdom  = $env{'user.domain'};
     }      }
     my $type = 'Course';  
     if ($crstype eq 'community') {  
         $type = 'Community';  
     }  
     my $owneremail;      my $owneremail;
     my %emails = &Apache::loncommon::getemails($ownername,$ownerdom);      my %emails = &Apache::loncommon::getemails($ownername,$ownerdom);
     foreach my $email ('permanentemail','critnotification','notification') {      foreach my $email ('permanentemail','critnotification','notification') {
         $owneremail = $emails{$email};          $owneremail = $emails{$email};
         last if ($owneremail ne '');          last if ($owneremail ne '');
     }      }
     my %reqdetails = &build_batchcreatehash($dom,$details,$owneremail,$domdefs);      my %reqdetails = &build_batchcreatehash($dom,$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,\$newusermsg,\$addresult,
                   \$enrollcount,\$output,\$keysmsg,$ownerdom,$ownername,$cnum,$crstype);                    \$enrollcount,\$output,\$keysmsg,$ownerdom,$ownername,$cnum,$crstype);
Line 892  sub course_creation { Line 978  sub course_creation {
 }  }
   
 sub build_batchcreatehash {  sub build_batchcreatehash {
     my ($dom,$details,$owneremail,$domdefs) = @_;      my ($dom,$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};      my @items = qw{owner domain coursehome clonecrs clonedom datemode dateshift enrollstart enrollend accessstart accessend sections crosslists users};
     if ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH')) {      if ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH')) {
Line 913  sub build_batchcreatehash { Line 999  sub build_batchcreatehash {
         } else {          } else {
             $batchhash{'crstype'} = 'Course';              $batchhash{'crstype'} = 'Course';
         }          }
         $batchhash{'users'}{$details->{$owner}} = {          my ($owner_firstname,$owner_lastname);
                                  firstname => $env{'environment.first'},          if ($context eq 'domain') {
                                  lastname  => $env{'environment.last'},              my %userenv = &Apache::lonnet::userenvironment($details->{'domain'},
                                  emailenc  => $emailenc,                                                             $details->{'owner'},
                                  email     => $owneremail,                                                             'firstname','lastname');
                              };              $owner_firstname = $userenv{'firstname'};
               $owner_lastname = $userenv{'lastname'};
           } else {
               $owner_firstname = $env{'environment.firstname'};
               $owner_lastname = $env{'environment.lastname'};
           }
           if (ref($details->{'personnel'}) eq 'HASH') {
               %{$batchhash{'users'}} = %{$details->{'personnel'}};
               if (ref($batchhash{'users'}) eq 'HASH') {  
                   foreach my $userkey (keys(%{$batchhash{'users'}})) {
                       if (ref($batchhash{'users'}{$userkey}) eq 'HASH') {
                           if (ref($batchhash{'users'}{$userkey}{'roles'}) eq 'ARRAY') {
                               foreach my $role (@{$batchhash{'users'}{$userkey}{'roles'}}) {
                                   my $start = '';
                                   my $end = '';
                                   if ($role eq 'st') {
                                       $start = $details->{'accessstart'};
                                       $end = $details->{'accessend'};
                                   }
                                   $batchhash{'users'}{$userkey}{$role}{'start'} = $start;
                                   $batchhash{'users'}{$userkey}{$role}{'end'} = $end;
                               } 
                           }
                       }
                   }
               }
           }
           $batchhash{'users'}{$owner}{firstname} = $owner_firstname;
           $batchhash{'users'}{$owner}{lastname} = $owner_lastname;
           $batchhash{'users'}{$owner}{emailenc} = $emailenc;
           $batchhash{'users'}{$owner}{owneremail} = $owneremail;
     }      }
     return %batchhash;      return %batchhash;
 }  }
   
 sub can_clone_course {  sub can_clone_course {
     my ($uname,$udom,$clonecrs,$clonedom) = @_;      my ($uname,$udom,$clonecrs,$clonedom,$crstype) = @_;
     my $canclone;      my $canclone;
       my $ccrole = 'cc';
       if ($crstype eq 'community') {
           $ccrole = 'co';
       }
     my %roleshash = &Apache::lonnet::get_my_roles($uname,$udom,'userroles',['active'],      my %roleshash = &Apache::lonnet::get_my_roles($uname,$udom,'userroles',['active'],
                                                   ['cc'],[$clonedom]);                                                    [$ccrole],[$clonedom]);
     if (exists($roleshash{$clonedom.':'.$clonecrs.':cc'})) {      if (exists($roleshash{$clonecrs.':'.$clonedom.':'.$ccrole})) {
         $canclone = 1;          $canclone = 1;
     } else {      } else {
         my %courseenv = &Apache::lonnet::userenvironment($clonedom,$clonecrs,('cloners'));          my %courseenv = &Apache::lonnet::userenvironment($clonedom,$clonecrs,('cloners'));

Removed from v.1.7  
changed lines
  Added in v.1.12.2.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.