diff -Nur smeserver-groupmembers-panel-1.0.2.old/root/usr/share/perl5/site_perl/esmith/FormMagick/Panel/groupmembers.pm smeserver-groupmembers-panel-1.0.2/root/usr/share/perl5/site_perl/esmith/FormMagick/Panel/groupmembers.pm
--- smeserver-groupmembers-panel-1.0.2.old/root/usr/share/perl5/site_perl/esmith/FormMagick/Panel/groupmembers.pm 2014-06-16 11:54:48.000000000 -0400
+++ smeserver-groupmembers-panel-1.0.2/root/usr/share/perl5/site_perl/esmith/FormMagick/Panel/groupmembers.pm 1969-12-31 19:00:00.000000000 -0500
@@ -1,307 +0,0 @@
-#!/usr/bin/perl -w
-
-
-package esmith::FormMagick::Panel::groupmembers;
-
-use strict;
-
-use esmith::FormMagick;
-use esmith::ConfigDB;
-use esmith::AccountsDB;
-use File::Basename;
-use Exporter;
-use Carp;
-
-our @ISA = qw(esmith::FormMagick Exporter);
-
-our @EXPORT = qw(
-
- show_initial
- genUsers
- modify_group
- get_accounts_prop
- get_description
- get_cgi_param
-);
-
-our $accounts = esmith::AccountsDB->open() || die "Couldn't open accounts";
-our $db = esmith::ConfigDB->open || die "Couldn't open config db";
-
-our $VERSION = sprintf '%d.%03d', q$Revision: 1.38 $ =~ /: (\d+).(\d+)/;
-
-
-
-=pod
-
-=head1 NAME
-
-esmith::FormMagick::Panels::groups - useful panel functions
-
-=head1 SYNOPSIS
-
- use esmith::FormMagick::Panels::groups;
-
- my $panel = esmith::FormMagick::Panel::groups->new();
- $panel->display();
-
-=head1 DESCRIPTION
-
-=cut
-
-
-=head2 new();
-
-Exactly as for esmith::FormMagick
-
-=begin testing
-
-$ENV{ESMITH_ACCOUNT_DB} = "10e-smith-base/accounts.conf";
-$ENV{ESMITH_CONFIG_DB} = "10e-smith-base/configuration.conf";
-
-use_ok('esmith::FormMagick::Panel::groups');
-use vars qw($panel);
-ok($panel = esmith::FormMagick::Panel::groups->new(), "Create panel object");
-isa_ok($panel, 'esmith::FormMagick::Panel::groups');
-
-=end testing
-
-=cut
-
-sub new {
- shift;
- my $self = esmith::FormMagick->new();
- $self->{calling_package} = (caller)[0];
- bless $self;
- return $self;
-}
-
-
-=head1 ACCESSORS
-
-=head2 get_cgi_param FM FIELD
-
-Returns the named CGI parameter as a string
-
-=cut
-
-sub get_cgi_param {
- my $fm = shift;
- my $param = shift;
-
- return ( $fm->{'cgi'}->param($param) );
-}
-
-
-=head2 get_accounts_prop ITEM PROP
-
-A simple accessor for esmith::ConfigDB::Record::prop
-
-=cut
-
-sub get_accounts_prop {
- my $fm = shift;
- my $item = shift;
- my $prop = shift;
-
- my $record = $accounts->get($item);
-
- if ($record) {
- return $record->prop($prop);
- }
- else {
- return '';
- }
-
-}
-
-
-=head2 get_description
-
-Get the Description for the group named in the CGI argument "GroupName"
-
-=cut
-
-sub get_description {
- my $fm = shift;
- my $group = $fm->{'cgi'}->param('groupName');
- return ( $fm->get_accounts_prop( $group, 'Description' ) );
-}
-
-=head1 ACTION
-
-
-=head2 show_initial FM
-
-Show the "start" page for this panel
-
-=cut
-
-sub show_initial () {
- my $fm = shift;
- my $q = $fm->{cgi};
-
- my $UserName = $ENV{'REMOTE_USER'} ||'';
- my $record = $accounts->get($UserName);
- my $dg=$record->prop('delegatedGroups')||'';
- $dg =~ s/ //g;
- my @g = split(/,/, $dg);
- my %delegatedGroups;
- foreach my $k ( @g )
- {
- $delegatedGroups{$k}=1;
- }
-
- $q->Delete('groupName');
-
- my $params = $fm->build_cgi_params();
-
- my $numGroups = $accounts->groups;
-
- if ( $numGroups == 0 ) {
- print $q->Tr($q->td(
- '
' . $fm->localise("NO_GROUPS") . '
'));
-
- }
- else {
- print ""
- . $fm->localise("GROUP")
- . " | "
- . $fm->localise('DESCRIPTION')
- . " | "
- . $fm->localise('ACTION')
- . " |
";
- foreach my $group ( $accounts->groups() ) {
- next if %delegatedGroups and not $delegatedGroups{$group->key};
- $params = $fm->build_cgi_params( $group->key );
- print "" . ""
- . $group->key . " | " . ""
- . $group->prop('Description') . " | "
- . ""
- . $fm->localise("MODIFY") . " | "
- . "
";
-
- }
- print $q->end_table,"\n";
- }
- return;
-}
-
-
-=head2 modify_group FM
-
-Modify a group's description and membership roster
-
-=cut
-
-sub modify_group {
-
- my $fm = shift;
- my $q = $fm->{'cgi'};
-
- my @members = $q->param('groupMembers');
- my $groupName = $q->param('groupName');
-
- $accounts->get($groupName)->set_prop( 'Members', join ( ',', @members ) );
-
- # Untaint groupName before use in system()
- ($groupName) = ($groupName =~ /^([a-z][\-\_\.a-z0-9]*)$/);
- $fm->clear_params();
- return system("/sbin/e-smith/signal-event", "group-modify", "$groupName") ?
- $fm->error('MODIFY_ERROR') : $fm->success('MODIFIED_GROUP');
-}
-
-
-=head1 UTILITY FUNCTIONS
-
-=head2 build_cgi_params()
-
-Builds a CGI query string, using various sensible
-defaults and esmith::FormMagick's props_to_query_string() method.
-
-=cut
-
-sub build_cgi_params {
- my ( $fm, $group ) = @_;
-
- my %props = (
- page => 0,
- page_stack => "",
- ".id" => $fm->{cgi}->param('.id') || "",
- groupName => $group,
- );
-
- return $fm->props_to_query_string( \%props );
-}
-
-=head2 genUsers MEMBERS
-
-Takes a comma delimited list of users and returns a string of
-html checkboxes for all system users with the members of the group
-in $fm->{cgi}->parm('groupName')checked.
-
-=cut
-
-sub genUsers () {
- my $fm = shift;
- my $members = "";
- my $group = $fm->{'cgi'}->param('groupName');
-
- if ($accounts->get($group)) {
- $members = $accounts->get($group)->prop('Members');
- }
- my %members;
- foreach my $member ( split ( /,/, $members ) ) {
- $members{$member} = 1;
- }
- my @users = sort { $a->key() cmp $b->key() } $accounts->users();
-
- # include Administrator at beginning of list
-
- my $out = "\n "
- . $fm->localise('GROUP_MEMBERS')
- . " | \n \n"
- . " \n | \n
\n";
- return $out;
-}
-
-=head2 clear_params
-
-This method clears-out the parameters used in form submission so that they are
-not inadvertenly picked-up where they should not be.
-
-=cut
-
-sub clear_params
-{
- my $self = shift;
- my $q = $self->{cgi};
-
- $q->delete('groupMembers');
- $q->delete('groupDesc');
- $q->delete('groupName');
-}
diff -Nur smeserver-groupmembers-panel-1.0.2.old/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/groupmembers.pm smeserver-groupmembers-panel-1.0.2/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/groupmembers.pm
--- smeserver-groupmembers-panel-1.0.2.old/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/groupmembers.pm 1969-12-31 19:00:00.000000000 -0500
+++ smeserver-groupmembers-panel-1.0.2/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/groupmembers.pm 2014-06-16 11:54:48.000000000 -0400
@@ -0,0 +1,307 @@
+#!/usr/bin/perl -w
+
+
+package esmith::FormMagick::Panel::groupmembers;
+
+use strict;
+
+use esmith::FormMagick;
+use esmith::ConfigDB;
+use esmith::AccountsDB;
+use File::Basename;
+use Exporter;
+use Carp;
+
+our @ISA = qw(esmith::FormMagick Exporter);
+
+our @EXPORT = qw(
+
+ show_initial
+ genUsers
+ modify_group
+ get_accounts_prop
+ get_description
+ get_cgi_param
+);
+
+our $accounts = esmith::AccountsDB->open() || die "Couldn't open accounts";
+our $db = esmith::ConfigDB->open || die "Couldn't open config db";
+
+our $VERSION = sprintf '%d.%03d', q$Revision: 1.38 $ =~ /: (\d+).(\d+)/;
+
+
+
+=pod
+
+=head1 NAME
+
+esmith::FormMagick::Panels::groups - useful panel functions
+
+=head1 SYNOPSIS
+
+ use esmith::FormMagick::Panels::groups;
+
+ my $panel = esmith::FormMagick::Panel::groups->new();
+ $panel->display();
+
+=head1 DESCRIPTION
+
+=cut
+
+
+=head2 new();
+
+Exactly as for esmith::FormMagick
+
+=begin testing
+
+$ENV{ESMITH_ACCOUNT_DB} = "10e-smith-base/accounts.conf";
+$ENV{ESMITH_CONFIG_DB} = "10e-smith-base/configuration.conf";
+
+use_ok('esmith::FormMagick::Panel::groups');
+use vars qw($panel);
+ok($panel = esmith::FormMagick::Panel::groups->new(), "Create panel object");
+isa_ok($panel, 'esmith::FormMagick::Panel::groups');
+
+=end testing
+
+=cut
+
+sub new {
+ shift;
+ my $self = esmith::FormMagick->new();
+ $self->{calling_package} = (caller)[0];
+ bless $self;
+ return $self;
+}
+
+
+=head1 ACCESSORS
+
+=head2 get_cgi_param FM FIELD
+
+Returns the named CGI parameter as a string
+
+=cut
+
+sub get_cgi_param {
+ my $fm = shift;
+ my $param = shift;
+
+ return ( $fm->{'cgi'}->param($param) );
+}
+
+
+=head2 get_accounts_prop ITEM PROP
+
+A simple accessor for esmith::ConfigDB::Record::prop
+
+=cut
+
+sub get_accounts_prop {
+ my $fm = shift;
+ my $item = shift;
+ my $prop = shift;
+
+ my $record = $accounts->get($item);
+
+ if ($record) {
+ return $record->prop($prop);
+ }
+ else {
+ return '';
+ }
+
+}
+
+
+=head2 get_description
+
+Get the Description for the group named in the CGI argument "GroupName"
+
+=cut
+
+sub get_description {
+ my $fm = shift;
+ my $group = $fm->{'cgi'}->param('groupName');
+ return ( $fm->get_accounts_prop( $group, 'Description' ) );
+}
+
+=head1 ACTION
+
+
+=head2 show_initial FM
+
+Show the "start" page for this panel
+
+=cut
+
+sub show_initial () {
+ my $fm = shift;
+ my $q = $fm->{cgi};
+
+ my $UserName = $ENV{'REMOTE_USER'} ||'';
+ my $record = $accounts->get($UserName);
+ my $dg=$record->prop('delegatedGroups')||'';
+ $dg =~ s/ //g;
+ my @g = split(/,/, $dg);
+ my %delegatedGroups;
+ foreach my $k ( @g )
+ {
+ $delegatedGroups{$k}=1;
+ }
+
+ $q->Delete('groupName');
+
+ my $params = $fm->build_cgi_params();
+
+ my $numGroups = $accounts->groups;
+
+ if ( $numGroups == 0 ) {
+ print $q->Tr($q->td(
+ '' . $fm->localise("NO_GROUPS") . '
'));
+
+ }
+ else {
+ print ""
+ . $fm->localise("GROUP")
+ . " | "
+ . $fm->localise('DESCRIPTION')
+ . " | "
+ . $fm->localise('ACTION')
+ . " |
";
+ foreach my $group ( $accounts->groups() ) {
+ next if %delegatedGroups and not $delegatedGroups{$group->key};
+ $params = $fm->build_cgi_params( $group->key );
+ print "" . ""
+ . $group->key . " | " . ""
+ . $group->prop('Description') . " | "
+ . ""
+ . $fm->localise("MODIFY") . " | "
+ . "
";
+
+ }
+ print $q->end_table,"\n";
+ }
+ return;
+}
+
+
+=head2 modify_group FM
+
+Modify a group's description and membership roster
+
+=cut
+
+sub modify_group {
+
+ my $fm = shift;
+ my $q = $fm->{'cgi'};
+
+ my @members = $q->param('groupMembers');
+ my $groupName = $q->param('groupName');
+
+ $accounts->get($groupName)->set_prop( 'Members', join ( ',', @members ) );
+
+ # Untaint groupName before use in system()
+ ($groupName) = ($groupName =~ /^([a-z][\-\_\.a-z0-9]*)$/);
+ $fm->clear_params();
+ return system("/sbin/e-smith/signal-event", "group-modify", "$groupName") ?
+ $fm->error('MODIFY_ERROR') : $fm->success('MODIFIED_GROUP');
+}
+
+
+=head1 UTILITY FUNCTIONS
+
+=head2 build_cgi_params()
+
+Builds a CGI query string, using various sensible
+defaults and esmith::FormMagick's props_to_query_string() method.
+
+=cut
+
+sub build_cgi_params {
+ my ( $fm, $group ) = @_;
+
+ my %props = (
+ page => 0,
+ page_stack => "",
+ ".id" => $fm->{cgi}->param('.id') || "",
+ groupName => $group,
+ );
+
+ return $fm->props_to_query_string( \%props );
+}
+
+=head2 genUsers MEMBERS
+
+Takes a comma delimited list of users and returns a string of
+html checkboxes for all system users with the members of the group
+in $fm->{cgi}->parm('groupName')checked.
+
+=cut
+
+sub genUsers () {
+ my $fm = shift;
+ my $members = "";
+ my $group = $fm->{'cgi'}->param('groupName');
+
+ if ($accounts->get($group)) {
+ $members = $accounts->get($group)->prop('Members');
+ }
+ my %members;
+ foreach my $member ( split ( /,/, $members ) ) {
+ $members{$member} = 1;
+ }
+ my @users = sort { $a->key() cmp $b->key() } $accounts->users();
+
+ # include Administrator at beginning of list
+
+ my $out = "\n "
+ . $fm->localise('GROUP_MEMBERS')
+ . " | \n \n"
+ . " \n | \n
\n";
+ return $out;
+}
+
+=head2 clear_params
+
+This method clears-out the parameters used in form submission so that they are
+not inadvertenly picked-up where they should not be.
+
+=cut
+
+sub clear_params
+{
+ my $self = shift;
+ my $q = $self->{cgi};
+
+ $q->delete('groupMembers');
+ $q->delete('groupDesc');
+ $q->delete('groupName');
+}