4 my @groups = sort { lc $a->{name} cmp lc $b->{name} } values %{ $auth->read_groups() };
7 print $form->parse_html_template("admin/edit_groups", { 'GROUPS' => \@groups,
8 'num_groups' => scalar @groups });
10 $lxdebug->leave_sub();
14 $lxdebug->enter_sub();
16 delete $form->{group_id};
17 $form->{message} = $locale->text("The group has been added.");
21 $lxdebug->leave_sub();
25 $lxdebug->enter_sub();
27 $form->isblank('name', $locale->text('The group name is missing.'));
29 my $groups = $auth->read_groups();
31 foreach my $group (values %{$groups}) {
32 if (($form->{group_id} != $group->{id})
33 && ($form->{name} eq $group->{name})) {
34 $form->show_generic_error($locale->text("A group with that name does already exist."));
40 if ($form->{group_id} && $groups->{$form->{group_id}}) {
41 $group = $groups->{$form->{group_id}};
47 $group->{name} = $form->{name};
48 $group->{description} = $form->{description};
49 $group->{rights} = {};
51 map { $group->{rights}->{$_} = $form->{"${_}_granted"} ? 1 : 0 } SL::Auth::all_rights();
53 my $is_new = !$form->{group_id};
55 $auth->save_group($group);
57 $form->{message} ||= $locale->text('The group has been saved.');
66 $lxdebug->leave_sub();
70 $lxdebug->enter_sub();
72 my $groups = $auth->read_groups();
74 if (!$form->{group_id} || !$groups->{$form->{group_id}}) {
75 $form->show_generic_error($locale->text("No group has been selected, or the group does not exist anymore."));
78 $group = $groups->{$form->{group_id}};
80 my %all_users = $auth->read_all_users();
81 my %users_by_id = map { $_->{id} => $_ } values %all_users;
83 my @members = sort { lc $a->{login} cmp lc $b->{login} } @users_by_id{ @{ $group->{members} } };
85 my %grouped = map { $_ => 1 } @{ $group->{members} };
86 my @non_members = sort { lc $a->{login} cmp lc $b->{login} } grep { !$grouped{$_->{id}} } values %all_users;
90 "description" => $_->[1],
91 "is_section" => '--' eq substr($_->[0], 0, 2),
92 "granted" => defined $group->{rights}->{$_->[0]} ? $group->{rights}->{$_->[0]} : 0,
94 } SL::Auth::all_rights_full();
97 print $form->parse_html_template("admin/edit_group", { "USERS_IN_GROUP" => \@members,
98 "USERS_NOT_IN_GROUP" => \@non_members,
100 "name" => $group->{name},
101 "description" => $group->{description} });
103 $lxdebug->leave_sub();
107 $lxdebug->enter_sub();
109 my $groups = $auth->read_groups();
111 if (!$form->{group_id} || !$groups->{$form->{group_id}}) {
112 $form->show_generic_error($locale->text("No group has been selected, or the group does not exist anymore."));
115 if ($form->{confirmed}) {
116 $auth->delete_group($form->{"group_id"});
118 $form->{message} = $locale->text("The group has been deleted.");
124 print $form->parse_html_template("admin/delete_group_confirm", $groups->{$form->{group_id}});
127 $lxdebug->leave_sub();
131 $lxdebug->enter_sub();
133 $form->isblank('user_id_not_in_group', $locale->text('No user has been selected.'));
135 my $groups = $auth->read_groups();
137 if (!$form->{group_id} || !$groups->{$form->{group_id}}) {
138 $form->show_generic_error($locale->text('No group has been selected, or the group does not exist anymore.'));
141 $group = $groups->{$form->{group_id}};
142 push @{ $group->{members} }, $form->{user_id_not_in_group};
144 $auth->save_group($group);
146 $form->{message} = $locale->text('The user has been added to this group.');
149 $lxdebug->leave_sub();
152 sub remove_from_group {
153 $lxdebug->enter_sub();
155 $form->isblank('user_id_in_group', $locale->text('No user has been selected.'));
157 my $groups = $auth->read_groups();
159 if (!$form->{group_id} || !$groups->{$form->{group_id}}) {
160 $form->show_generic_error($locale->text('No group has been selected, or the group does not exist anymore.'));
163 $group = $groups->{$form->{group_id}};
164 $group->{members} = [ grep { $_ ne $form->{user_id_in_group} } @{ $group->{members} } ];
166 $auth->save_group($group);
168 $form->{message} = $locale->text('The user has been removed from this group.');
171 $lxdebug->leave_sub();
174 sub edit_group_membership {
175 $lxdebug->enter_sub();
177 my %users = $auth->read_all_users();
178 my $groups = $auth->read_groups();
179 $groups = [ sort { lc $a->{name} cmp lc $b->{name} } values %{ $groups } ];
181 my @headings = map { { 'title' => $_ } } map { $_->{name} } @{ $groups };
183 foreach my $group (@{ $groups }) {
184 $group->{members_h} = { map { $_ => 1 } @{ $group->{members} } };
189 foreach my $user (sort { lc $a->{login} cmp lc $b->{login} } values %users) {
192 'login' => $user->{login},
193 'name' => $user->{name},
194 'repeat_headings' => (scalar(@rows) % 20) == 0,
198 foreach my $group (@{ $groups }) {
199 push @{ $row->{GROUPS} }, {
200 'id' => $group->{id},
201 'is_member' => $group->{members_h}->{$user->{id}},
208 $form->{title} = $locale->text('Edit group membership');
210 print $form->parse_html_template('admin/edit_group_membership', { 'HEADINGS' => \@headings, 'USERS' => \@rows });
212 $lxdebug->leave_sub();
215 sub save_group_membership {
216 $lxdebug->enter_sub();
218 my %users = $auth->read_all_users();
219 my $groups = $auth->read_groups();
221 foreach my $group (values %{ $groups }) {
222 $group->{members} = [ ];
224 foreach my $user (values %users) {
225 push @{ $group->{members} }, $user->{id} if ($form->{"u_$user->{id}_g_$group->{id}"});
228 $auth->save_group($group);
231 $form->{message} = $locale->text('The group memberships have been saved.');
235 $lxdebug->leave_sub();