X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fadmin_groups.pl;h=069fa69bbebb0227c9ef591265ed99a033d16b38;hb=2e8ce008611246347f9682d81e8fabf015765bf5;hp=35ecc8c08349441360f98ef276761bd8027b7cdf;hpb=8c7e44938a661e035f62840e1e177353240ace5d;p=kivitendo-erp.git diff --git a/bin/mozilla/admin_groups.pl b/bin/mozilla/admin_groups.pl index 35ecc8c08..069fa69bb 100644 --- a/bin/mozilla/admin_groups.pl +++ b/bin/mozilla/admin_groups.pl @@ -1,32 +1,78 @@ +#===================================================================== +# LX-Office ERP +# Copyright (C) 2004 +# Based on SQL-Ledger Version 2.1.9 +# Web http://www.lx-office.org +# +#===================================================================== +# SQL-Ledger Accounting +# Copyright (c) 2002 +# +# Author: Moritz Bunkus +# Email: mbunkus@linet-services.de +# Web: www.linet-services.de +# +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +#====================================================================== +# +# group administration module +# add/edit/delete user groups +# +#====================================================================== + +use List::MoreUtils qw(uniq); + +use strict; + sub edit_groups { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; - my @groups = sort { lc $a->{name} cmp lc $b->{name} } values %{ $auth->read_groups() }; + my @groups = sort { lc $a->{name} cmp lc $b->{name} } values %{ $main::auth->read_groups() }; $form->header(); print $form->parse_html_template("admin/edit_groups", { 'GROUPS' => \@groups, 'num_groups' => scalar @groups }); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } sub add_group { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my $locale = $main::locale; delete $form->{group_id}; $form->{message} = $locale->text("The group has been added."); save_group(); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } sub save_group { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my $locale = $main::locale; $form->isblank('name', $locale->text('The group name is missing.')); - my $groups = $auth->read_groups(); + my $groups = $main::auth->read_groups(); foreach my $group (values %{$groups}) { if (($form->{group_id} != $group->{id}) @@ -52,7 +98,7 @@ sub save_group { my $is_new = !$form->{group_id}; - $auth->save_group($group); + $main::auth->save_group($group); $form->{message} ||= $locale->text('The group has been saved.'); @@ -63,26 +109,29 @@ sub save_group { edit_group(); } - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } sub edit_group { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my $locale = $main::locale; - my $groups = $auth->read_groups(); + my $groups = $main::auth->read_groups(); if (!$form->{group_id} || !$groups->{$form->{group_id}}) { $form->show_generic_error($locale->text("No group has been selected, or the group does not exist anymore.")); } - $group = $groups->{$form->{group_id}}; + my $group = $groups->{$form->{group_id}}; - my %all_users = $auth->read_all_users(); + my %all_users = $main::auth->read_all_users(); my %users_by_id = map { $_->{id} => $_ } values %all_users; - my @members = sort { lc $a->{login} cmp lc $b->{login} } @users_by_id{ @{ $group->{members} } }; + my @members = uniq sort { lc $a->{login} cmp lc $b->{login} } @users_by_id{ @{ $group->{members} } }; - my %grouped = map { $_ => 1 } @{ $group->{members} }; + my %grouped = map { $_ => 1 } uniq @{ $group->{members} }; my @non_members = sort { lc $a->{login} cmp lc $b->{login} } grep { !$grouped{$_->{id}} } values %all_users; my @rights = map { @@ -100,20 +149,23 @@ sub edit_group { "name" => $group->{name}, "description" => $group->{description} }); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } sub delete_group { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); - my $groups = $auth->read_groups(); + my $form = $main::form; + my $locale = $main::locale; + + my $groups = $main::auth->read_groups(); if (!$form->{group_id} || !$groups->{$form->{group_id}}) { $form->show_generic_error($locale->text("No group has been selected, or the group does not exist anymore.")); } if ($form->{confirmed}) { - $auth->delete_group($form->{"group_id"}); + $main::auth->delete_group($form->{"group_id"}); $form->{message} = $locale->text("The group has been deleted."); edit_groups(); @@ -124,58 +176,67 @@ sub delete_group { print $form->parse_html_template("admin/delete_group_confirm", $groups->{$form->{group_id}}); } - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } sub add_to_group { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my $locale = $main::locale; $form->isblank('user_id_not_in_group', $locale->text('No user has been selected.')); - my $groups = $auth->read_groups(); + my $groups = $main::auth->read_groups(); if (!$form->{group_id} || !$groups->{$form->{group_id}}) { $form->show_generic_error($locale->text('No group has been selected, or the group does not exist anymore.')); } - $group = $groups->{$form->{group_id}}; - push @{ $group->{members} }, $form->{user_id_not_in_group}; + my $group = $groups->{$form->{group_id}}; + $group->{members} = [ uniq @{ $group->{members} }, $form->{user_id_not_in_group} ]; - $auth->save_group($group); + $main::auth->save_group($group); $form->{message} = $locale->text('The user has been added to this group.'); edit_group(); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } sub remove_from_group { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my $locale = $main::locale; $form->isblank('user_id_in_group', $locale->text('No user has been selected.')); - my $groups = $auth->read_groups(); + my $groups = $main::auth->read_groups(); if (!$form->{group_id} || !$groups->{$form->{group_id}}) { $form->show_generic_error($locale->text('No group has been selected, or the group does not exist anymore.')); } - $group = $groups->{$form->{group_id}}; - $group->{members} = [ grep { $_ ne $form->{user_id_in_group} } @{ $group->{members} } ]; + my $group = $groups->{$form->{group_id}}; + $group->{members} = [ uniq grep { $_ ne $form->{user_id_in_group} } @{ $group->{members} } ]; - $auth->save_group($group); + $main::auth->save_group($group); $form->{message} = $locale->text('The user has been removed from this group.'); edit_group(); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } sub edit_group_membership { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); - my %users = $auth->read_all_users(); - my $groups = $auth->read_groups(); + my $form = $main::form; + my $locale = $main::locale; + + my %users = $main::auth->read_all_users(); + my $groups = $main::auth->read_groups(); $groups = [ sort { lc $a->{name} cmp lc $b->{name} } values %{ $groups } ]; my @headings = map { { 'title' => $_ } } map { $_->{name} } @{ $groups }; @@ -209,14 +270,17 @@ sub edit_group_membership { $form->header(); print $form->parse_html_template('admin/edit_group_membership', { 'HEADINGS' => \@headings, 'USERS' => \@rows }); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } sub save_group_membership { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my $locale = $main::locale; - my %users = $auth->read_all_users(); - my $groups = $auth->read_groups(); + my %users = $main::auth->read_all_users(); + my $groups = $main::auth->read_groups(); foreach my $group (values %{ $groups }) { $group->{members} = [ ]; @@ -225,14 +289,14 @@ sub save_group_membership { push @{ $group->{members} }, $user->{id} if ($form->{"u_$user->{id}_g_$group->{id}"}); } - $auth->save_group($group); + $main::auth->save_group($group); } $form->{message} = $locale->text('The group memberships have been saved.'); edit_groups(); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } 1;