|
Lines 10-15
use CGI qw ( -utf8 );
Link Here
|
| 10 |
use C4::Output qw( output_and_exit_if_error output_and_exit output_html_with_http_headers ); |
10 |
use C4::Output qw( output_and_exit_if_error output_and_exit output_html_with_http_headers ); |
| 11 |
use C4::Auth qw( get_template_and_user get_all_subpermissions get_user_subpermissions ); |
11 |
use C4::Auth qw( get_template_and_user get_all_subpermissions get_user_subpermissions ); |
| 12 |
use C4::Context; |
12 |
use C4::Context; |
|
|
13 |
use C4::Log qw( logaction ); |
| 13 |
|
14 |
|
| 14 |
use Koha::Patron::Categories; |
15 |
use Koha::Patron::Categories; |
| 15 |
use Koha::Patrons; |
16 |
use Koha::Patrons; |
|
Lines 69-84
if ( $op eq 'cud-newflags' ) {
Link Here
|
| 69 |
|
70 |
|
| 70 |
# construct flags |
71 |
# construct flags |
| 71 |
my $module_flags = 0; |
72 |
my $module_flags = 0; |
| 72 |
my $sth = $dbh->prepare("SELECT bit,flag FROM userflags ORDER BY bit"); |
73 |
my $sth = $dbh->prepare("SELECT bit,flag,flagdesc FROM userflags ORDER BY bit"); |
| 73 |
$sth->execute(); |
74 |
$sth->execute(); |
| 74 |
while ( my ( $bit, $flag ) = $sth->fetchrow_array ) { |
75 |
my %userflags; |
|
|
76 |
while ( my ( $bit, $flag, $flagdesc ) = $sth->fetchrow_array ) { |
| 75 |
if ( exists $all_module_perms{$flag} ) { |
77 |
if ( exists $all_module_perms{$flag} ) { |
| 76 |
$module_flags += 2**$bit; |
78 |
$module_flags += 2**$bit; |
| 77 |
} |
79 |
} |
|
|
80 |
$userflags{$bit} = [ $flag, $flagdesc ]; |
| 78 |
} |
81 |
} |
| 79 |
|
82 |
|
| 80 |
$sth = $dbh->prepare("UPDATE borrowers SET flags=? WHERE borrowernumber=?"); |
83 |
$sth = $dbh->prepare("UPDATE borrowers SET flags=? WHERE borrowernumber=?"); |
| 81 |
my $old_flags = $patron->flags // 0; |
84 |
my $old_flags = $patron->flags // 0; |
|
|
85 |
my %permissions_before = get_permissions( \%userflags, $old_flags ); |
| 82 |
if ( ( $old_flags == 1 || $module_flags == 1 ) |
86 |
if ( ( $old_flags == 1 || $module_flags == 1 ) |
| 83 |
&& $old_flags != $module_flags ) |
87 |
&& $old_flags != $module_flags ) |
| 84 |
{ |
88 |
{ |
|
Lines 105-110
if ( $op eq 'cud-newflags' ) {
Link Here
|
| 105 |
} |
109 |
} |
| 106 |
} |
110 |
} |
| 107 |
|
111 |
|
|
|
112 |
my %permissions_after = get_permissions( \%userflags, $module_flags ); |
| 113 |
logaction( 'MEMBERS', 'MODIFY', $member, \%permissions_after, undef, \%permissions_before ); |
| 108 |
print $input->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=$member"); |
114 |
print $input->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=$member"); |
| 109 |
} else { |
115 |
} else { |
| 110 |
|
116 |
|
|
Lines 200-202
if ( $op eq 'cud-newflags' ) {
Link Here
|
| 200 |
output_html_with_http_headers $input, $cookie, $template->output; |
206 |
output_html_with_http_headers $input, $cookie, $template->output; |
| 201 |
|
207 |
|
| 202 |
} |
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 |
} |