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); | |
| } | |
| } |