Completed
Push — master ( 2855c4...4fc9ff )
by Samuel
02:27
created

Frequency::convertToDateIntervalFormat()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 4
ccs 1
cts 1
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 0
crap 1
1
<?php
2
3
namespace Recurrence;
4
5
/**
6
 * Class Frequency
7
 * @package Recurrence
8
 */
9
class Frequency
10
{
11
    const FREQUENCY_YEARLY   = 'YEARLY';
12
    const FREQUENCY_MONTHLY  = 'MONTHLY';
13
    const FREQUENCY_WEEKLY   = 'WEEKLY';
14
    const FREQUENCY_DAILY    = 'DAILY';
15
    const FREQUENCY_HOURLY   = 'HOURLY';
16
    const FREQUENCY_MINUTELY = 'MINUTELY';
17
    const FREQUENCY_SECONDLY = 'SECONDLY';
18
19
    const DATEINTERVAL_YEARLY   = 'P1Y';
20
    const DATEINTERVAL_MONTHLY  = 'P1M';
21
    const DATEINTERVAL_WEEKLY   = 'P1W';
22
    const DATEINTERVAL_DAILY    = 'P1D';
23
    const DATEINTERVAL_HOURLY   = 'PT1H';
24
    const DATEINTERVAL_MINUTELY = 'PT1M';
25
    const DATEINTERVAL_SECONDLY = 'PT1S';
26
27
    /**
28
     * @var array
29
     */
30
    private $frequencies = [
31
        self::DATEINTERVAL_YEARLY   => self::FREQUENCY_YEARLY,
32
        self::DATEINTERVAL_MONTHLY  => self::FREQUENCY_MONTHLY,
33
        self::DATEINTERVAL_WEEKLY   => self::FREQUENCY_WEEKLY,
34
        self::DATEINTERVAL_DAILY    => self::FREQUENCY_DAILY,
35
        self::DATEINTERVAL_HOURLY   => self::FREQUENCY_HOURLY,
36
        self::DATEINTERVAL_MINUTELY => self::FREQUENCY_MINUTELY,
37
        self::DATEINTERVAL_SECONDLY => self::FREQUENCY_SECONDLY,
38
    ];
39
40
    /**
41
     * @var string
42
     */
43
    private $frequencyName;
44
45
    /**
46
     * @param string $frequencyName
47
     */
48
    public function __construct($frequencyName)
49
    {
50 1
        if (!in_array($frequencyName, $this->frequencies)) {
51 1
            throw new \InvalidArgumentException(sprintf('Invalid frequency name. Supported values are : %s', implode(', ', $this->frequencies)));
52
        }
53
54 1
        $this->frequencyName = $frequencyName;
55 1
    }
56
57
    /**
58
     * @return string
59
     */
60
    public function convertToDateIntervalFormat()
61
    {
62 1
        return array_search($this->frequencyName, $this->frequencies);
63
    }
64
65
    /**
66
     * @return string
67
     */
68
    public function __toString()
69
    {
70 1
        return $this->frequencyName;
71
    }
72
}
73