|
Lines 70-88
if ( $op eq 'cud-newflags' ) {
Link Here
|
| 70 |
|
70 |
|
| 71 |
# construct flags |
71 |
# construct flags |
| 72 |
my $module_flags = 0; |
72 |
my $module_flags = 0; |
| 73 |
my $sth = $dbh->prepare("SELECT bit,flag,flagdesc FROM userflags ORDER BY bit"); |
73 |
my $sth = $dbh->prepare("SELECT bit,flag FROM userflags ORDER BY bit"); |
| 74 |
$sth->execute(); |
74 |
$sth->execute(); |
| 75 |
my %userflags; |
75 |
while ( my ( $bit, $flag ) = $sth->fetchrow_array ) { |
| 76 |
while ( my ( $bit, $flag, $flagdesc ) = $sth->fetchrow_array ) { |
|
|
| 77 |
if ( exists $all_module_perms{$flag} ) { |
76 |
if ( exists $all_module_perms{$flag} ) { |
| 78 |
$module_flags += 2**$bit; |
77 |
$module_flags += 2**$bit; |
| 79 |
} |
78 |
} |
| 80 |
$userflags{$bit} = [ $flag, $flagdesc ]; |
|
|
| 81 |
} |
79 |
} |
| 82 |
|
80 |
|
|
|
81 |
my %permissions_before = $patron->permissions(); |
| 82 |
|
| 83 |
$sth = $dbh->prepare("UPDATE borrowers SET flags=? WHERE borrowernumber=?"); |
83 |
$sth = $dbh->prepare("UPDATE borrowers SET flags=? WHERE borrowernumber=?"); |
| 84 |
my $old_flags = $patron->flags // 0; |
84 |
my $old_flags = $patron->flags // 0; |
| 85 |
my %permissions_before = get_permissions( \%userflags, $old_flags ); |
|
|
| 86 |
if ( ( $old_flags == 1 || $module_flags == 1 ) |
85 |
if ( ( $old_flags == 1 || $module_flags == 1 ) |
| 87 |
&& $old_flags != $module_flags ) |
86 |
&& $old_flags != $module_flags ) |
| 88 |
{ |
87 |
{ |
|
Lines 109-115
if ( $op eq 'cud-newflags' ) {
Link Here
|
| 109 |
} |
108 |
} |
| 110 |
} |
109 |
} |
| 111 |
|
110 |
|
| 112 |
my %permissions_after = get_permissions( \%userflags, $module_flags ); |
111 |
my %permissions_after = $patron->get_from_storage->permissions(); |
| 113 |
logaction( 'MEMBERS', 'MODIFY', $member, \%permissions_after, undef, \%permissions_before ); |
112 |
logaction( 'MEMBERS', 'MODIFY', $member, \%permissions_after, undef, \%permissions_before ); |
| 114 |
print $input->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=$member"); |
113 |
print $input->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=$member"); |
| 115 |
} else { |
114 |
} else { |
|
Lines 204-241
if ( $op eq 'cud-newflags' ) {
Link Here
|
| 204 |
); |
203 |
); |
| 205 |
|
204 |
|
| 206 |
output_html_with_http_headers $input, $cookie, $template->output; |
205 |
output_html_with_http_headers $input, $cookie, $template->output; |
| 207 |
|
|
|
| 208 |
} |
| 209 |
|
| 210 |
sub get_permissions { |
| 211 |
my ( $userflags, $old_flags ) = @_; |
| 212 |
|
| 213 |
my %active_flag = decode_flags( $userflags, $old_flags ); |
| 214 |
my $user_perms = get_user_subpermissions( $bor->{'userid'} ); |
| 215 |
my %permissions; |
| 216 |
my $dbh = C4::Context->dbh(); |
| 217 |
my $sth = $dbh->prepare("SELECT code, description FROM permissions"); |
| 218 |
$sth->execute(); |
| 219 |
|
| 220 |
while ( my ( $code, $desc ) = $sth->fetchrow_array ) { |
| 221 |
$permissions{$code} = $desc; |
| 222 |
} |
| 223 |
for my $module ( keys %$user_perms ) { |
| 224 |
for my $code ( keys %{ $user_perms->{$module} } ) { |
| 225 |
$active_flag{$code} = $permissions{$code}; |
| 226 |
} |
| 227 |
} |
| 228 |
return %active_flag; |
| 229 |
} |
| 230 |
|
| 231 |
sub decode_flags { |
| 232 |
my ( $userflags, $flags ) = @_; |
| 233 |
my %active_flags; |
| 234 |
foreach my $bit ( keys %$userflags ) { |
| 235 |
if ( $flags & ( 2**$bit ) ) { |
| 236 |
my ( $flag, $desc ) = @{ $userflags->{$bit} }; |
| 237 |
$active_flags{$flag} = $desc; |
| 238 |
} |
| 239 |
} |
| 240 |
return %active_flags; |
| 241 |
} |
206 |
} |