diff -Nur smeserver-vacation-1.1.old/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/uservacations smeserver-vacation-1.1.new/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/uservacations --- smeserver-vacation-1.1.old/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/uservacations 2016-06-21 09:58:59.709887389 +0200 +++ smeserver-vacation-1.1.new/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/uservacations 2016-06-22 01:01:17.588304177 +0200 @@ -91,4 +91,8 @@ ]]> + + NO_USERS_IN_GRANTED_GROUPS + There are no users in the group(s) that you are granted to manage. + diff -Nur smeserver-vacation-1.1.old/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/uservacations.pm smeserver-vacation-1.1.new/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/uservacations.pm --- smeserver-vacation-1.1.old/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/uservacations.pm 2016-06-21 09:58:59.710887388 +0200 +++ smeserver-vacation-1.1.new/root/usr/share/perl5/vendor_perl/esmith/FormMagick/Panel/uservacations.pm 2016-06-22 00:59:15.014349221 +0200 @@ -28,6 +28,8 @@ our $PanelUser = $ENV{'REMOTE_USER'} ||''; $PanelUser = $1 if ($PanelUser =~ /^([a-z][\.\-a-z0-9]*)$/); +our %delegatedVacations; + sub new { shift; my $self = esmith::FormMagick->new(filename => '/etc/e-smith/web/functions/uservacations'); @@ -52,8 +54,30 @@ my $self = shift; my $q = $self->{cgi}; +#We want to retrieve granted group from DB, and retrieve users of groups + my $record = $adb->get($PanelUser); + my $dg=$record->prop('delegatedVacations')||''; + $dg =~ s/ //g; + my @g = split(/,/, $dg); + my @visiblemembers = (); + + foreach my $g (@g) { + my $members = $adb->get_prop("$g",'Members'); + next unless defined $members; + $members =~ s/ //g; + my @members = split(/,/, $members); + push @visiblemembers , @members ; + } + + foreach my $k ( @visiblemembers ) + { + $delegatedVacations{$k}=1; + } + + my @users = $adb->users; return $self->localise("ACCOUNT_USER_NONE") if (@users == 0); + return $self->localise("NO_USERS_IN_GRANTED_GROUPS") if (@visiblemembers == 0 && $dg ne ''); my $vacation_table = { @@ -83,6 +107,7 @@ for my $user (@users) { + next if %delegatedVacations and not $delegatedVacations{$user->key}; # make it clearer which uses have vacation my $EmailVacation = $user->prop('EmailVacation') || ''; my $EmailVacationFrom = $user->prop('EmailVacationFrom') || '';