Diff for /loncom/interface/longroup.pm between versions 1.15 and 1.25

version 1.15, 2006/12/20 22:37:04 version 1.25, 2010/08/29 22:59:49
Line 1 Line 1
 # The LearningOnline Network with CAPA  # The LearningOnline Network with CAPA
 # accessor routines used to provide information about course groups   # accessor routines used to provide information about course groups 
 #  #
   # $Id$
   #
 # Copyright Michigan State University Board of Trustees  # Copyright Michigan State University Board of Trustees
 #  #
 # This file is part of the LearningOnline Network with CAPA (LON-CAPA).  # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
Line 28  package Apache::longroup; Line 30  package Apache::longroup;
   
 use strict;  use strict;
 use Apache::lonnet;  use Apache::lonnet;
   use Apache::lonlocal;
   use LONCAPA;
   
 ###############################################  ###############################################
 =pod  =pod
Line 199  Input: Line 203  Input:
 4. Role  4. Role
 5. End date of role  5. End date of role
 6. Start date of role  6. Start date of role
   7. Selfenroll
   8. Context
   
 Checks to see if role for which assignment is being made is in a course.  Checks to see if role for which assignment is being made is in a course.
 If so, gathers information about auto-group population settings for  If so, gathers information about auto-group population settings for
Line 214  and would trigger membership in teh same Line 220  and would trigger membership in teh same
 If role is being added, will add any group memberships specified  If role is being added, will add any group memberships specified
 for auto-group population, unless use is already a group member.  for auto-group population, unless use is already a group member.
 Uses default group privileges and default start and end group access  Uses default group privileges and default start and end group access
 times.   times.
   
   Flag for selfenroll (value of 1), and context (auto, updatenow, 
   automated, course, domain etc.) can be used to log the reason for
   the role change.     
   
 Output  Output
 None  None
