[LON-CAPA-cvs] cvs: loncom / loncapa_apache.conf /interface longroupchat.pm

raeburn raeburn at source.lon-capa.org
Fri Jan 23 14:24:00 EST 2026


raeburn		Fri Jan 23 19:24:00 2026 EDT

  Modified files:              
    /loncom/interface	longroupchat.pm 
    /loncom	loncapa_apache.conf 
  Log:
  - Display roles page unless course role active.
  - Display appropriate error messages if group missing from query string,
    group name is invalid, or user is not authorized to access group's chat.
  
  
Index: loncom/interface/longroupchat.pm
diff -u loncom/interface/longroupchat.pm:1.10 loncom/interface/longroupchat.pm:1.11
--- loncom/interface/longroupchat.pm:1.10	Tue Feb 24 18:20:49 2009
+++ loncom/interface/longroupchat.pm	Fri Jan 23 19:23:58 2026
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # "Group Chat Room Frame" Personal Information
 #
-# $Id: longroupchat.pm,v 1.10 2009/02/24 18:20:49 hauer Exp $
+# $Id: longroupchat.pm,v 1.11 2026/01/23 19:23:58 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -28,30 +28,55 @@
 package Apache::longroupchat;
 
 use strict;
-use Apache::Constants qw(:common);
+use Apache::Constants qw(:common :http);
 use Apache::lonnet;
 use Apache::loncommon();
 use Apache::lonlocal;
 use Apache::longroup();
 use lib '/home/httpd/lib/perl/';
+use HTML::Entities();
 use LONCAPA;
  
 
 sub handler {
     my ($r) = @_;
+    if ($env{'request.course.id'} eq '') {
+        my $requrl = $r->uri;
+        $env{'user.error.msg'} = "$requrl:bre:0:0:Choose course";
+        return HTTP_NOT_ACCEPTABLE;
+    }
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['group']);
     my $group = $env{'form.group'};
-    my $grouptitle;
-    if (defined($group)) {
+    my $grouptitle = &mt('Group Chat Room');
+    if ($group ne '') {
         my $cnum=$env{'course.'.$env{'request.course.id'}.'.num'};
         my $cdom=$env{'course.'.$env{'request.course.id'}.'.domain'};
         my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum,$group);
-        if (%curr_groups) {
-            my %group_info = 
-		&Apache::longroup::get_group_settings($curr_groups{$group});
-            $grouptitle = &mt('Group Chat Room:').' '.
-		&unescape($group_info{description});
+        if ((keys(%curr_groups)) && ($curr_groups{$group} ne '')) {
+            my %group_info =
+                &Apache::longroup::get_group_settings($curr_groups{$group});
+            if ($group_info{description} ne '') {
+                $grouptitle .= ': '.&unescape($group_info{description});
+            }
+            $grouptitle = &HTML::Entities::encode($grouptitle,'<>');
+            if ((! &Apache::lonnet::allowed('pgc',$env{'request.course.id'}.'/'.$group)) &&
+                (! &Apache::lonnet::allowed('vcg',$env{'request.course.id'}.
+                       ($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:'')))) {
+                &Apache::loncommon::simple_error_page($r,$grouptitle,&mt('Access Denied'),
+                                                      {'only_body' => 1});
+                return OK;
+            }
+        } else {
+            $grouptitle = &HTML::Entities::encode($grouptitle,'<>');
+            &Apache::loncommon::simple_error_page($r,$grouptitle,&mt('Invalid group'),
+                                                  {'only_body' => 1});
+            return OK;
         }
+    } else {
+        $grouptitle = &HTML::Entities::encode($grouptitle,'<>');
+        &Apache::loncommon::simple_error_page($r,$grouptitle,&mt('Missing group name'),
+                                              {'only_body' => 1});
+        return OK;
     }
 
     &Apache::loncommon::content_type($r,'text/html');
Index: loncom/loncapa_apache.conf
diff -u loncom/loncapa_apache.conf:1.288 loncom/loncapa_apache.conf:1.289
--- loncom/loncapa_apache.conf:1.288	Wed Dec 31 23:44:30 2025
+++ loncom/loncapa_apache.conf	Fri Jan 23 19:24:00 2026
@@ -2,7 +2,7 @@
 ## loncapa_apache.conf -- Apache HTTP LON-CAPA configuration file
 ##
 
-# $Id: loncapa_apache.conf,v 1.288 2025/12/31 23:44:30 raeburn Exp $
+# $Id: loncapa_apache.conf,v 1.289 2026/01/23 19:24:00 raeburn Exp $
 
 #
 # LON-CAPA Section (extensions to httpd.conf daemon configuration)
@@ -1500,6 +1500,7 @@
 SetHandler perl-script
 PerlHandler Apache::longroupchat
 ErrorDocument     403 /adm/login
+ErrorDocument     406 /adm/roles
 ErrorDocument     500 /adm/errorhandler
 </Location>
 




More information about the LON-CAPA-cvs mailing list