Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
33.33% |
1 / 3 |
CRAP | |
34.29% |
12 / 35 |
| SimpleWeeks | |
0.00% |
0 / 1 |
|
33.33% |
1 / 3 |
38.38 | |
34.29% |
12 / 35 |
| __construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| fromUnixTime | |
0.00% |
0 / 1 |
3.01 | |
90.91% |
10 / 11 |
|||
| toUnixTime | |
0.00% |
0 / 1 |
42 | |
0.00% |
0 / 22 |
|||
| <?php | |
| namespace Popy\Calendar\Converter\UnixTimeConverter; | |
| use Popy\Calendar\Converter\Conversion; | |
| use Popy\Calendar\Converter\UnixTimeConverterInterface; | |
| use Popy\Calendar\ValueObject\DateSolarRepresentationInterface; | |
| use Popy\Calendar\ValueObject\DateFragmentedRepresentationInterface; | |
| /** | |
| * Simple weeks. | |
| */ | |
| class SimpleWeeks implements UnixTimeConverterInterface | |
| { | |
| /** | |
| * Week length. | |
| * | |
| * @var integer | |
| */ | |
| protected $length; | |
| /** | |
| * Class constructor. | |
| * | |
| * @param integer $length Week length. | |
| */ | |
| public function __construct($length) | |
| { | |
| $this->length = $length; | |
| } | |
| /** | |
| * @inheritDoc | |
| */ | |
| public function fromUnixTime(Conversion $conversion) | |
| { | |
| $input = $conversion->getTo(); | |
| if ( | |
| !$input instanceof DateFragmentedRepresentationInterface | |
| || !$input instanceof DateSolarRepresentationInterface | |
| ) { | |
| return; | |
| } | |
| $dateParts = $input->getDateParts()->withTransversals([ | |
| $input->getYear(), | |
| intval($input->getDayIndex() / $this->length), | |
| $input->getDayIndex() % $this->length | |
| ]); | |
| $conversion->setTo($input->withDateParts($dateParts)); | |
| } | |
| /** | |
| * @inheritDoc | |
| */ | |
| public function toUnixTime(Conversion $conversion) | |
| { | |
| $input = $conversion->getTo(); | |
| if ( | |
| !$input instanceof DateFragmentedRepresentationInterface | |
| || !$input instanceof DateSolarRepresentationInterface | |
| ) { | |
| return; | |
| } | |
| $parts = $input->getDateParts(); | |
| if (null === $input->getYear()) { | |
| $input = $input->withYear( | |
| $parts->getTransversal(0), | |
| $input->isLeapYear() | |
| ); | |
| } | |
| if ( | |
| null === $input->getDayIndex() | |
| && null !== $weekIndex = $parts->getTransversal(1) | |
| ) { | |
| $dayOfWeek = (int)$parts->getTransversal(2); | |
| $input = $input->withDayIndex( | |
| $dayOfWeek + $weekIndex * $this->length, | |
| $input->getEraDayIndex() | |
| ); | |
| } | |
| $conversion->setTo($input); | |
| } | |
| } |