Line 227  or expire group membership(s) for a user Line 237  or expire group membership(s) for a user
 =cut  =cut
   
 sub group_changes {  sub group_changes {
     my ($udom,$uname,$url,$role,$origend,$origstart) = @_;      my ($udom,$uname,$url,$role,$origend,$origstart,$selfenroll,$context) = @_;
     my $now = time;      my $now = time;
     my $chgtype;      my $chgtype;
     if ($origend > 0 && $origend <= $now) {      if ($origend > 0 && $origend <= $now) {
Line 339  sub group_changes { Line 349  sub group_changes {
                                                   $add,$uname.':'.$udom,                                                    $add,$uname.':'.$udom,
                                                   $settings{$add}{'enddate'},                                                    $settings{$add}{'enddate'},
                                                   $settings{$add}{'startdate'},                                                    $settings{$add}{'startdate'},
                                                   $group_privs) eq 'ok') {                                                    $group_privs,$selfenroll,$context) eq 'ok') {
                             my %usersettings;                              my %usersettings;
                             $usersettings{$add.':'.$uname.':'.$udom} =                              $usersettings{$add.':'.$uname.':'.$udom} =
                                                                $addgroup{$add};                                                                 $addgroup{$add};
Line 408  sub group_changes { Line 418  sub group_changes {
                                                          $cnum,$drop,                                                           $cnum,$drop,
                                                          $uname.':'.$udom,$now,                                                           $uname.':'.$udom,$now,
                                                          $dropstart{$drop},                                                           $dropstart{$drop},
                                                          $currpriv{$drop})                                                            $currpriv{$drop},
                                                            $selfenroll,$context) 
                                                                      eq 'ok') {                                                                       eq 'ok') {
                                 my %usersettings;                                  my %usersettings;
                                 $usersettings{$drop.':'.$uname.':'.$udom} =                                  $usersettings{$drop.':'.$uname.':'.$udom} =
Line 430  sub group_changes { Line 441  sub group_changes {
   
 sub get_fixed_privs {  sub get_fixed_privs {
     my $fixedprivs = {      my $fixedprivs = {
                       email      => {sgm => 1},                        email          => {sgm => 1},
                       discussion => {vgb => 1},                        discussion     => {vgb => 1},
                       chat       => {pgc => 1},                        chat           => {pgc => 1},
                       files      => {rgf => 1},                        files          => {rgf => 1},
                       roster     => {vgm => 1},                        roster         => {vgm => 1},
                       homepage   => {vgh => 1},                        homepage       => {vgh => 1},
                      };                       };
     return $fixedprivs;      return $fixedprivs;
 }  }
Line 445  sub get_fixed_privs { Line 456  sub get_fixed_privs {
 sub get_tool_privs {  sub get_tool_privs {
     my ($gpterm) = @_;      my ($gpterm) = @_;
     my $toolprivs = {      my $toolprivs = {
         email      => {          email    => {
             sgm => 'Send '.$gpterm.' mail',              sgm => 'Send '.$gpterm.' message',
             sgb => 'Broadcast mail',              sgb => 'Broadcast message',
         },          },
         discussion => {          discussion => {
             cgb => 'Create boards',              cgb => 'Create boards',
Line 457  sub get_tool_privs { Line 468  sub get_tool_privs {
             vgb => 'View boards',              vgb => 'View boards',
         },          },
         chat       => {          chat       => {
             pgc => 'Chat',              pgc => 'Chat Room',
         },          },
         files      => {          files      => {
             rgf => 'Retrieve',              rgf => 'Retrieve',
Line 636  sub get_bbfolder_url { Line 647  sub get_bbfolder_url {
   
 sub get_group_bbinfo {  sub get_group_bbinfo {
     my ($cdom,$cnum,$group,$boardurl) = @_;      my ($cdom,$cnum,$group,$boardurl) = @_;
       my @groupboards = ();
       my %boardshash = ();
     my $navmap = Apache::lonnavmaps::navmap->new();      my $navmap = Apache::lonnavmaps::navmap->new();
     my @groupboards;      if (defined($navmap)) {
     my %boardshash;          my $grpbbmap = &get_bbfolder_url($cdom,$cnum,$group);
     my $grpbbmap = &get_bbfolder_url($cdom,$cnum,$group);          if ($grpbbmap) {
     if ($grpbbmap) {              my $bbfolderres = $navmap->getResourceByUrl($grpbbmap);
         my $bbfolderres = $navmap->getResourceByUrl($grpbbmap);              if ($bbfolderres) {
         if ($bbfolderres) {                  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)|) {                          if ($boardurl) {
                     if ($boardurl) {                              if ($boardurl =~ /^\Q$1\E/) {
                         if ($boardurl =~ /^\Q$1\E/) {                                  push(@groupboards,$res->symb());
                             push(@groupboards,$res->symb());                                  $boardshash{$res->symb()} = {
                             $boardshash{$res->symb()} = {  
                                                         title => $res->title(),                                                          title => $res->title(),
                                                         url   => $res->src(),                                                          url   => $res->src(),
                                                         };                                                              };
                             last;                                  last;
                         }                              }
                     } else {                          } else {
                         push(@groupboards,$res->symb());                              push(@groupboards,$res->symb());
                         $boardshash{$res->symb()} = {                              $boardshash{$res->symb()} = {
                                                       title => $res->title(),                                                        title => $res->title(),
                                                       url   => $res->src(),                                                        url   => $res->src(),
                                                     };                                                          };
                           }
                     }                      }
                 }                  }
             }              }
         }          }
           undef($navmap);
       } else {
           &Apache::lonnet::logthis('Retrieval of group boards failed - could not create navmap object for group: '.$group.' in course: '.$cdom.':'.$cnum);
     }      }
     undef($navmap);  
     return (\@groupboards,\%boardshash);      return (\@groupboards,\%boardshash);
 }  }
   
 ###############################################  ###############################################
   
   sub get_group_link {
       my ($cdom,$cnum,$group,$navmap) = @_;
       if (ref($navmap)) {
           my $symb = 'uploaded/'.$cdom.'/'.$cnum.'/group_folder_'.$group.'.sequence___1___adm/'.$cdom.'/'.$cnum.'/'.$group.'/smppg';
           my $res = $navmap->getBySymb($symb);
           my $link;
           if (ref($res)) {
               $link = $res->link();
               $link .= (($link=~/\?/)?'&amp;':'?').'symb='.$res->shown_symb();
           } else {
               $link = '/adm/'.$cdom.'/'.$cnum.'/'.$group.'/smppg';
           }
           return $link; 
       }
       return;
   }
   
   ###############################################
   
 1;  1;
   

Removed from v.1.15  
changed lines
  Added in v.1.25


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