Diff for /loncom/interface/longroup.pm between versions 1.7 and 1.11

version 1.7, 2006/06/30 18:27:19 version 1.11, 2006/07/28 18:44:27
Line 232  sub group_changes { Line 232  sub group_changes {
     my $courseid = $cid;      my $courseid = $cid;
     $courseid =~ s|^/||;      $courseid =~ s|^/||;
     $courseid =~ s|/|_|;      $courseid =~ s|/|_|;
       if ($role =~ /^cr/) {
           $role =~ s/\//_/g;
       }
     my %crshash=&Apache::lonnet::coursedescription($cid);      my %crshash=&Apache::lonnet::coursedescription($cid);
     $cdom = $crshash{'domain'};      $cdom = $crshash{'domain'};
     $cnum = $crshash{'num'};      $cnum = $crshash{'num'};
Line 415  sub group_changes { Line 418  sub group_changes {
   
 ###############################################  ###############################################
   
   sub get_fixed_privs {
       my $fixedprivs = {
                         email      => {sgm => 1},
                         discussion => {vgb => 1},
                         chat       => {pgc => 1},
                         files      => {rgf => 1},
                         roster     => {vgm => 1},
                         homepage   => {vgh => 1},
                        };
       return $fixedprivs;
   }
   
   ###############################################
   
   sub get_tool_privs {
       my ($gpterm) = @_;
       my $toolprivs = {
           email      => {
               sgm => 'Send '.$gpterm.' mail',
               sgb => 'Broadcast mail',
           },
           discussion => {
               cgb => 'Create boards',
               pgd => 'Post',
               egp => 'Edit own posts',
               dgp => 'Hide/Delete any post',
               vgb => 'View boards',
           },
           chat       => {
               pgc => 'Chat',
           },
           files      => {
               rgf => 'Retrieve',
               ugf => 'Upload',
               mgf => 'Modify',
               dgf => 'Delete',
               agf => 'Control Access',
           },
           roster     => {
               vgm => 'Basic Display',
               vmd => 'Detailed Display',
           },
           homepage   => {
               vgh => 'View page',
               mgh => 'Modify page',
           },
       };
       return $toolprivs;
   }
   
   ###############################################
   
   
   sub group_memberlist {
       my ($cdom,$cnum,$groupname,$fixedprivs,$available) = @_;
       my %membership = &Apache::lonnet::get_group_membership($cdom,$cnum,
                                                              $groupname);
       my %current = ();
       my $hastools = 0;
       my $addtools = 0;
       my %member_nums = (
                           'previous' => 0,
                           'future' => 0,
                           'active' => 0,
                         );
       my $now = time;
       if (keys(%membership) > 0) {
           my %allnames = ();
           foreach my $key (sort(keys(%membership))) {
               if ($key =~ /^\Q$groupname\E:([^:]+):([^:]+)$/) {
                   my $uname = $1;
                   my $udom = $2;
                   my $user = $uname.':'.$udom;
                   my($end,$start,@userprivs) = split(/:/,$membership{$key});
                   unless ($start == -1) {
                       $allnames{$udom}{$uname} = 1;
                       $current{$user} = {
                           uname     => $uname,
                           udom      => $udom,
                           start     => &Apache::lonlocal::locallocaltime($start),
                           currtools => [],
                           newtools  => [],
                           privs     => \@userprivs,
                       };
   
                       if ($end == 0) {
                           $current{$user}{end} =  'No end date';
                       } else {
                           $current{$user}{end} =
                                        &Apache::lonlocal::locallocaltime($end);
                       }
                       my $now = time;
                       if (($end > 0) && ($end < $now)) {
                           $current{$user}{changestate} = 'reenable';
                           $current{$user}{'status'} = 'previous';
                           $member_nums{'previous'} ++;
                       } elsif (($start > $now)) {
                           $current{$user}{changestate} = 'activate';
                           $current{$user}{'status'} = 'future';
                           $member_nums{'future'} ++;
                       } else {
                           $current{$user}{changestate} = 'expire';
                           $current{$user}{'status'} = 'active';
                           $member_nums{'active'} ++;
                       }
                       if ((@userprivs > 0) && (ref($fixedprivs) eq 'HASH')) {
                           foreach my $tool (sort(keys(%{$fixedprivs}))) {
                               foreach my $priv (keys(%{$$fixedprivs{$tool}})) {
                                   if (grep/^$priv$/,@userprivs) {
                                       push(@{$current{$user}{currtools}},$tool);
                                       last;
                                   }
                               }
                           }
                           $hastools = 1;
                       }
                       if ((ref($available) eq 'ARRAY') && (@{$available} > 0)) {
                           if (@{$current{$user}{currtools}} > 0) {
                               if ("@{$available}" ne "@{$current{$user}{currtools}}") {
                                   foreach my $tool (@{$available}) {
                                       unless (grep/^$tool$/,@{$current{$user}{currtools}}) {
                                           push(@{$current{$user}{newtools}},$tool);                                    }
                                   }
                               }
                           } else {
                               @{$current{$user}{newtools}} = @{$available};
   
                           }
                           if (@{$current{$user}{newtools}} > 0) {
                               $addtools = 1;
                           }
                       }
                   }
               }
           }
           if (keys(%current) > 0) {
               my %idhash;
               foreach my $udom (keys(%allnames)) {
                   %{$idhash{$udom}} = &Apache::lonnet::idrget($udom,
                                                   keys(%{$allnames{$udom}}));
                   foreach my $uname (keys(%{$idhash{$udom}})) {
                       $current{$uname.':'.$udom}{'id'} = $idhash{$udom}{$uname};
                   }
                   foreach my $uname (keys(%{$allnames{$udom}})) {
                       $current{$uname.':'.$udom}{'fullname'} =
                                   &Apache::loncommon::plainname($uname,$udom,
                                                                     'lastname');
                   }
               }
           }
       }
       return (\%current,\%member_nums,$hastools,$addtools);
   }
   
   ###############################################
   
 sub sum_quotas {  sub sum_quotas {
     my ($courseid) = @_;      my ($courseid) = @_;
     my $totalquotas = 0;      my $totalquotas = 0;
Line 457  sub get_bbfolder_url { Line 616  sub get_bbfolder_url {
     my %curr_groups = &coursegroups($cdom,$cnum,$group);      my %curr_groups = &coursegroups($cdom,$cnum,$group);
     my $grpbbmap;      my $grpbbmap;
     if (%curr_groups) {      if (%curr_groups) {
         my %group_info =  &get_group_settings($curr_groups{$group});  
         my $creation = $group_info{'creation'};  
         my $bbfolder = $creation + 1;  
         my $crspath = '/uploaded/'.$cdom.'/'.$cnum.'/';          my $crspath = '/uploaded/'.$cdom.'/'.$cnum.'/';
         $grpbbmap = $crspath.'default_'.$bbfolder.'.sequence';          $grpbbmap = $crspath.'group_boards_'.$group.'.sequence';
     }      }
     return $grpbbmap;      return $grpbbmap;
 }  }
Line 469  sub get_bbfolder_url { Line 625  sub get_bbfolder_url {
 ###############################################  ###############################################
   
 sub get_group_bbinfo {  sub get_group_bbinfo {
     my ($cdom,$cnum,$group) = @_;      my ($cdom,$cnum,$group,$boardurl) = @_;
     my $navmap = Apache::lonnavmaps::navmap->new();      my $navmap = Apache::lonnavmaps::navmap->new();
     my @groupboards;      my @groupboards;
     my %boardshash;      my %boardshash;
Line 480  sub get_group_bbinfo { Line 636  sub get_group_bbinfo {
             my @boards = $navmap->retrieveResources($bbfolderres,undef,0,0);              my @boards = $navmap->retrieveResources($bbfolderres,undef,0,0);
             foreach my $res (@boards) {              foreach my $res (@boards) {
                 my $url = $res->src();                  my $url = $res->src();
                 if ($url =~ m|^/adm/\Q$cdom\E/\Q$cnum\E/\d+/bulletinboard|) {                  if ($url =~ m|^(/adm/\Q$cdom\E/\Q$cnum\E/\d+/bulletinboard)|) {
                     push(@groupboards,$res->symb());                      if ($boardurl) {
                     $boardshash{$res->symb()} = {                          if ($boardurl =~ /^\Q$1\E/) {
                                                   title => $res->title(),                              push(@groupboards,$res->symb());
                                                   url   => $res->src(),                              $boardshash{$res->symb()} = {
                                                 };                                                          title => $res->title(),
                                                           url   => $res->src(),
                                                           };
                               last;
                           }
                       } else {
                           push(@groupboards,$res->symb());
                           $boardshash{$res->symb()} = {
                                                         title => $res->title(),
                                                         url   => $res->src(),
                                                       };
                       }
                 }                  }
             }              }
         }          }

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


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