Diff for /loncom/interface/loncommon.pm between versions 1.925.2.5 and 1.925.2.9

version 1.925.2.5, 2009/12/15 05:08:50 version 1.925.2.9, 2010/01/16 19:56:54
Line 10697  sub _add_to_env { Line 10697  sub _add_to_env {
     }      }
 }  }
   
   sub new_roles_update {
       my $rolecount = 0;
       foreach my $envkey (keys(%env)) {
           next unless ($envkey =~ /^user\.role\./);
           $rolecount ++;
       }
       my $newrolecount = 0;
       if (!$rolecount) {
           my %userenv;
           foreach my $crstype ('official','unofficial','community') {
               $userenv{'canrequest.'.$crstype} =
                   &Apache::lonnet::usertools_access($env{'user.name'},
                   $env{'user.domain'},$crstype,'reload','requestcourses');
           }
           my $then=$env{'user.login.time'};
           my $refresh=time;
           my (%userroles,%allroles,%allgroups,@newroles);
           my %roleshash =
               &Apache::lonnet::get_my_roles($env{'user.name'},$env{'user.domain'},'userroles',['active','future','previous'],undef,undef,1);
           foreach my $item (keys(%roleshash)) {
               my ($uname,$udom,$role,$section) = split(':',$item);
               my $where = '/'.$udom.'/'.$uname;
               my ($tstart,$tend) = split(':',$roleshash{$item});
               if ($section ne '') {
                   $where .= '/'.$section;
               }
               my $spec = $role.'.'.$where;
               &Apache::lonnet::set_arearole($role,$where,$tstart,$tend,
                                             $env{'user.domain'},$env{'user.name'});
               $userroles{'user.role.'.$spec} = $tstart.'.'.$tend;
               $newrolecount ++;
               unless (grep(/^\Q$role\E$/,@newroles)) {
                   push(@newroles,$role);
               }
               my $status =
                   &Apache::lonnet::curr_role_status($tstart,$tend,$refresh,$then);
               if ($status eq 'active') {
                   &Apache::lonnet::gather_roleprivs(\%allroles,\%allgroups,\%userroles,
                                                     $where,$role,$tstart,$tend);
               }
           }
           if (@newroles) {
               &Apache::lonnet::appenv(\%userroles,[@newroles,'cm']);
               my ($author,$adv) = &Apache::lonnet::set_userprivs(\%userroles,\%allroles,
                                                                  \%allgroups);
               $userenv{'user.adv'} = $adv;
               $userenv{'user.author'} = $author;
               $userenv{'user.refresh.time'} = $refresh;
           }
           &Apache::lonnet::appenv(\%userenv);
       }
       return $newrolecount;
   }
   
 # --- Get the symbolic name of a problem and the url  # --- Get the symbolic name of a problem and the url
 sub get_symb {  sub get_symb {
     my ($request,$silent) = @_;      my ($request,$silent) = @_;
Line 10786  sub check_for_gci_dc { Line 10840  sub check_for_gci_dc {
 }  }
   
 sub existing_gcitest_courses {  sub existing_gcitest_courses {
       my ($role) = @_;
     my %courses;      my %courses;
     my $cdom = 'gcitest';      my $cdom = 'gcitest';
     my $role = 'cc';  
     my $now = time;      my $now = time;
     foreach my $envkey (keys(%env)) {      foreach my $envkey (keys(%env)) {
         my $cnum;          my $cnum;
Line 10797  sub existing_gcitest_courses { Line 10851  sub existing_gcitest_courses {
         } else {          } else {
             next;              next;
         }          }
         my ($tstart,$tend) = split(':',$env{$envkey});          my ($tstart,$tend) = split('.',$env{$envkey});
         if (((!$tstart) || ($tstart < $now)) && ((!$tend) || ($tend > $now))) {          if (((!$tstart) || ($tstart < $now)) && ((!$tend) || ($tend > $now))) {
             my $descr = $env{'course.'.$cdom.'_'.$cnum.'.description'};              my $descr = $env{'course.'.$cdom.'_'.$cnum.'.description'};
             if ($descr ne '') {              if ($descr ne '') {

Removed from v.1.925.2.5  
changed lines
  Added in v.1.925.2.9


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