View | Details | Raw Unified | Return to bug 15261
Collapse All | Expand All

(-)a/C4/Installer/PerlDependencies.pm (-10 lines)
Lines 782-797 our $PERL_DEPS = { Link Here
782
        'required' => '1',
782
        'required' => '1',
783
        'min_ver'  => '1.10',
783
        'min_ver'  => '1.10',
784
    },
784
    },
785
    'Date::Range' => {
786
        'usage'    => 'Compare date range',
787
        'required' => '1',
788
        'min_ver'  => '1.41',
789
    },
790
    'Date::Simple' => {
791
        'usage'    => 'Works with Date::Range',
792
        'required' => '1',
793
        'min_ver'  => '3.03',
794
    }
795
};
785
};
796
786
797
1;
787
1;
(-)a/Koha/DateUtils.pm (-9 / +28 lines)
Lines 18-25 package Koha::DateUtils; Link Here
18
18
19
use Modern::Perl;
19
use Modern::Perl;
20
use DateTime;
20
use DateTime;
21
use Date::Range;
22
use Date::Simple;
23
use C4::Context;
21
use C4::Context;
24
use Carp;
22
use Carp;
25
23
Lines 309-320 sub format_sqldatetime { Link Here
309
307
310
sub date_ranges_overlap {
308
sub date_ranges_overlap {
311
    my ($start1, $end1, $start2, $end2) = @_;
309
    my ($start1, $end1, $start2, $end2) = @_;
312
310
warn "$start1, $end1, $start2, $end2";
313
    my $range1 = Date::Range->new(Date::Simple->new($start1), Date::Simple->new($end1));
311
#2015-11-25, 2015-11-30, 2015-11-01, 2015-11-20
314
    my $range2 = Date::Range->new(Date::Simple->new($start2), Date::Simple->new($end2));
312
315
313
    $start1 = dt_from_string( $start1, 'iso' );
316
    if ($range1->overlaps($range2)) {
314
    $end1 = dt_from_string( $end1, 'iso' );
317
        return $range1->overlap($range2);
315
    $start2 = dt_from_string( $start2, 'iso' );
316
    $end2 = dt_from_string( $end2, 'iso' );
317
318
    if (
319
        # Start of range 2 is in the range 1.
320
        (
321
            DateTime->compare($start2, $start1) >= 0
322
            && DateTime->compare($start1, $end2) <= 0
323
        )
324
        ||
325
        # End of range 2 is in the range 1.
326
        (
327
            DateTime->compare($start2, $end1) >= 0
328
            && DateTime->compare($end1, $end2) <= 0
329
        )
330
        ||
331
        # Range 2 start before and end after range 1.
332
        (
333
            DateTime->compare($start1, $start2) < 0
334
            && DateTime->compare($end1, $end2) > 0
335
        )
336
    ) {
337
        return 1;
318
    }
338
    }
319
339
320
    return;
340
    return;
321
- 

Return to bug 15261