|
Lines 375-394
sub store {
Link Here
|
| 375 |
|
375 |
|
| 376 |
# Actionlogs |
376 |
# Actionlogs |
| 377 |
if ( C4::Context->preference("BorrowersLog") || C4::Context->preference("CardnumberLog") ) { |
377 |
if ( C4::Context->preference("BorrowersLog") || C4::Context->preference("CardnumberLog") ) { |
| 378 |
my $from_storage = $self_from_storage->unblessed; |
378 |
my $from_storage = $self_from_storage->_unblessed_for_log; |
| 379 |
my $from_object = $self->unblessed; |
379 |
my $from_object = $self->_unblessed_for_log; |
| 380 |
|
380 |
|
| 381 |
# Object's dateexpiry is a DateTime object which stringifies to iso8601 datetime, |
381 |
my @keys = C4::Context->preference("BorrowersLog") ? keys %{$from_storage} : ('cardnumber'); |
| 382 |
# but the column is only a date so we need to convert the datetime to just a date |
|
|
| 383 |
# to know if it has actually changed. |
| 384 |
$from_object->{dateexpiry} = dt_from_string( $from_object->{dateexpiry} )->ymd |
| 385 |
if $from_object->{dateexpiry}; |
| 386 |
|
| 387 |
my @skip_fields = (qw/lastseen updated_on password/); |
| 388 |
my @keys = C4::Context->preference("BorrowersLog") ? keys %{$from_storage} : ('cardnumber'); |
| 389 |
my $changed; |
382 |
my $changed; |
| 390 |
for my $key (@keys) { |
383 |
for my $key (@keys) { |
| 391 |
next if any { /$key/ } @skip_fields; |
|
|
| 392 |
my $storage_value = $from_storage->{$key} // q{}; |
384 |
my $storage_value = $from_storage->{$key} // q{}; |
| 393 |
my $object_value = $from_object->{$key} // q{}; |
385 |
my $object_value = $from_object->{$key} // q{}; |
| 394 |
if ( ( $storage_value || $object_value ) |
386 |
if ( ( $storage_value || $object_value ) |
|
Lines 399-418
sub store {
Link Here
|
| 399 |
} |
391 |
} |
| 400 |
|
392 |
|
| 401 |
if ( defined($changed) ) { |
393 |
if ( defined($changed) ) { |
| 402 |
my %log_from = map { |
394 |
my %log_from = map { $_ => $from_storage->{$_} } keys %{$changed}; |
| 403 |
my $v = $from_storage->{$_}; |
395 |
my %log_to = map { $_ => $from_object->{$_} } keys %{$changed}; |
| 404 |
$_ => ( blessed($v) ? "$v" : $v ) |
|
|
| 405 |
} grep { |
| 406 |
my $k = $_; |
| 407 |
!any { /$k/ } @skip_fields |
| 408 |
} keys %{$from_storage}; |
| 409 |
my %log_to = map { |
| 410 |
my $v = $from_object->{$_}; |
| 411 |
$_ => ( blessed($v) ? "$v" : $v ) |
| 412 |
} grep { |
| 413 |
my $k = $_; |
| 414 |
!any { /$k/ } @skip_fields |
| 415 |
} keys %{$from_object}; |
| 416 |
|
396 |
|
| 417 |
logaction( "MEMBERS", "MODIFY", $self->borrowernumber, \%log_to, undef, \%log_from ) |
397 |
logaction( "MEMBERS", "MODIFY", $self->borrowernumber, \%log_to, undef, \%log_from ) |
| 418 |
if C4::Context->preference("BorrowersLog"); |
398 |
if C4::Context->preference("BorrowersLog"); |
| 419 |
- |
|
|