Bug 21549: Use filter_by_last_update from filter_by_dateexpiry
To not reengineer the patch this patch does not remove the new subroutine but make it use the logic from Koha::Objects->filter_by_last_update It also adds a new parameter "days_inclusive" Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
parent
1f0effd9a0
commit
b4ad6987f7
|
|
@ -257,7 +257,7 @@ sub update {
|
|||
|
||||
my $filtered_objects = $objects->filter_by_last_update
|
||||
|
||||
days exclusive
|
||||
days exclusive by default (will be inclusive if days_inclusive is passed and set)
|
||||
from inclusive
|
||||
to inclusive
|
||||
|
||||
|
|
@ -266,6 +266,7 @@ to inclusive
|
|||
sub filter_by_last_update {
|
||||
my ( $self, $params ) = @_;
|
||||
my $timestamp_column_name = $params->{timestamp_column_name} || 'timestamp';
|
||||
my $days_inclusive = $params->{days_inclusive} || 0;
|
||||
my $conditions;
|
||||
Koha::Exceptions::MissingParameter->throw(
|
||||
"Missing mandatory parameter: days or from or to")
|
||||
|
|
@ -275,7 +276,9 @@ sub filter_by_last_update {
|
|||
|
||||
my $dtf = Koha::Database->new->schema->storage->datetime_parser;
|
||||
if ( exists $params->{days} ) {
|
||||
$conditions->{'<'} = $dtf->format_date( dt_from_string->subtract( days => $params->{days} ) );
|
||||
my $dt = Koha::DateUtils::dt_from_string();
|
||||
my $operator = $days_inclusive ? '<=' : '<';
|
||||
$conditions->{$operator} = $dtf->format_date( $dt->subtract( days => $params->{days} ) );
|
||||
}
|
||||
if ( exists $params->{from} ) {
|
||||
my $from = ref($params->{from}) ? $params->{from} : dt_from_string($params->{from});
|
||||
|
|
|
|||
|
|
@ -243,12 +243,14 @@ sub delete {
|
|||
|
||||
sub filter_by_dateexpiry {
|
||||
my ( $class, $params ) = @_;
|
||||
my $days = $params->{days} || 0;
|
||||
my $parser = Koha::Database->new->schema->storage->datetime_parser;
|
||||
my $dt = dt_from_string()->subtract( days => $days );
|
||||
return $class->search({
|
||||
dateexpiry => { '<=' => $parser->format_datetime($dt) },
|
||||
});
|
||||
|
||||
return $class->filter_by_last_update(
|
||||
{
|
||||
timestamp_column_name => 'dateexpiry',
|
||||
days => $params->{days} || 0,
|
||||
days_inclusive => 1,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
=head3 search_unsubscribed
|
||||
|
|
|
|||
|
|
@ -1101,14 +1101,26 @@ subtest "filter_by_last_update" => sub {
|
|||
{ timestamp_column_name => 'updated_on', days => 2 } )->count;
|
||||
is( $count, 3, '3 patrons have been updated before the last 2 days (exclusive)' );
|
||||
|
||||
$count = $patrons->filter_by_last_update(
|
||||
{ timestamp_column_name => 'updated_on', days => 2, days_inclusive => 1 } )->count;
|
||||
is( $count, 4, '4 patrons have been updated before the last 2 days (inclusive)' );
|
||||
|
||||
$count = $patrons->filter_by_last_update(
|
||||
{ timestamp_column_name => 'updated_on', days => 1 } )->count;
|
||||
is( $count, 4, '4 patrons have been updated before yesterday (exclusive)' );
|
||||
|
||||
$count = $patrons->filter_by_last_update(
|
||||
{ timestamp_column_name => 'updated_on', days => 1, days_inclusive => 1 } )->count;
|
||||
is( $count, 5, '5 patrons have been updated before yesterday (inclusive)' );
|
||||
|
||||
$count = $patrons->filter_by_last_update(
|
||||
{ timestamp_column_name => 'updated_on', days => 0 } )->count;
|
||||
is( $count, 5, '5 patrons have been updated before today (exclusive)' );
|
||||
|
||||
$count = $patrons->filter_by_last_update(
|
||||
{ timestamp_column_name => 'updated_on', days => 0, days_inclusive => 1 } )->count;
|
||||
is( $count, 6, '6 patrons have been updated before today (inclusive)' );
|
||||
|
||||
$count = $patrons->filter_by_last_update(
|
||||
{ timestamp_column_name => 'updated_on', from => $now } )->count;
|
||||
is( $count, 1, '1 patron has been updated "from today" (inclusive)' );
|
||||
|
|
|
|||
Loading…
Reference in New Issue