Diff for /loncom/interface/loncoursequeueadmin.pm between versions 1.50 and 1.51

version 1.50, 2015/03/26 14:16:11 version 1.51, 2015/05/21 23:40:09
Line 1724  sub build_batchcreatehash { Line 1724  sub build_batchcreatehash {
 }  }
   
 sub can_clone_course {  sub can_clone_course {
     my ($uname,$udom,$clonecrs,$clonedom,$crstype) = @_;      my ($uname,$udom,$clonecrs,$clonedom,$crstype,$dom,$instcode) = @_;
     my $canclone;      my $canclone;
     my $ccrole = 'cc';      my $ccrole = 'cc';
     if ($crstype eq 'community') {      if ($crstype eq 'community') {
Line 1735  sub can_clone_course { Line 1735  sub can_clone_course {
     if (exists($roleshash{$clonecrs.':'.$clonedom.':'.$ccrole})) {      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','internal.coursecode'));
         my $cloners = $courseenv{'cloners'};          my $cloners = $courseenv{'cloners'};
           my $clonefromcode = $courseenv{'internal.coursecode'};
         if ($cloners ne '') {          if ($cloners ne '') {
             my @cloneable = split(',',$cloners);              my @cloneable = split(',',$cloners);
             if (grep(/^\*$/,@cloneable)) {              if (grep(/^\*$/,@cloneable)) {
                 $canclone = 1;                  $canclone = 1;
             }              } elsif (grep(/^\*:\Q$udom\E$/,@cloneable)) {
             if (grep(/^\*:\Q$udom\E$/,@cloneable)) {  
                 $canclone = 1;                  $canclone = 1;
             }              } elsif (grep(/^\Q$uname\E:\Q$udom\E$/,@cloneable)) {
             if (grep(/^\Q$uname\E:\Q$udom\E$/,@cloneable)) {  
                 $canclone = 1;                  $canclone = 1;
             }              }
               unless ($canclone) {
                   if (($clonefromcode) && ($instcode) && ($clonedom eq $dom)) {
                       my (%gotdomdefaults,%gotcodedefaults);
                       foreach my $cloner (@cloneable) {
                           if (($cloner ne '*') && ($cloner !~ /^\*\:$match_domain$/) &&
                               ($cloner !~ /^$match_username\:$match_domain$/) && ($cloner ne '')) {
                               if ($cloner =~ /\=/) {
                                   my (%codedefaults,@code_order);
                                   if (ref($gotcodedefaults{$clonedom}) eq 'HASH') {
                                       if (ref($gotcodedefaults{$clonedom}{'defaults'}) eq 'HASH') {
                                           %codedefaults = %{$gotcodedefaults{$clonedom}{'defaults'}};
                                       }
                                       if (ref($gotcodedefaults{$clonedom}{'order'}) eq 'ARRAY') {
                                           @code_order = @{$gotcodedefaults{$dom}{'order'}};
                                       }
                                   } else {
                                       &Apache::lonnet::auto_instcode_defaults($clonedom,
                                                                               \%codedefaults,
                                                                               \@code_order);
                                       $gotcodedefaults{$clonedom}{'defaults'} = \%codedefaults;
                                       $gotcodedefaults{$clonedom}{'order'} = \@code_order;
                                   }
                                   if (@code_order > 0) {
                                       if (&Apache::lonnet::check_instcode_cloning(\%codedefaults,\@code_order,
                                                                                   $cloner,$clonefromcode,$instcode)) {
   print STDERR "Z got check from $cloner,$clonefromcode,$instcode and ||".join('**',@code_order)."||\n";
                                           $canclone = 1;
                                           last; 
                                       }
                                   }
                               }
                           }
                       }
                   }
               }
           } else {
               my %domdefs = &Apache::lonnet::get_domain_defaults($clonedom);
               if ($domdefs{'canclone'}) {
                   unless ($domdefs{'canclone'} eq 'none') {
                       if ($domdefs{'canclone'} eq 'domain') {
                           if ($udom eq $clonedom) {
                               $canclone = 1;
                           }
                       } elsif (($clonefromcode) && ($instcode) &&
                                ($clonedom eq $dom)) {
                           if (&Apache::lonnet::default_instcode_cloning($clonedom,$domdefs{'canclone'},
                                                                         $clonefromcode,$instcode)) {
                               $canclone = 1;
                           }
                       }
                   }
               }
         }          }
         unless ($canclone) {          unless ($canclone) {
             if (&Apache::lonnet::is_course_owner($clonedom,$clonecrs,$uname,$udom)) {              if (&Apache::lonnet::is_course_owner($clonedom,$clonecrs,$uname,$udom)) {

Removed from v.1.50  
changed lines
  Added in v.1.51


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