FiveMinutesCeiling::fuzzy()   A
last analyzed

Complexity

Conditions 5
Paths 8

Size

Total Lines 25
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 14
dl 0
loc 25
rs 9.4888
c 0
b 0
f 0
cc 5
nc 8
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * Copyright Andrea Heigl <[email protected]>
7
 *
8
 * Licenses under the MIT-license. For details see the included file LICENSE.md
9
 */
10
11
namespace Org_Heigl\CaptainHook\Hooks\AddTime\Fuzzier;
12
13
use DateInterval;
14
15
class FiveMinutesCeiling implements Fuzzier
16
{
17
    public function fuzzy(DateInterval $interval): DateInterval
18
    {
19
        $interval = clone $interval;
20
21
        if ($interval->s > 0) {
22
            $interval->s = 0;
23
            $interval->i = $interval->i + 1;
24
        }
25
26
        if ($interval->i === 0) {
27
            return $interval;
28
        }
29
30
        if ($interval->i % 5 === 0) {
31
            return $interval;
32
        }
33
34
        $modulo = ceil($interval->i / 5);
35
        if ($modulo % 12 === 0) {
36
            $interval->h = $interval->h + ceil($modulo / 12);
37
            $modulo = 0;
38
        }
39
        $interval->i = $modulo * 5;
40
41
        return $interval;
42
    }
43
}